原 持续ping多个主机,并写入日志文件,做定时任务
需求1
shell脚本,每天2点10开始执行,2点40结束
脚本实现的功能是:在当前节点,对服务器mdw、sdw1、sdw2、sdw3、sdw4这5台服务器进行持续的ping操作,并且将结果写入日志文件,在每次ping的前边需要加上时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | cat > /home/gpadmin/ping_gp.sh <<"EOF" #!/bin/bash # 定义服务器列表 servers=("mdw" "sdw1" "sdw2" "sdw3" "sdw4") # 日志文件路径 logfile="/tmp/ping_log_$(date +%F).log" # 获取当前主机名 current_host=$(hostname) # 开始时间和结束时间 (秒) start_time=$(date -d "02:10" +%s) end_time=$(date -d "02:40" +%s) # 当前时间 current_time=$(date +%s) # 判断当前时间是否在执行时间范围内 while [ $current_time -ge $start_time ] && [ $current_time -le $end_time ] do for target in "${servers[@]}" do # 确保只对其他服务器进行ping if [ "$current_host" != "$target" ]; then # 获取当前时间 timestamp=$(date '+%Y-%m-%d %H:%M:%S') # 执行ping并附加时间戳 ping_output=$(ping -c 4 $target 2>&1) # 捕获标准输出和错误输出 echo "$timestamp $current_host -> $target: $ping_output" >> $logfile fi done # 等待1秒后继续 sleep 1 # 更新当前时间 current_time=$(date +%s) done EOF chmod +x /home/gpadmin/ping_gp.sh 10 2 * * * /home/gpadmin/ping_servers.sh |