Làm cách nào để kiểm tra xem máy tính từ xa có trực tuyến để truy cập ssh / script không?


11

Tôi đang viết một tập lệnh sẽ sao lưu dữ liệu từ máy tính xách tay của tôi sang máy chủ Ubuntu. Để làm như vậy, tôi đang tìm một lệnh (ba) sh để kiểm tra xem máy chủ có khả dụng không trước khi bắt đầu sao lưu. một cái gì đó giống như pingtrên cổng 22 trả về một boolean.

Tôi có thể làm cái này như thế nào?

Câu trả lời:


19

Như thế này:

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

Nếu nó 0thì nó có sẵn. Nếu vậy 1thì không.


Lưu ý rằng tùy chọn này chỉ hoạt động với gói netcat-openbsd, nếu không thì tùy chọn này không có mặt:nc: invalid option -- 'z'
valentin_nasta

không có -wtùy chọn nc sẽ bị kẹt mãi mãi trên Ubuntu
Edward Torvalds

12

Sử dụng mạng mèo :

nc -z localhost 22

Từ trang

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

Chỉ trích! Bạn đánh bại tôi vào nó.
bahamat

2
cảm ơn, không biết nc, tôi đã tự hỏi tại sao nc -z -w 2 192.168.0.123(-w là tùy chọn hết thời gian, tính bằng giây) không hết thời gian: |
Amo__

Bạn cần chỉ định một cổng quá. nc -z -w 2 192.168.0.123 22 hoạt động như mong đợi.
chris

+1 cho zvào. bất cứ ai bạn quét vẫn có thể nhận được thông tin về người đã quét mà không cung cấpidentification string
amrx

5

Luân phiên:

nc -vzw 1 hostname 22

câu trả lời này nên được chọn, không có -wtùy chọn ncsẽ bị kẹt mãi mãi trên Ubuntu
Edward Torvalds

Bool có thể được sử dụng như =>nc -zw 2 examplehost.com 22 && { echo "You can call your backup function" ; } || { echo "SSH Unavailable" ; }
Ông Pundir

3

Thế còn

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

Đừng luôn cho rằng đó là Linux. Máy tính xách tay của anh ấy có thể là máy Mac. Và Debian vô hiệu hóa /dev/tcp. Ubuntu cũng có nguồn gốc từ Debian (nhưng tôi không có kiến ​​thức cụ thể). Nhưng nếu /dev/tcpcó sẵn, thì có, điều này là hoàn toàn hợp lệ.
bahamat

Thx cho phản hồi của bạn, tôi đã viết nó trên máy Mac.

cảm ơn, ngay cả khi exec 3>/dev/tcp/${HOST}/22trông thực sự "kỳ quái"
Amo__

Đây là câu trả lời duy nhất không yêu cầu cài đặt các gói bổ sung.
Chen A.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.