Skip to content

端口检测

每秒钟检测指定IP的端口是否正常,失败是记录到日志文件。

网络连接检查操作说明

1. 使用 wscat 进行 WebSocket 连接测试

wscat 是一个用于测试 WebSocket 连接的工具。以下是相关操作步骤:

  • 首先,使用 npm 全局安装 wscat
Terminal window
npm install -g wscat
  • 接着,使用安装好的 wscat 连接到指定的 WebSocket 服务器,同时发送 quit 消息:
Terminal window
/opt/node-v20.10.0-linux-x64/bin/wscat -x quit -c wss://fs-out.gaojinbo.com:9443

2. 使用 nc 进行端口连通性测试

nc(Netcat)是一个网络工具,可用于测试网络连接、端口是否开放等。这里使用它来测试指定 IP 地址和端口的连通性:

Terminal window
nc -vz -w 3 121.37.249.109 9443
  • -v:表示显示详细信息。
  • -z:表示只进行端口扫描,不进行数据传输。
  • -w 3:设置连接超时时间为 3 秒。

3. 编写检查脚本

为了定期检查指定 IP 地址和端口的连通性,并记录日志,可以编写如下脚本。

3.1 编写检查脚本 /opt/check-fs.sh
#!/bin/bash
# 检查是否提供了两个参数(IP 和端口)
if [ $# -ne 2 ]; then
echo "Usage: $0 <IP> <PORT>"
exit 1
fi
IP=$1
PORT=$2
# 执行 nc 命令并捕获退出状态
nc -v -w 2 $IP $PORT > /dev/null 2>&1
EXIT_STATUS=$?
# 如果连接失败,记录错误信息和时间到日志文件
if [ $EXIT_STATUS -ne 0 ]; then
echo "`date`Failed to connect to $IP:$PORT" >> /tmp/fs.log
fi
使用方法:

将上述脚本保存为一个文件,例如 check_port.sh,然后添加执行权限:

Terminal window
chmod +x check_port.sh

运行脚本时,传递 IP 地址和端口作为参数:

Terminal window
./check_port.sh 121.37.249.109 9443
3.2 编写定时执行脚本 /opt/every-x-seconds.sh
#!/bin/bash
if [[ $# != 2 ]]
then
echo script arguments: time and command
exit
fi
while true
do
$2
sleep $1
done

此脚本用于定时执行指定的命令,其工作原理如下:

  • 若脚本的参数数量不为 2,就输出提示信息并退出。
  • 若参数数量为 2,第一个参数代表执行间隔时间(秒),第二个参数代表要执行的命令。
  • 进入无限循环,每次循环中执行指定的命令,然后休眠指定的时间。
3.3 运行定时检查任务

使用 screen 命令在后台运行定时检查任务,每 10 秒执行一次 /opt/check-fs.sh 脚本:

Terminal window
screen /opt/every-x-seconds.sh 10 "/opt/check-fs.sh 121.37.249.109 9443"

注意事项

  • 要保证 npm 已经正确安装,并且 wscat 能够正常使用。
  • 确保 /opt/node-v20.10.0-linux-x64/bin 路径下的 wscat 可执行文件存在。
  • 运行脚本前,要确保 /tmp/fs.log 文件有写入权限。
  • screen 命令可让脚本在后台持续运行,你可以使用 screen -r 命令重新连接到该会话。