定义:
由于某种特殊情况没有配置互信,当多次使用ssh、scp、sftp的时候,就发现非常烦人,总是让你不断输入密码,except就是一个专门用于交互执行命令,尤其他作为linux的交互命令在写脚本的时候模仿人为输入,就显现出他独特的优势。
参数:
- spqwn 交互命令的开始
- expect 用于匹配交互字符,如果匹配上就继续执行后面的命令
- set 设置变量
- puts 输出变量
- set timeout 设置超时时间
- send 用于发送字符串或者命令
- exit 退出expect脚本
- eof expect执行结束,退出
- interact 结束
- \r 代表回车,输入密码或者命令时使用
举例:
使用 expect -f test.sh root 172.27.18.200 执行这个脚本就能从对端服务器上下载指定目录的文件,就不需要手动输入密码了
注意:
(1.)在对端操作,每一步都必须使用expect匹配上对应字符,才能继续执行下面的操作。
(2.)send后面的命令必须跟着 \r 回车,否则不能执行命令
(3.)expect 执行纯expect脚本
当然,也可以直接在shell脚本里面引用expect。
#!/bin/bash
shell 语言。。。
/usr/bin/expect <<EOF
spawn sftp [email protected]
expect "*ssword*"
send "ACROSS_ad_2013\r"
.....
interact
EOF