传输功能使用scp,自动回复yes和填写密码使用except脚本;需要自行百度安装,先安装tcl语言环境,再安装except。
我写了一个脚本一键安装如下(需要提前下载两个安装包并放到同一个目录):
# !bin/bash
tar -zxvf tcl8.5.18-src.tar.gz
cd ./tcl8.5.18/unix/
pwd
./configure
make
make install
cp tclUnixPort.h ../generic
cd ..
cd ..
tar -zxvf expect5.45.tar.gz
cd ./expect5.45
pwd
./configure --with-tclinclude=/home/shaohong/tcl8.5.18/generic/ --with-tclconfig=/usr/local/lib/
make
make install
安装成功后命令行键入except可以显示:
except1.1>
接下来写shell脚本,将远程ip地址,账号,密码,传输文件名,远程目录。写入配置文件.ini:
格式如下
192.168.1.168 root 654321 game1000/file1 ./game1001/file1
实现脚本except_scp如下:
#!/usr/local/bin/expect
set timeout -1
set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2