Linux

如何在執行cmds之前等待直到出現提示?

  • December 15, 2019

如何在我可以執行的某些主機上執行其他命令(例如在 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,它把我扔回本地外殼。

我剛剛和最近實現這個的人聊天!他說這是因為出於安全原因(能夠禁用生產建構的 root 訪問權限),shell 會通過其他一些登錄二進製文件進行傳輸。解決方案是將額外二進製文件的路徑更改/etc/passwd回 shell 二進製文件。

作為最後的手段,您也許可以使用“expect”程序。

下面是一個簡單的例子,如何將期望與 ssh 一起使用:https ://www.journaldev.com/1405/expect-script-ssh-example-tutorial

引用自:https://unix.stackexchange.com/questions/557099