1.expect环境搭建
expect是一个免费的编程语言工具,用来实现自动和交互式任务进行通信,而无需人的干预。
环境的安装和一些简单的例子可以参看:Shell脚本学习之expect命令
运行环境:ubuntu16
2.例子
始于懒,才想法设法的做一些自动化的操作,把日常的重复性动作改造成越来越简单的动作,比如远程拷贝文件,ssh登录等。
2.1 自动scp
# FileName : autoScp.sh
# Description : 自动远程拷贝文件
# Editor : Donkey
# Data : 2019-2-25
#!/usr/expect/bin/expect
set ssh_user "root" #ssh用户名
set ssh_passwd "xxxxxxxx" #ssh密码
set srcpath "bin/xxxxx" #拷贝的文件
set dstpath "/data/xxxx/bin" #拷贝到指定路径
#set dst_ip "192.168.1.x" #固定
set dst_ip [lrange $argv 0 0] #通过命令行的参数获取ip
spawn scp $srcpath $ssh_user@$dst_ip:$dstpath #启动新进场,后跟执行指令
set timeout 10 #设置超时时间
expect {
-timeout 10
"yes/no" {exp_send "yes\r";exp_continue} #初次登录需要输入yes确认
"password:" {exp_send "passwordxxx\r"} #自动输入密码
timeout {puts "expect was timeout by ubuntu.";return} #超时退出
}
expect eof
exit
Result