从前端的另一个shell脚本调用shell脚本

时间:2015-01-22 11:37:35

标签: shell email unix mount mailx

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

如果由于缺少密钥而无法登录,则不会尝试PasswordAuthentication,但会返回错误:“权限被拒绝(公钥,密码)。”