我使用expect tu验证ssh的密码。 我试图通过puts输出 但我只是在字符串中得到服务器响应的结束。
我如何只获得看跌期权值?
okk=$(expect -c "
set timeout 15
spawn ssh -p 22 user@server.com
expect {
\"(yes/no)\" {
sleep 1
send \"yes\n\"
exp_continue
}
\"(y/n)\" {
sleep 1
send \"y\n\"
exp_continue
}
password {
sleep 1
send \"$sshpw\r\"
exp_continue
}
Password {
sleep 1
send \"$sshpw\r\"
exp_continue
}
\"Last login\" {
puts \"yes\"
exit 1
}
\"Permission denied\" {
return \"no\"
exit 1
}
timeout {
puts \"timeout\"
exit 1
}
eof {
puts \"error\"
}
}
sleep 1
expect eof
")
echo $okk
onsectetur。 Donec ut libero sed arcu vehicula ultricies a non tortor。 Lorem ipsum dolor坐下来,精致的adipistur elit。 Aenean ut gravida lorem。 Ut turpis felis,pulvinar a semper sed,adipiscing id dolor。 Pellentesque auctor nisi id magna consequat sagittis。 Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nis
答案 0 :(得分:1)
除了puts
的输出外,还需要进行两项更改:
使用spawn -noecho ssh -p 22 user@server.com
在log_user 0
set timeout 15
醇>
警告:如果您遇到的情况不会在EXPECT世界中打印任何内容,您将在BASH世界中获得一个空字符串。所以,请注意这一点!