最近,我遇到了一个问题,试图弄清楚如何让我的 shell 脚本在自动登录 ssh 终端后将命令粘贴到 ssh 终端中。我正在尝试设置一个 cron 选项卡,它将执行我的 shell 脚本,该脚本会自动登录到我的 Ubiquiti 接入点的 ssh 终端并插入命令以在特定时间关闭 LED。到目前为止,当我运行 shell 脚本时,我已经能够自动通过 SSH 进入接入点,但当它登录时不会粘贴命令。在我手动退出 SSH 终端后,echo 命令会在离开终端后运行并输入命令。我想知道是否有人可以帮助我解决这个问题。我到处找,但找不到任何答案。提前谢谢你。这是我目前在 shell 脚本中的代码。我希望能够在 SSH 终端中运行的命令是(“mgmt.led_pattern_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
来编写交互式会话 - 但对于这种情况来说这过于复杂了。