需要先安装expect工具和tcl。(发送方有安装就行,接收方可以没有安装)
yum安装
yum install expect
yum install expect-devel
yum install tcl
如此之后,就可以正常使用expect tcl 了
另外安装expect工具的方法
rpm -qa expect #检查是否安装
yum install expect -y #执行安装命令
rpm -qa expect #再次检查是否安装
expect-5.44----就说明安装成功了
不需要读入参数的版本,路径写死
运行./test.sh,需要先赋予权限 chmod u+x test.sh
#!/usr/bin/expect
set timeout 30
#fname=2017-12-01.tgz
#expect设置变量用set参数
set fname a.txt
#在expect环境下执行scp命令用spawn命令
spawn scp -l 22 /usr/local/${fname} root1@192.168.179.131:/home/root1
#这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回
expect "password"
#类似交互动作,输入密码。注意 123456 是我的密码,最后别忘了加 \r
send "123456\r"
#执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。
interact
读入文件路径参数的版本,新建script.exp
代码如下
#!/usr/bin/expect
set timeout 30
set fname [lindex $argv 0]
#fname=2017-12-01.tgz
#expect设置变量用set参数
#在expect环境下执行scp命令用spawn命令
spawn scp -l 22 /usr/local/${fname} root1@192.168.179.131:/home/root1
#这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回
expect "password"
#类似交互动作,输入密码。注意 123456 是我的密码,最后别忘了加 \r
send "123456\r"
#执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。
interact
访问方式:
./script.exp a.txt
或者
expect script.exp a.txt(建议)
linux中的代码复制
windows->linux shift+insert
linux->windows ctrl+insert
参考博客:
https://blog.csdn.net/wer724853863/article/details/78873290