我有一个脚本,可以通过 ssh 在多台服务器上执行相同的命令。
spawn ssh [lindex $argv 0]
send "sudo /usr/sbin/useradd ytkatchen"
expect "password:"
send "Unix\@999\r"
我在所有服务器上的密码并不相同。我对很多服务器都使用了 2 个不同的密码。
我的要求是脚本应该建立 ssh 连接并使用正确有效的密码才能使工作继续进行。
如果密码错误,它不应该执行,而应该尝试其他密码并继续。
答案1
更简单的方法是使用 ssh 密钥而不是密码。
您可以为每个服务器生成一个 ssh 密钥对,并使用它们自动连接而无需使用密码。
由于您不需要在脚本中提示或存储任何密码,因此它的安全性也更好。
答案2
您可以在服务器上设置无密码,sudo
这样您就不必担心输入密码。快速指南:
$ sudo visudo
在文件末尾添加新行:
EditThisToYourUsername ALL=(ALL) NOPASSWD:ALL
注意:用户名和ALL之间有一个制表符。
保存文件(Escape、:x、Enter)。
另一个解决方案是,您可以监听命令的退出代码sudo
来了解您输入的密码是否正确。