TOC:
- Menggunakan bash dan
timeout
- Menggunakan
nc
- Perintah
- RHEL 6 (nc-1.84)
- RHEL 7 (nmap-ncat-6.40)
- Catatan
Menggunakan bash dan timeout
:
Catatan yang timeout
harus hadir dengan RHEL 6+, atau alternatifnya ditemukan di GNU coreutils 8.22. Di MacOS, instal menggunakan brew install coreutils
dan gunakan sebagai gtimeout
.
Perintah:
$ timeout $TIMEOUT_SECONDS bash -c "</dev/tcp/${HOST}/${PORT}"; echo $?
Jika parametrizing host dan port, pastikan untuk menentukannya seperti ${HOST}
dan ${PORT}
seperti di atas. Jangan menentukan mereka hanya sebagai $HOST
dan $PORT
, yaitu tanpa kawat gigi; itu tidak akan berfungsi dalam kasus ini.
Contoh:
Keberhasilan:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/80"; echo $?
0
Kegagalan:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
124
Jika Anda harus mempertahankan status keluar dari bash
,
$ timeout --preserve-status 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
143
Menggunakan nc
:
Perhatikan bahwa versi mundur yang tidak kompatibel nc
terinstal di RHEL 7.
Perintah:
Perhatikan bahwa perintah di bawah ini unik karena identik untuk RHEL 6 dan 7. Hanya instalasi dan output yang berbeda.
$ nc -w $TIMEOUT_SECONDS -v $HOST $PORT </dev/null; echo $?
RHEL 6 (nc-1.84):
Instalasi:
$ sudo yum install nc
Contoh:
Keberhasilan:
$ nc -w 2 -v canyouseeme.org 80 </dev/null; echo $?
Connection to canyouseeme.org 80 port [tcp/http] succeeded!
0
Kegagalan:
$ 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
Jika nama host dipetakan ke beberapa IP, perintah gagal di atas akan menggilir banyak atau semua dari mereka. Sebagai contoh:
$ 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):
Instalasi:
$ sudo yum install nmap-ncat
Contoh:
Keberhasilan:
$ 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
Kegagalan:
$ nc -w 2 -v canyouseeme.org 81 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connection timed out.
1
Jika nama host dipetakan ke beberapa IP, perintah gagal di atas akan menggilir banyak atau semua dari mereka. Sebagai contoh:
$ 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
Catatan:
The -v
( --verbose
) argumen dan echo $?
perintah tentu saja hanya untuk ilustrasi.