ฉันจะตรวจสอบว่าคอมพิวเตอร์ระยะไกลออนไลน์สำหรับการเข้าถึง ssh / script ได้อย่างไร


12

ฉันกำลังเขียนสคริปต์ที่จะสำรองข้อมูลจากแล็ปท็อปของฉันไปยังเซิร์ฟเวอร์ Ubuntu หากต้องการทำเช่นนั้นฉันกำลังมองหาคำสั่ง (ba) sh เพื่อทดสอบว่าเซิร์ฟเวอร์พร้อมใช้งานก่อนเริ่มการสำรองข้อมูลหรือไม่ บางอย่างเช่นpingบนพอร์ต 22 ที่ส่งคืนบูลีน

ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


21

แบบนี้:

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

ถ้าเป็นเช่น0นั้นก็มีให้ ถ้าเป็นเช่น1นั้นมันไม่ใช่


โปรดทราบว่าตัวเลือกนี้ใช้งานได้กับแพ็คเกจ netcat-openbsd เท่านั้นมิฉะนั้นจะไม่มีตัวเลือกนี้:nc: invalid option -- 'z'
valentin_nasta

ไม่มี-wตัวเลือก nc จะติดตลอดไปบน Ubuntu
Edward Torvalds

เรามีคำสั่งคล้ายกันจาก windows ได้
ไหม

13

ใช้netcat :

nc -z localhost 22

จาก manpage

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

ประณาม! คุณเอาชนะฉันไป
bahamat

2
ขอบคุณไม่รู้ nc ฉันสงสัยว่าทำไมnc -z -w 2 192.168.0.123(-w เป็นตัวเลือกการหมดเวลาเป็นวินาที) ไม่หมดเวลา: |
Amo__

คุณต้องระบุพอร์ตด้วย nc -z -w 2 192.168.0.123 22 ทำงานตามที่คาดไว้
chris

+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พิการ Ubuntu ได้รับ Debian มาด้วยเช่นกัน (แต่ฉันไม่มีความรู้เฉพาะ) แต่ถ้า/dev/tcpมีอยู่ก็ใช่ว่าถูกต้องแล้ว
bahamat

ขอบคุณสำหรับความคิดเห็นของคุณฉันได้เขียนไว้ใน Mac

ขอบคุณแม้ว่าจะexec 3>/dev/tcp/${HOST}/22ดู "แปลกประหลาด" จริงๆ
Amo__

นี่เป็นคำตอบเดียวที่ไม่จำเป็นต้องติดตั้งแพ็คเกจเพิ่มเติม
เฉินเอ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.