我在一space.sh
台服务器上创建了一个脚本,这个脚本在其他服务器上执行 ssh 并检查挂载点。如果任何服务器的密码不起作用或过期,它将简单地打印出服务器名称或 ip 并要求输入密码。
我想在我的邮件上输出。所以为此我又创建了一个脚本mail.sh
。并简单地调用sh space.sh >> test.txt
并使用mailx在我的邮件中获取此信息。
问题来了。在运行 mail.sh 时,它不要求输入密码,因为 space.sh 现在正在后端运行。
问题是,您的脚本 space.sh 正在等待输入,而您稍后调用的 mailx 程序正在等待输出。所以你创造了一个僵局。
应该以非交互方式运行的脚本不应要求用户输入。
我建议使用公钥登录并以不等待输入的方式调用 ssh,即不使用密码,例如:
ssh -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" hostname
如果由于缺少密钥而无法登录,则不会尝试 PasswordAuthentication,但会返回错误:“Permission denied (publickey,password)”。