0

我在一space.sh台服务器上创建了一个脚本,这个脚本在其他服务器上执行 ssh 并检查挂载点。如果任何服务器的密码不起作用或过期,它将简单地打印出服务器名称或 ip 并要求输入密码。

我想在我的邮件上输出。所以为此我又创建了一个脚本mail.sh。并简单地调用sh space.sh >> test.txt并使用mailx在我的邮件中获取此信息。

问题来了。在运行 mail.sh 时,它不要求输入密码,因为 space.sh 现在正在后端运行。

4

1 回答 1

0

问题是,您的脚本 space.sh 正在等待输入,而您稍后调用的 mailx 程序正在等待输出。所以你创造了一个僵局。

应该以非交互方式运行的脚本不应要求用户输入。

我建议使用公钥登录并以不等待输入的方式调用 ssh,即不使用密码,例如:

ssh -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" hostname

如果由于缺少密钥而无法登录,则不会尝试 PasswordAuthentication,但会返回错误:“Permission denied (publickey,password)”。

于 2015-01-22T19:13:39.973 回答