Unix - 抑制信息性消息

时间:2014-06-04 19:22:34

标签: bash unix ssh

我正在尝试为我的一个脚本执行远程命令。我必须在许多服务器上运行此脚本。所以我会把它放在一个脚本中。我想做的是

ssh root@10.158.42.12 nohup perl /script/myscript.pl 06/04/2014 60 &

脚本运行得很好但是每当您尝试登录时都会显示一条信息消息。你们中的许多人都会熟悉..

|-----------------------------------------------------------------|
| This system is for the use of authorized users only.            |
| Individuals using this computer system without authority, or in |

因此,除非按下输入,否则将执行脚本执行。我想把脚本放在cronjob中进行自动执行,所以我不需要看到这条信息。

1 个答案:

答案 0 :(得分:2)

这是我的理论:

  1. 您的命令不会在服务器后台运行该程序。它运行在服务器上的前台运行程序,然后运行后台ssh

  2. 由于ssh在后​​台运行,您会立即返回到提示符。

  3. 毫秒之后,ssh将使用此消息覆盖您的提示并运行该命令。

  4. 您现在正在查看ssh消息而没有提示。

  5. 按下回车键,会导致在下一行重新绘制提示。

  6. 这会让您相信ssh实际上正在等待您按Enter键。实际上,命令已经运行了,bash已准备好接受新命令,只是被ssh噪声所掩盖。

  7. 如何测试:

    • 如果我是对的,按 Ctrl + L 而不是Enter将清除屏幕并显示bash提示。 (假设您不使用bash的vi模式)。

    • 如果我不是, Ctrl + L 将改为执行任何操作,再次打印ssh消息或只写^L到屏幕。

    如果我是对的,如何解决:

    ssh -f root@10.158.42.12 'nohup perl /script/myscript.pl 06/04/2014 60 &' 2> /dev/null