I use the telnet command to check if MySQL port is responding.
telnet 10.10.10.24 3306
I use the ctrl character to disconnect. This is working as expected. How do I use this command in shell script?
I use the telnet command to check if MySQL port is responding.
telnet 10.10.10.24 3306
I use the ctrl character to disconnect. This is working as expected. How do I use this command in shell script?
If you're just looking to check if the port is open, try:
$ nc -zv 10.10.10.24 3306
Connection to localhost 3306 port [tcp/mysql] succeeded!
nc
will return 0 if the port is open and 1 if it is not. This is quite helpful for scripting as well. Omit the v
switch to keep it quiet:
if ! nc -z 10.10.10.24 3306
then
do_something
fi
nc
is much better for non-interactive usage. Try something like
echo -e "\n\n" | nc 10.10.10.24 3306
If you don't have nc, you can use bash special files redirectons:
head -1 < /dev/tcp/10.10.10.24/3306 >/dev/null && echo MySQL is on || echo MySQL is off
This is my script for any specific cases .
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/
I would use netcat and it's '-w' instead;
host:~ user$ nc -w 1 1.2.6.1 3306 ? 5.1.57-1~dotdeb.1?WO`rA*L#h?b4z.pmT;i~^;host:~ user$
Here is how to use telnet in bash shell/expect
#!/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 "'^]'."