使用 expect 和 while / loop 登录 SSH

SSH Login with expect and while / loop

我需要登录 50 个不同的服务器和 运行 一个带有 expect

的脚本

如何使用 expect 实现循环?

#!/usr/bin/expect -f
spawn bash -c "ssh -tt $user@$ip < /root/examplescript.sh"
expect "*assword:"
send "$password\r"
interact

输出listserver.txt

user password ip
user password ip
user password ip
user password ip
user password ip

如果您需要将主机等列表保存在单独的文件中,请查看 Andreas Louv 链接到的答案。如果你不这样做,你可以这样做:

#!/usr/bin/expect -f

foreach {user password ip} {
    user1 password1 ip1
    user2 password2 ip2
    user3 password3 ip3
    user4 password4 ip4
} {
    spawn bash -c "ssh -tt $user@$ip < /root/examplescript.sh"
    expect "*assword:"
    send "$password\r"
    interact
}