Tôi sử dụng lệnh telnet để kiểm tra xem cổng MySQL có phản hồi không.
telnet 10.10.10.24 3306
Tôi sử dụng ký tự ctrl để ngắt kết nối. Điều này đang làm việc như mong đợi. Làm cách nào để sử dụng lệnh này trong shell script?
Tôi sử dụng lệnh telnet để kiểm tra xem cổng MySQL có phản hồi không.
telnet 10.10.10.24 3306
Tôi sử dụng ký tự ctrl để ngắt kết nối. Điều này đang làm việc như mong đợi. Làm cách nào để sử dụng lệnh này trong shell script?
Câu trả lời:
Nếu bạn chỉ muốn kiểm tra xem cổng có mở không, hãy thử:
$ nc -zv 10.10.10.24 3306
Connection to localhost 3306 port [tcp/mysql] succeeded!
nc
sẽ trả về 0 nếu cổng mở và 1 nếu không. Điều này là khá hữu ích cho kịch bản là tốt. Bỏ qua công v
tắc để giữ im lặng:
if ! nc -z 10.10.10.24 3306
then
do_something
fi
nc
là tốt hơn nhiều cho việc sử dụng không tương tác. Hãy thử một cái gì đó như
echo -e "\n\n" | nc 10.10.10.24 3306
Nếu bạn không có nc, bạn có thể sử dụng chuyển hướng tập tin đặc biệt bash:
head -1 < /dev/tcp/10.10.10.24/3306 >/dev/null && echo MySQL is on || echo MySQL is off
Đây là kịch bản của tôi cho bất kỳ trường hợp cụ thể.
host=localhost
DATE=`date +%Y-%m-%d`
TIME=`date +%H%M%S`
LOG_OK=/tmp/telnet_ok
LOG_FAIL=/tmp/telnet_falha
for port in 80 25 22 443 110
do
if telnet -c $host $port </dev/null 2>&1 | grep -q Escape; then
echo "$DATE $TIME $port: Connected" >> $LOG_OK
else
echo "$DATE $TIME $port : no connection" >> $LOG_FAIL
fi
done
http://fajlinux.com.br/2014/10/10/script-monitorando-via-telnet/
Đây là cách sử dụng telnet trong bash shell / mong đợi
#!/usr/bin/expect
# just do a chmod 755 one the script
# ./YOUR_SCRIPT_NAME.sh $YOUHOST $PORT
# if you get "Escape character is '^]'" as the output it means got connected otherwise it has failed
set ip [lindex $argv 0]
set port [lindex $argv 1]
set timeout 5
spawn telnet $ip $port
expect "'^]'."