如何配置Cron任务使Bash脚本输出指定格式的网络错误日志
解决Ping测试网络连通性时的特定日志记录需求
直接修改你的onlineCHECK.sh脚本,让它自动检测指定错误并写入你要的格式日志,具体代码如下:
#!/bin/bash # 替换成你实际要测试的目标主机 TARGET_HOST="your-target-host.com" # 日志文件路径,和你cron里配置的一致 LOG_FILE="/onlineCHECK/logs/onlineCHECK_issues--Crontab.log" # 执行ping测试,捕获所有输出(包括错误) ping_result=$(ping -c 3 "$TARGET_HOST" 2>&1) # 检查输出中是否包含指定的错误关键词 if echo "$ping_result" | grep -qE "No route to host|cannot resolve host"; then # 生成统一时间戳,避免两次date调用出现时间差 current_time=$(date "+%m/%d/%Y %I:%M:%S %p") # 写入指定格式的日志行 echo "$current_time|0|0|0|0|$current_time" >> "$LOG_FILE" fi # 可选:把ping的原始输出也追加到日志,方便后续排查细节 echo "$ping_result" >> "$LOG_FILE"
关键说明:
ping -c 3:指定ping3次就停止,避免cron每分钟执行时出现无限ping的情况,次数可以根据需求调整grep -qE:静默匹配两个错误关键词,只要出现其中一个就触发日志写入- 统一时间戳:用变量存储一次date结果,保证日志前后时间完全一致
- 日志写入逻辑:只有触发指定错误时才会写入你要的格式行,同时可选保留原始ping输出,方便排查其他问题
Cron配置调整(可选)
如果脚本里已经处理了日志写入,你可以把cron命令里的日志追加部分去掉,避免重复输出:
*/1 * * * * /onlineCHECK/onlineCHECK.sh
要是想保留脚本自身的其他错误输出,继续用原来的cron配置就行。
内容的提问来源于stack exchange,提问作者ShaunATac
相关产品推荐
相关产品推荐

