有几个小坑,记录一下!
1.避免每次交互等10秒钟
set timeout 1
2.spawn只能有一个.如果是ssh到跳板机,再ssh到生产机,第二个ssh要通过send发送
spawn ssh -p3299 ${USERNAME}@${CONSOLE_IP}
#部署到${SERVER_1}
expect "*$"
send "scp -P 3299 ${FILENAME} ${USERNAME}@${SERVER_1}:${DIR}\r"
expect "*$"
send "\r"
send "ssh ${USERNAME}@${SERVER_1}\r"
3.因为expect是Tcl语法,有些特殊字符,需要特殊处理
#send "ps aux |grep bigdata_linux_amd64 | grep -v grep |awk '{print $2}'|xargs kill -9\r" 会报错!
#因为expect是Tcl语法,所以要将shell的"" 改成Tcl's {}
#因为是两层ssh 所以需要在$前加\
#\r要单独作为一个命令发送
send {ps aux |grep bigdata_linux_amd64 | grep -v grep |awk '{print \$2}'|xargs kill -9}
send "\r"
参考1:http://blog.youkuaiyun.com/leexide/article/details/17485451