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