TOC:
- Sử dụng bash và
timeout
- Sử dụng
nc
- Chỉ huy
- MÙA 6 (nc-1.84)
- RHEL 7 (nmap-ncat-6,40)
- Nhận xét
Sử dụng bash và timeout
:
Lưu ý rằng timeout
phải có mặt với RHEL 6+ hoặc được tìm thấy thay thế trong GNU coreutils 8.22. Trên MacOS, cài đặt nó bằng cách sử dụng brew install coreutils
và sử dụng nó như gtimeout
.
Chỉ huy:
$ timeout $TIMEOUT_SECONDS bash -c "</dev/tcp/${HOST}/${PORT}"; echo $?
Nếu tham số hóa máy chủ và cổng, hãy chắc chắn chỉ định chúng như ${HOST}
và ${PORT}
như trên. Không chỉ định chúng chỉ là $HOST
và $PORT
, tức là không có niềng răng; nó sẽ không hoạt động trong trường hợp này.
Thí dụ:
Sự thành công:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/80"; echo $?
0
Sự thất bại:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
124
Nếu bạn phải duy trì trạng thái thoát của bash
,
$ timeout --preserve-status 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
143
Sử dụng nc
:
Lưu ý rằng phiên bản không tương thích ngược nc
được cài đặt trên RHEL 7.
Chỉ huy:
Lưu ý rằng lệnh bên dưới là duy nhất ở chỗ nó giống hệt nhau cho cả RHEL 6 và 7. Đây chỉ là cài đặt và đầu ra khác nhau.
$ nc -w $TIMEOUT_SECONDS -v $HOST $PORT </dev/null; echo $?
MÙA 6 (nc-1.84):
Cài đặt:
$ sudo yum install nc
Ví dụ:
Sự thành công:
$ nc -w 2 -v canyouseeme.org 80 </dev/null; echo $?
Connection to canyouseeme.org 80 port [tcp/http] succeeded!
0
Sự thất bại:
$ nc -w 2 -v canyouseeme.org 81 </dev/null; echo $?
nc: connect to canyouseeme.org port 81 (tcp) timed out: Operation now in progress
1
Nếu tên máy chủ ánh xạ tới nhiều IP, lệnh không thành công ở trên sẽ chuyển qua nhiều hoặc tất cả chúng. Ví dụ:
$ nc -w 2 -v microsoft.com 81 </dev/null; echo $?
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
1
RHEL 7 (nmap-ncat-6,40):
Cài đặt:
$ sudo yum install nmap-ncat
Ví dụ:
Sự thành công:
$ nc -w 2 -v canyouseeme.org 80 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 52.202.215.126:80.
Ncat: 0 bytes sent, 0 bytes received in 0.22 seconds.
0
Sự thất bại:
$ nc -w 2 -v canyouseeme.org 81 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connection timed out.
1
Nếu tên máy chủ ánh xạ tới nhiều IP, lệnh không thành công ở trên sẽ chuyển qua nhiều hoặc tất cả chúng. Ví dụ:
$ nc -w 2 -v microsoft.com 81 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connection to 104.43.195.251 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 23.100.122.175 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 23.96.52.53 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 191.239.213.197 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection timed out.
1
Nhận xét:
Đối số -v
( --verbose
) và echo $?
lệnh tất nhiên chỉ để minh họa.