Saya mencoba membuat skrip untuk menguji apakah mungkin masuk melalui telnet. Saya tidak ingin benar-benar masuk; oleh karena itu, mengharapkan tidak diperlukan. Saya hanya ingin melihat apakah saya bisa mendapatkan prompt login. Ini sedang dilakukan dari sistem Linux jadi saya telah mencoba menggunakan nc
:
nc 192.168.10.5 23 -w 1 | grep -q login
if [ $? -eq 1 ]
then
echo "console is down"
fi
Masalahnya adalah ini menyebabkan konsol saya terkunci. Sepertinya -w
tidak benar-benar menjatuhkan koneksi.
Saya juga mencoba menggunakan telnet tetapi saya tidak dapat memutuskan koneksi dari dalam skrip. Mencoba
\echo "\035" | telnet 192.168.10.5
istirahat sebelum saya mendapatkan prompt login.
shell
shell-script
telnet
netcat
Ronle
sumber
sumber
Jawaban:
Bash menyediakan perangkat pseudo yang mungkin Anda kenal seperti
kutipan dari halaman manual Bash/dev/null
. Namun ada perangkat lain seperti/dev/tcp
dan/dev/udp
untuk menguji koneksi jaringan, yang dapat Anda gunakan dari dalam skrip Bash juga.Contoh
Inilah saya sedang menguji koneksi ke host di domain saya bernama skinner dan melihat apakah saya dapat terhubung ke port 22.
CATATAN: Port 22 untuk SSH, untuk telnet gunakan port 23.
Hebat jadi mari kita coba non-port:
Yah itu bekerja, tapi itu output yang sangat jelek. Tidak perlu khawatir. Anda dapat menjalankan
echo > /dev/tcp/...
dalam subkulit dan mengarahkan semua output/dev/null
untuk membersihkannya sedikit. Inilah pola yang dapat Anda gunakan dalam skrip shell Anda:sumber
telnet
, maka itu secara default berjalan pada port 23, jadi di mana slm telah menggunakan 22 dan 223, gunakan 23.# telnet 192.168.10.5 Trying 192.168.10.5... Connected to 192.168.10.5 (192.168.10.5). Escape character is '^]'. Connection closed by foreign host.
# cat < /dev/tcp/192.168.10.12/23
memberi saya prompt masuk tetapi saya tidak dapat keluar darinya.# cat afile ^]
setelah menjalankan itu hanya menggemakan istirahat untukafile
. Masih bermain dengan itu tetapi saya merasa saya hampir sampai.Anda berada di jalur yang benar menggunakan
nc
, tetapi jika Anda benar-benar ingin menguji apakah Anda dapat membuat koneksi, gunakan sakelar nc-z
:sumber
nc
apa ini?nc
.Saya tahu jawabannya agak terlambat, tapi saya mencari cara untuk melakukan ini dan menggunakan nc bukan pilihan untuk alasan keamanan, jadi ini dia jika dapat membantu seseorang.
Apa yang hilang dalam gema awal Anda adalah -e switch:
Dan baris baru + perintah berhenti untuk berhenti dari telnet setelah memutuskan hubungan. Dengan demikian:
Jelas hal yang sama akan bekerja jika Anda menggunakan gaya blok jika pernyataan dan mengevaluasi $? seperti yang Anda lakukan pada awalnya:
Sementara kita berada di dalamnya, sejauh nc pergi, itu tergantung pada apa rasa nc yang Anda miliki (gnu ncat vs nmap-ncat). Gnu akan memiliki tombol -z:
sementara yang lain tidak mau dan Anda harus menyalurkan saluran kosong ke nc Anda agar tidak terjebak:
sumber
jalankan
nc -z 192.168.10.5 23
di command prompt atau buat skrip bash untuk menjalankan perintah ini.Ini mengembalikan pernyataan di bawah ini jika koneksi berhasil.
Koneksi ke 192.168.10.5 23 port [tcp / *] berhasil!
sumber