Bagaimana saya dapat memeriksa bahwa komputer jarak jauh sedang online untuk akses ssh / skrip?


12

Saya sedang menulis skrip yang akan mencadangkan data dari laptop saya ke server Ubuntu. Untuk melakukannya, saya sedang mencari perintah (ba) sh untuk menguji apakah server tersedia sebelum memulai pencadangan. sesuatu seperti pingpada port 22 yang mengembalikan boolean.

Bagaimana saya bisa melakukan ini?

Jawaban:


21

Seperti ini:

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

Jika itu 0maka itu tersedia. Jika ya 1maka tidak.


Perhatikan bahwa opsi ini hanya berfungsi dengan paket netcat-openbsd, jika tidak opsi tidak ada:nc: invalid option -- 'z'
valentin_nasta

tanpa -wopsi nc akan macet selamanya di Ubuntu
Edward Torvalds

dapatkah kita memiliki perintah serupa dari windows
Harshal Zope

13

Gunakan netcat :

nc -z localhost 22

Dari halaman manual

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

Sial! Anda mengalahkan saya untuk itu.
bahamat

2
terima kasih, tidak tahu nc, saya bertanya-tanya mengapa nc -z -w 2 192.168.0.123(-w adalah opsi batas waktu, dalam detik) tidak batas waktu: |
Amo

Anda perlu menentukan port juga. nc -z -w 2 192.168.0.123 22 berfungsi seperti yang diharapkan.
chris

+1 untuk bagian zdalam. siapa pun yang Anda pindai masih bisa mendapatkan info tentang siapa yang melakukan pemindaian hanya tanpa memberikanidentification string
amrx

5

Bergantian:

nc -vzw 1 hostname 22

jawaban ini harus dipilih, tanpa -wopsi ncakan macet selamanya di Ubuntu
Edward Torvalds

Bool dapat digunakan seperti =>nc -zw 2 examplehost.com 22 && { echo "You can call your backup function" ; } || { echo "SSH Unavailable" ; }
Mr. Pundir

3

Bagaimana dengan

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

Jangan selalu menganggap itu Linux. Laptopnya mungkin Mac. Dan Debian menonaktifkan /dev/tcp. Ubuntu menjadi turunan Debian juga (tapi saya tidak memiliki pengetahuan khusus). Tetapi jika /dev/tcptersedia, maka ya ini benar-benar valid.
bahamat

Terima kasih atas tanggapan Anda, saya telah menulisnya di Mac.

terima kasih, bahkan jika exec 3>/dev/tcp/${HOST}/22terlihat sangat "aneh"
Amo__

Ini adalah satu-satunya jawaban yang tidak perlu menginstal paket tambahan.
Chen A.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.