对于获取多台服务器状态且不用交互需要用到expect,但有时候expect无法获取返回值,这里解释一下expect如何获取返回值
expect -c "
spawn $1;
expect {
\"(yes/no)?\" {send \"yes\n\";expect \"assword:\";send \"$2\n\"}
\"assword:\" {send $2\n}
eof
}
expect eof
catch wait result;
exit [lindex \$result 3]"
我们可以在脚本里面这样定义,注意最下面的result
这里需要加上转义字符\$,否则会把$result解析成shell里面的变量,但这里面的$result是需要expect解析的。