Bash脚本编写
注意事项:
- 赋值不能有空格 name=13
- 判断语句 【】前后要有空格
- ``和$()效果一样
- 执行命令会fork 子shell,所以要加上足够长的sleep,确保上一个子shell退出
log(){
lvl=$1
msg=$2
current_date=$(date +"%Y-%m-%d")
current_time=$(date +"%H:%M:%S")
echo $current_date $current_time $lvl $msg
}
fetchIDP(){
local lkey=$2
local ltimeout=$1
$(curl -X POST -s -o ./idp_mon.tmp --max-time ${ltimeout} -k -d ${lkey}  https://www.baidu.com)  # 发送curl请求并将响应保存到response变量中
exit_code=$?
response=$(cat ./idp_mon.tmp)
     ret=0
     if [ $exit_code -eq 0 ]; then
         # Check if the response contains the expected string
         if [[ $response == *"ICP"* ]]; then
              log "INFO: " "Success"
              ret=1
         else
              log "WARN: " "Response does not contain the expected string"
         fi
      elif [ $exit_code -eq 28 ]; then
              log "ERROR: " "Timeout"
      else
              log "ERROR: " "occurred: $exit_code"
      fi
    return $ret
}
while true; do
unset http_proxy
unset https_proxy
result0=curl  -k -L https://www.baidu.com/profile.jsp
key=echo ${result0}|awk -F '"' '{print $12}'
    max_retries=100  # 设置最大重试次数
    for ((i=1; i<=max_retries; i++)); do
            export https_proxy=http://test1:BNi@10.120.2.169:8080
            export http_proxy=http://test1:BNi@10.120.2.169:8080
            fetchIDP 30 $key
            firstRet=$?
            # 重试一次
            if [ $firstRet -eq 0 ]; then
                    sleep 2
                    fetchIDP 60 $key
                    secondRet=$?
                    if [ $secondRet -eq 0 ]; then
                            log "DEBUG: " "failed"
                            echo "idp service failed" > /tmp/idp_mon.stat
                            break
                    fi
            fi
            echo 'success' > /tmp/idp_mon.stat
            sleep 200  # 间隔1分钟
    done
done
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号