gpt4 book ai didi

linux - 在等待通过 while 循环建立 SSH 连接后,如何自动运行一些命令

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:20 24 4
gpt4 key购买 nike

长期阅读。第一次海报。我四处寻找解决方案,但我被卡住了。

我正在重启 Linux 服务器,然后在我的本地计算机 (Mac) 上运行以下循环:

while true; do ssh sudo-user@10.10.10.10; sleep 1; done

这将循环直到它能够建立成功的 SSH 连接:

ssh: connect to host 10.10.10.10 port 22: Operation timed out <-- still rebooting
ssh: connect to host 10.10.10.10 port 22: Operation timed out <-- still rebooting
ssh: connect to host 10.10.10.10 port 22: Connection refused <-- booted but SSHD not started yet.

现在如果我输入

sudo su - 

然后

tail -f /var/log/somelog 

并在建立连接之前按回车键,这两个命令“排队”并在建立连接后在远程服务器上运行,一切都很好。我的问题是如何将这两个命令添加到我的循环中,这样我就不必在运行循环后手动输入它们了?我尝试了几种方法,但没有任何效果。

总结一下。我想运行一个循环,直到 SSH 可用,我连接到 shell,然后自动运行 sudo su - 和 tail -f 一个日志文件。

这是一个从头到尾的例子:

Broadcast message from root@10.10.10.10
(/dev/pts/4) at 0:28 ...

The system is going down for reboot NOW!
Connection to 10.10.10.10 closed by remote host.
Connection to 10.10.10.10 closed.

[~]: while true; do ssh sudo-user@10.10.10.10; sleep 1; done

ssh: connect to host 10.10.10.10 port 22: Connection refused
ssh: connect to host 10.10.10.10 port 22: Operation timed out
ssh: connect to host 10.10.10.10 port 22: Operation timed out
sudo su - (<--- type this command press enter)
ssh: connect to host 10.10.10.10 port 22: Operation timed out
ssh: connect to host 10.10.10.10 port 22: Connection refused
tail -f /var/log/somelog (<--- type this command press enter)
ssh: connect to host 10.10.10.10 port 22: Connection refused
ssh: connect to host 10.10.10.10 port 22: Connection refused
Last login: Sun Nov 16 00:47:55 2014 from 10.10.10.10
"Welcome to blah MOTD"
sudo su -
tail -f /var/log/somelog
[sudo-user@10.10.10.10 ~]$ sudo su -
Last login: Sun Nov 16 00:30:18 UTC 2014 on pts/5
[root@10.10.10.10 ~]# tail -f /var/log/somelog
[somelogfileoutput] blah blah blah
[somelogfileoutput] blah blah blah
[somelogfileoutput] blah blah blah
[somelogfileoutput] blah blah blah

希望这是有道理的。谢谢!

最佳答案

既然你的循环只是为了等待——你为什么不增加建立连接的超时时间呢?
查看 man ssh_config 中的 ConnectTimeout。然后您就可以将所有内容放在一个命令中。

顺便说一句:看起来你使用 sudo su 没有密码。如果这是真的,那就很危险了。您可以考虑配置 sudo 以允许在没有密码的情况下执行此特定命令 (tail -f/var/log/somelog),同时为其他所有内容请求密码。

关于linux - 在等待通过 while 循环建立 SSH 连接后,如何自动运行一些命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26952680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com