リモートコンピューターがssh /スクリプトアクセスのためにオンラインであることを確認するにはどうすればよいですか?


11

ラップトップからUbuntuサーバーにデータをバックアップするスクリプトを書いています。そのために、バックアップを開始する前にサーバーが使用可能かどうかをテストする(ba)shコマンドを探しています。pingブール値を返すポート22のようなもの。

これどうやってするの?

回答:


20

このような:

nc -z hostname 22 > /dev/null
echo $?

もしそうなら0、それは利用可能です。もしそうなら、そうで1はありません。


このオプションは唯一のnetcat-OpenBSDのパッケージで動作することに注意してください、それ以外のオプションは存在しません:nc: invalid option -- 'z'
valentin_nasta

-wオプションなしでは、ncはUbuntuで永久にスタックします
Edward Torvalds

12

netcatを使用します。

nc -z localhost 22

マンページから

 -z      Specifies that nc should just scan for listening daemons,
         without sending any data to them.

くそー!あなたは私をそれに負けました。
バハマト

2
おかげで、ncを知りませんでした。なぜnc -z -w 2 192.168.0.123(-wはタイムアウトオプションで、秒単位で)タイムアウトしないのかと思いました:|
Amo__

ポートも指定する必要があります。nc -z -w 2 192.168.0.123 22は期待どおりに動作します。
クリス

への+1 z。スキャンした人はだれでも、提供しなくてもスキャンした人の情報を取得できますidentification string
amrx

5

代わりの:

nc -vzw 1 hostname 22

これは回答を-w選択ncする必要があります。オプションがないと、Ubuntuで永久にスタックします
Edward Torvalds

Boolは次のように使用できます=>nc -zw 2 examplehost.com 22 && { echo "You can call your backup function" ; } || { echo "SSH Unavailable" ; }
Mr Pundir

3

どうですか

MACHINE=192.168.0.8
exec 3>/dev/tcp/${MACHINE}/22
if [ $? -eq 0 ]
then
    echo "SSH up"
else
    echo "SSH down"
fi

常にLinuxであるとは限りません。彼のラップトップはMacかもしれません。そして、Debianは無効にします/dev/tcp。Debian派生のUbuntuも同様です(ただし、私は特定の知識はありません)。しかし/dev/tcp、それが利用可能な場合、はい、これは完全に有効です。
バハマト

あなたのフィードバックのためのthx、私はそれをMacで書いた。

ありがとう、exec 3>/dev/tcp/${HOST}/22本当に「奇妙」に見えても
Amo__

これは、追加のパッケージをインストールする必要がない唯一の答えです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.