1、编写bash脚本

#!/bin/bash

set -e  # 一旦有命令失败就退出脚本

# 配置
URL="http://10.0.2.101/eportal/InterFace.do?method=login"
PAYLOAD="-------------------------------"

# 定义请求头
HEADERS=(
    "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
    "Accept-Encoding: gzip, deflate"
    "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"
    "Origin: ----------"
    "Referer: ------------------"
    "Accept-Language: zh-CN,zh;q=0.9"
    "Cookie: ------------------------------------"
)

# 定义登录函数
login_function() {
    echo "$(date): 尝试登录..."
    response=$(curl -s -w "%{http_code}" -o /dev/null -X POST "$URL" "${HEADERS[@]/#/-H}" --data-raw "$PAYLOAD")

    if [[ "$response" -eq 200 ]]; then
        echo "$(date): 登录成功!"
    else
        echo "$(date): 登录失败,HTTP 状态码:$response"
    fi
}

# 检查网络连接
check_network() {
    ping -c 1 -W 1 8.8.8.8 &> /dev/null
}

# 初始化网络状态
last_network_status=false

echo "$(date): 脚本启动,开始监控网络状态..."

# 主循环
while true; do
    current_network_status=$(check_network && echo true || echo false)

    if $current_network_status; then
        if ! $last_network_status; then
            echo "$(date): 网络连接已恢复正常"
            last_network_status=true
        fi
    else
        echo "$(date): 网络连接不可用,尝试登录"
        login_function
        sleep 5
 
        if check_network; then
            echo "$(date): 登录成功,网络已恢复"
            last_network_status=true
        else
            echo "$(date): 登录后网络仍然不可用,将继续尝试"
            last_network_status=false
        fi
    fi
 
    sleep 3 # 每 3 秒检查一次网络状态
done

2、确保它具有可执行权限

chmod +x /root/login_script.sh

3、实现开机自启

使用文本编辑器打开 /etc/rc.local 文件:

vi /etc/rc.local

在文件的末尾(exit 0 之前),添加以下行:

/root/login_script.sh 

确保文件可执行:

chmod +x /etc/rc.local

后台运行

输出日志

nohup ./login_script.sh > /root/file_log.log 2>&1 &

不输出日志

nohup ./login_script.sh > /dev/null 2>&1 &

在这里:

  • > /dev/null 将标准输出重定向到 /dev/null,有效地丢弃所有输出。
  • 2>&1 将标准错误(文件描述符 2)也重定向到标准输出(文件描述符 1),即这样错误信息同样会被丢弃。
  • & 表示在后台运行命令。
届ける言葉を今は育ててる
最后更新于 2024-10-23