Bash脚本:每3秒ping一次并记录日志,telnet检查连接状态

ChatGPT4o 使用 ChatGPT 4o 回答

问题:

使用bash为linux写一个脚本,1、每3秒ping1次192.168.3.1,如果ping的通设置变量pingState结果为1,并打印ping 的结果seccess,记录日志到当前日期时间和结果到log; 2、如果ping不通设置变量pingState为0,打印ping 的结果Timeout,记录日志到当前日期时间和结果到log, 并通过telnet连接169.254.0.1端口2323,并依次输入status回车WlAN回车show,并打印返回结果。从结果中判断获取Connection State:的状态是否是connected。如果是则设置变量connectState为1,则打印240‘s Connection State is Connected,记录日志到当前日期时间和结果到log3、如果不是则设置变量connectState为0,则打印240‘s Connection State is Disconnect,记录日志到当前日期时间和结果到log;

回答:

以下是一个符合你要求的Bash脚本。这个脚本每3秒ping一次192.168.3.1,并根据ping的结果设置变量pingState。如果ping不通,它会通过telnet连接到169.254.0.1的2323端口,执行一系列命令,并根据返回结果设置变量connectState

#!/bin/bash

LOG_FILE="log_$(date +%Y%m%d).log"

while true; do
    TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
    
    # Ping 192.168.3.1
    if ping -c 1 -W 1 192.168.3.1 > /dev/null 2>&1; then
        pingState=1
        echo "$TIMESTAMP - Ping success" | tee -a $LOG_FILE
    else
        pingState=0
        echo "$TIMESTAMP - Ping Timeout" | tee -a $LOG_FILE
        
        # Telnet to 169.254.0.1:2323 and execute commands
        telnet_output=$( (echo "status"; sleep 1; echo "WlAN"; sleep 1; echo "show"; sleep 1) | telnet 169.254.0.1 2323 2>/dev/null)
        
        echo "$telnet_output" | tee -a $LOG_FILE
        
        if echo "$telnet_output" | grep -q "Connection State: connected"; then
            connectState=1
            echo "$TIMESTAMP - 240's Connection State is Connected" | tee -a $LOG_FILE
        else
            connectState=0
            echo "$TIMESTAMP - 240's Connection State is Disconnect" | tee -a $LOG_FILE
        fi
    fi
    
    sleep 3
done

说明:

  1. 日志文件:日志文件名包含当前日期,格式为log_YYYYMMDD.log
  2. ping命令:每3秒ping一次192.168.3.1。如果ping通,设置pingState为1,并记录日志。如果ping不通,设置pingState为0,并记录日志。
  3. telnet命令:如果ping不通,脚本会通过telnet连接到169.254.0.1的2323端口,依次输入statusWlANshow命令,并记录返回结果。
  4. 状态检查:从telnet返回结果中检查Connection State的状态。如果是connected,设置connectState为1,并记录日志;否则,设置connectState为0,并记录日志。

注意事项:

  1. telnet命令:确保系统中已安装telnet客户端。
  2. 权限:确保脚本有执行权限,可以使用chmod +x script.sh命令赋予执行权限。
  3. 日志文件:日志文件会记录每次操作的时间戳和结果,便于后续分析。

将上述脚本保存为script.sh,然后在终端中运行./script.sh即可。