延迟SSH连接,身份验证和命令


1

我的家用电脑,一台运行OS X 10.8.5的Mac,通常通过互联网接受SSH连接(我有端口转发),但现在已经睡着了。当我不在家时,它有时可能因各种原因而醒来。我想发送一些SSH命令,但不能坐下来继续尝试,直到它醒来。

是否有一种简单的非AppleScript方法来延迟SSH连接,密码验证和命令输入,直到主机响应?我在家中使用Mac,但我想知道在任何基于Unix的操作系统上执行此操作的方法。通常,它会在尝试连接一分钟后超时。

我知道在大多数终端仿真器中,您可以在阻塞进程运行时键入命令,并且一旦这些进程完成就会执行。一个例子是输入git push foo之后git commit -a -m "foo",同时git commit -a -m "foo"仍在运行; 一旦完成提交,git就会推送。我认为通过终端模拟器使用ssh做这样的事情可能会有一些技巧。

Answers:


1

如果您的机器启动,您可以使用ping检查,然后启动一个或多个ssh命令。请注意,您需要在主机上设置基于证书的身份验证。这是一个基于GNU / Linux的BASH的小脚本,但我想你可以把它转换成Mac OS X使用的任何东西。

#/bin/bash   
hostup=0
while [ $hostup -ne 1 ]; do
    ping -c 4 <hostname or IP>
    if [ $? -eq  0 ]; then
        ssh username@hostname <command to execute>
        hostup=1;
done

每个SSH行只有一个命令,如果要使用参数,则必须引用命令。如果您要一直执行相同的命令,可能是家用机器上的脚本是有序的。


这是相当不错的,但主要问题是我不想使用基于证书的身份验证。sshpass允许用户在命令中指定SSH密码,这样就可以绕过它。
sudo 2014年

很高兴我可以帮忙。我不知道sshpass,所以我学到了一些新东西。谢谢。
bjanssen 2014年

不幸的是,sshpass不是官方的Homebrew回购,因为他们不相信我们,非官方的回购已经过时了。我认为它是在MacPorts中,所以一旦我摆脱Homebrew,我会尝试。
sudo 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.