使用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
log_YYYYMMDD.log
。pingState
为1,并记录日志。如果ping不通,设置pingState
为0,并记录日志。status
、WlAN
、show
命令,并记录返回结果。Connection State
的状态。如果是connected
,设置connectState
为1,并记录日志;否则,设置connectState
为0,并记录日志。chmod +x script.sh
命令赋予执行权限。将上述脚本保存为script.sh
,然后在终端中运行./script.sh
即可。