如何在我可以执行的某些主机上执行其他命令(例如在 bash 脚本中?)之前等待 shell 提示出现ssh user@host echo "test";
并且它会登录,并在准备好时执行 echo "test" - 但看起来它没有在每个主机上工作。我想在继续执行之前等待#
或提示出现- 我该怎么做?$
echo "test"
当我这样做时ssh user@host
,等待#
并手动执行echo "test"
它会按您的预期工作。如何将其放入脚本中?ssh user@host -t echo "test"
也不起作用。
我特别想做一些类似的事情:ssh -o StrictHostKeyChecking=no -p 2222 user@host -t tail -f /var/log/MyFile.log
即尾随主机的日志文件并在本地外壳上显示结果而不是尾随日志文件,它只是让我进入提示:
No entry for terminal type "screen";
using dumb terminal settings.
#
-->
请忽略提示是root
,这不是该线程的一部分。是的,它是从屏幕会话中启动的——从普通终端(xterm),它说No entry for terminal type "xterm";
(例如)。
没有-t
我得到FATAL: not a terminal
,它把我扔回本地外壳。
作为最后的手段,您也许可以使用“expect”程序。
下面是一个简单的例子,如何将期望与 ssh 一起使用:https ://www.journaldev.com/1405/expect-script-ssh-example-tutorial
我刚刚和最近实现这个的人聊天!他说这是因为出于安全原因(能够禁用生产构建的 root 访问权限),shell 会通过其他一些登录二进制文件进行传输。解决方案是将额外二进制文件的路径更改
/etc/passwd
回 shell 二进制文件。