hp_unix sftp文件传输(采用expect实现sftp自动传输文件)

1、下载TCLExpect源程序

TCL程序下载地址:

http://www.tcl.tk/software/tcltk/download.html

下载的版本为tcl8.5.8

Expect下载的地址为:

http://expect.nist.gov/#unix

下载的版本为expect5.43

2.编译TCLExpect源程序

编译TCL

TCL源程序传输到小型机的某一指定目录($TCLDIR),CD$TCLDIR/unix目录下,给configure文件赋执行权限,运行configure文件,执行完configure后,生成了Makefile文件,输入gmake命令编译TCL

编译Expect

编译expect前首先要修改以下几个地方:

  $TCLDIR /unix目录下的tclUnixPort.h拷贝到$TCLDIR /generic目录下

  $TCLDIR /generic目录,打开tclInt.h,查找typedef int ptrdiff_t;语句,将语句中的int改为long

  /expect-5.43目录,打开exp_inter.c,查找文件中的

re = Tcl_GetRegExpFromObj(NULL, km->keys,

TCL_REG_ADVANCED|TCL_REG_BOSONLY|TCL_REG_CANMATCH);

并其修改为(删除|TCL_REG_BOSONLY

re = Tcl_GetRegExpFromObj(NULL, km->keys,

TCL_REG_ADVANCED|TCL_REG_CANMATCH);

 

将下面语句中的“|TCL_REG_BOSONLY”删除

if (!(Tcl_GetRegExpFromObj(interp, *objv,

                            TCL_REG_ADVANCED|TCL_REG_BOSONLY))) {

                        return TCL_ERROR;

                    }

以上修改完成后,将Expect原程序传输到小型机的某一指定目录($EXPECTDIR),给configure文件赋执行权限,运行configure文件,执行完configure后,生成了Makefile文件,输入gmake命令编译Expect

3、安装TCLExpect

安装TCL

进入root用户,CD$TCLDIR/unix目录,输入gmake – install完成TCL的安装

安装Expect

TCL安装完成后,还是在root用户下,CD$EXPECTDIR目录,输入gmake – install完成Expect的安装。

注意:安装时如果提示gmake not fund 可能是root用户的.profile文件中的PATH变量没有包含gmake所在的路径,将其路径/usr/local/bin加到PATH后即可。

 

验证安装结果:

1、  输入man tclsh,如果正常出现tclsh介绍,则安装tcl成功。

2、  输入expect,如果出现expect1.1>,则安装expect成功。

 

4、编写脚本实现sftp自动传输文件

Expect脚本get_file.sh:

 

#!/usr/local/bin/expect-f

set host[lindex $argv 0]

set user[lindex $argv 1]

set pass[lindex $argv 2]

setdatapath [lindex $argv 3]

setfilename [lindex $argv 4]

set destdir[lindex $argv 5]

spawn sftp$user@$host

expect"Password:"

send"$pass\r"

expect"sftp>"

send"lcd $destdir\r"

send"cd $datapath\r"

send"get $filename\r"

send"quit\r"

interact

exit

example

shell脚本调用expect脚本实现sftp自动传输文件:

……………

./get_file.sh

…………..

get_file.sh "127.0.0.1" "bizm" "bizm""./b_bizbu/bin" "trade20100304.dat"

………….

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Java实现SFTP文件传输,可以使用JSch库。以下是一个简单的示例代码,演示如何使用JSch实现SFTP上传文件到资源服务器: ```java import com.jcraft.jsch.*; public class SFTPUploader { public static void main(String[] args) { String host = "sftp.example.com"; String username = "your-username"; String password = "your-password"; int port = 22; String localFilePath = "/path/to/local/file.txt"; String remoteFilePath = "/path/to/remote/file.txt"; JSch jsch = new JSch(); Session session = null; try { session = jsch.getSession(username, host, port); session.setConfig("StrictHostKeyChecking", "no"); session.setPassword(password); session.connect(); ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp"); channelSftp.connect(); channelSftp.put(localFilePath, remoteFilePath); channelSftp.disconnect(); } catch (JSchException | SftpException e) { e.printStackTrace(); } finally { if (session != null) { session.disconnect(); } } } } ``` 在这个示例代码中,`host`是资源服务器的主机名,`username`和`password`是SFTP登录凭据,`port`是SFTP端口,默认为22。`localFilePath`是本地文件路径,`remoteFilePath`是远程文件路径。 `JSch`实例用于创建SFTP会话,`Session`实例用于连接到资源服务器。在此示例代码中,我们使用`StrictHostKeyChecking`配置来禁用主机密钥检查。接下来,我们打开一个SFTP通道,并将本地文件上传到远程服务器。 请注意,如果您需要进行多个文件传输,则应该重用单个`Session`和`ChannelSftp`实例,而不是每次传输都打开和关闭新的会话和通道。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值