Saya memerlukan baris perintah yang dapat memeriksa status port pada host jarak jauh. Saya mencoba ping xxx.xxx.xxx.xxx:161
tetapi tidak mengenali "tuan rumah". Saya pikir itu adalah jawaban "baik" sampai saya melakukan perintah yang sama terhadap host yang saya tahu memiliki port terbuka. Ini untuk file batch pada Windows yang akan memeriksa status port jarak jauh kemudian menjalankan perintah yang menggunakan port jarak jauh untuk informasi, kemudian perintah port jarak jauh lagi, kemudian perintah yang menggunakan port itu di server berikutnya untuk informasi , dan seterusnya. Saya telah melihat ke mana-mana dan berpikir ping mungkin melakukannya, tetapi harus ada berbagai versi ping, saya kira server yang saya lakukan tidak menunjukkan opsi itu.
Hanya untuk terkekeh, saya mencoba pemeriksa port jarak jauh berbasis web dari sebuah situs web - dan hasilnya benar untuk server "masalah" dan server yang benar. Namun, saya tidak bisa menggunakannya dalam batch yang dijalankan dengan 500+ server IP di dalamnya.
Adakah sesuatu yang bisa saya lakukan yang sederhana? Keterampilan Perl saya sangat berkarat (gunakan atau hilang), tidak tahu bahasa berbasis Windows lainnya kecuali batch. Unix adalah keahlian saya, tetapi ini harus dijalankan dari Widows Server 2003.
sumber
ps> tnc xxx.xxx.xxx.xxx -port 161
Jawaban:
Anda sepertinya mencari pemindai port seperti nmap atau netcat , yang keduanya tersedia untuk Windows, Linux, dan Mac OS X.
Sebagai contoh, periksa telnet pada ip yang dikenal:
Misalnya, cari port terbuka dari 20 hingga 30 di host.example.com:
sumber
nc -zv host.example.com 20-30
. kalau tidak, tidak ada output-z
untuknc
tidak tersedia di Linux.Di Command Prompt, Anda dapat menggunakan perintah telnet .. Misalnya, untuk menyambung ke IP 192.168.10.1 dengan port 80,
Untuk mengaktifkan telnet di Windows 7 dan di atas, klik . Dari artikel yang ditautkan, aktifkan telnet melalui panel kontrol -> program dan fitur -> fitur windows -> klien telnet, atau jalankan saja ini di prompt admin:
sumber
Untuk keperluan skrip, saya menemukan bahwa
curl
perintah dapat melakukannya, misalnya:Mungkin ini mungkin tidak akan berfungsi untuk semua layanan, karena
curl
dapat mengembalikan kode kesalahan yang berbeda dalam beberapa kasus (sesuai komentar), jadi menambahkan kondisi berikut ini dapat bekerja dengan cara yang dapat diandalkan:Catatan: Ditambahkan
-m5
untuk mengatur batas waktu koneksi maksimum 5 detik.Jika Anda ingin memeriksa apakah host juga valid, Anda perlu memeriksa
6
kode keluar juga:Untuk memecahkan masalah kode kesalahan yang dikembalikan, cukup jalankan
curl host:port
:, misalnya:Lihat:
man curl
untuk daftar lengkap kode keluar.sumber
curl $IP:$PORT
hasil:curl: (52) Empty reply from server
(versuscurl: (7) Failed to connect
) tetapi sepertinc
, saya tidak bisa| grep Empty
untuk pernyataan output ini seperti yang mungkin diharapkan (sesuatu tentang baris baru atau kurangnya output langsung?). Saya kira baris Anda tergantung dari kode keluar, kan? Saya di El Cap; mungkin di versi atau OS lain negara kegagalan keluar-1
daripada52
?curl -s $IP:$PORT >/dev/null; if [ $? -eq 52 ]; then echo "Connected."; else echo "Fail."; fi
Tekan Windows+ Rketik
cmd
danEnterPada tipe command prompt
Jika port tidak terbuka, pesan ini akan menampilkan:
Kalau tidak, Anda akan dibawa ke port yang dibuka (layar kosong akan ditampilkan)
sumber
Gunakan perintah nc,
Anda juga dapat menggunakan perintah telnet
sumber
nc atau 'netcat' juga memiliki mode pemindaian yang mungkin berguna.
sumber
Saya pikir Anda sedang mencari Hping ( http://www.hping.org/ ), yang memiliki versi Windows.
Ini juga sangat berguna jika Anda ingin melihat di mana sepanjang rute port TCP sedang diblokir (seperti oleh firewall), di mana ICMP mungkin tidak.
sumber
Di Bash, Anda dapat menggunakan file perangkat semu yang dapat membuka koneksi TCP ke soket terkait. Sintaksnya adalah
/dev/$tcp_udp/$host_ip/$port
.Ini adalah contoh sederhana untuk menguji apakah Memcached berjalan:
Berikut ini adalah tes lain untuk melihat apakah situs web tertentu dapat diakses:
Untuk info lebih lanjut, periksa: Panduan Script Bash Lanjutan: Bab 29.
/dev
dan/proc
.Terkait: Uji apakah port pada sistem jarak jauh dapat dijangkau (tanpa telnet) di SuperUser.
Untuk contoh lebih lanjut, lihat: Cara membuka soket TCP / UDP di bash shell (artikel).
sumber