如何使用 shell 脚本将命令回显或粘贴到 SSH 终端

如何使用 shell 脚本将命令回显或粘贴到 SSH 终端

最近,我遇到了一个问题,试图弄清楚如何让我的 shell 脚本在自动登录 ssh 终端后将命令粘贴到 ssh 终端中。我正在尝试设置一个 cron 选项卡,它将执行我的 shell 脚本,该脚本会自动登录到我的 Ubiquiti 接入点的 ssh 终端并插入命令以在特定时间关闭 LED。到目前为止,当我运行 shell 脚本时,我已经能够自动通过 SSH 进入接入点,但当它登录时不会粘贴命令。在我手动退出 SSH 终端后,echo 命令会在离开终端后运行并输入命令。我想知道是否有人可以帮助我解决这个问题。我到处找,但找不到任何答案。提前谢谢你。这是我目前在 shell 脚本中的代码。我希望能够在 SSH 终端中运行的命令是(“mgmt.led_pa​​ttern_override=2”>> /var/etc/persistent/cfg/mgmt)

   #!/bin/sh
sshpass -p "password" ssh -o StrictHostKeyChecking=no [email protected];
   echo '"mgmt.led_pattern_override=2" >> /var/etc/persistent/cfg/mgmt';
exit

答案1

不需要启动交互式 ssh 会话,而是直接将 echo 命令作为参数传递给 ssh:

sshpass -p "password" ssh -o StrictHostKeyChecking=no [email protected] '
   echo "mgmt.led_pattern_override=2" >> /var/etc/persistent/cfg/mgmt
'

您的另一个选择是使用脚本expect来编写交互式会话 - 但对于这种情况来说这过于复杂了。

相关内容