紧接着上篇脚本进行拆分,分析里面的每个单词以及参数,解开交互的面纱,下面看脚本
#!/bin/expectspawn ssh root@192.168.222.131expect { "yes/no" {send "yes\r";exp_continue} ##匹配到yes/no就自动输入yes,继续往下匹配 "*password" {send "root\r"} ##匹配到password,则自动输入root}expect eof
拆头:
#!/bin/expect
这个大概一眼就看明白了吧,指定脚本解释器,和Shell脚本是一样的
拆胸:
spawn ssh root@192.168.222.131
spawn 这是个命令执行前缀,如果你要切入一个命令就要用它开始,比如mysql_secure_installation时才会产生交互信息,那么你需要用spawn引入
拆腹:
expect { "yes/no" {send "yes\r";exp_continue} ##匹配到yes/no就自动输入yes,继续往下匹配 "*password" {send "root\r"} ##匹配到password,则自动输入root}
expect ##作用是对spawn产生信息进行一个过滤,或者说spawn产生的交互信息进行处理
"yes/no" ##这个是对产生的交互信息进行过滤,发现yes/no的交互信息进行启用对应的策略进行处理,注意用“”标记
send "yes\r" ##对上述匹配到的yes/no进行响应“yes”其中\r(发送)\n(换行)\t(Tab键) send表示发送
exp_continue ##表示继续进行下一项exp脚本匹配,当属于最后一项匹配则不需要exp_continue结束
*password ##表示以password结尾的交互
拆脚:
expect eof
expect eof ##结束脚本