简单的bash函数,用于检查ssh会话是否成功

时间:2015-10-11 09:00:05

标签: bash ssh

当我在家时,我想使用本地网络连接到我的服务器,因为它比连接到它的外部IP地址更快。但是我想要一个自动连接到我内部IP的SSH会话的功能,具有参数功能,如果失败,请尝试使用外部IP(并再次使用参数)。

到目前为止,我所拥有的就是它,它似乎应该有效,而且我有一点时间调试它。

ssh_home() { if ssh user@192.168.2.2 "$@" then echo; else echo "WARNING: NOT on home connection!"; ssh user@host.me -p 10000 "$@"; fi; }

我目前收到的错误消息是:

syntax error near unexpected token `else'

但是,如果有其他陈述,我会抬起头来,而且我很确定我做得对..也许我的眼睛完全没有错过了。

1 个答案:

答案 0 :(得分:3)

您忘记了then

前面的分号
ssh_home() { if ssh user@192.168.2.2 "$@"; then echo; else echo "WARNING: NOT on home connection!"; ssh user@host.me -p 10000 "$@"; fi; }

无论如何,为什么回声什么呢?为什么不扭转这种状况:

ssh_home() { if ! ssh user@192.168.2.2 "$@"; then echo "WARNING: NOT on home connection!"; ssh user@host.me -p 10000 "$@"; fi; }

为什么不在多行上编写函数,以便更容易阅读:

ssh_home() {
    if ! ssh user@192.168.2.2 "$@"; then
        echo "WARNING: NOT on home connection!"
        ssh user@host.me -p 10000 "$@"
    fi
}