接続された最初のアドレスを使用して両方のアドレスにSSHを介して接続

接続された最初のアドレスを使用して両方のアドレスにSSHを介して接続

私は家にコンピュータを持っています。フランクリン(私はそう呼んでいます)私は仕事用のラップトップでSSHを頻繁に使います。家にいるときはFranklin.localでSSH経由で接続し、職場や他の場所にいるときはRemote.address.of.franklinでSSH経由で接続します。

状況に応じて、常に正しい方法で接続する機能が私のプロフィールにあってほしいです。私のネットワークの状態は頻繁に変わります(有線対無線、さまざまなSSIDなど)。したがって、ネットワークの状態を検出してこれを実行したくないのではなく、次のことを行います。

  1. フランクリンをローカルで利用できる場合は、ローカルに接続してください。
  2. それ以外の場合はリモート接続

これが私が今使っているものです:

function franklin () {
    ping -c 5 "franklin.local" > /dev/null
    if [[ $? != 0 ]]
        then
        echo "franklin not available on local, so trying remote connection"
        ssh -p 22 remote.address.of.franklin
    else
        echo "franklin available on local network, so trying local connection"
        ssh [email protected]
    fi
}

問題は、pingに時間がかかることです。私の質問は次のとおりです2つのSSHコマンドを同時に実行し、自動的に最初のリンクコマンドを使用できますか?

ベストアンサー1

ORシェルで簡単なものを試してみてはいかがですか?

ssh [email protected] || ssh -p 22 remote.address.of.franklin

私はZSHについてはよくわかりませんが、評価ロジックはまだ怠惰なようです。つまり、2番目の部分は、最初の部分が失敗した場合にのみ評価されることを意味します。もちろん、最初のコマンドがfranklin.local利用可能であることを確認するためにしばらく待機することもできます。

関数で行ったように、コマンドをエイリアスに割り当てることで短縮できます。

おすすめ記事