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"

………….

你可能感兴趣的:(hp_unix)