在 shell 脚本中使用 telnet

在 shell 脚本中使用 telnet

我使用 telnet 命令来检查 MySQL 端口是否响应。

telnet 10.10.10.24 3306

我使用 ctrl 字符断开连接。这按预期工作。如何在 shell 脚本中使用此命令?

答案1

如果您只是想检查端口是否开放,请尝试:

$ nc -zv 10.10.10.24 3306
Connection to localhost 3306 port [tcp/mysql] succeeded!

nc如果端口打开则返回 0,否则返回 1。这对于编写脚本也非常有帮助。省略开关v以保持安静:

if ! nc -z 10.10.10.24 3306
then
    do_something
fi

答案2

nc对于非交互式使用来说要好得多。尝试类似

echo -e "\n\n" | nc 10.10.10.24 3306

答案3

如果您没有 nc,您可以使用 bash 特殊文件重定向:

head -1 < /dev/tcp/10.10.10.24/3306 >/dev/null && echo MySQL is on || echo MySQL is off

答案4

这是我针对任何特定情况编写的脚本。

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/

相关内容