在SHELL脚本中用curl处理服务器开机、关机、强制关机、重启动作

这篇具有很好参考价值的文章主要介绍了在SHELL脚本中用curl处理服务器开机、关机、强制关机、重启动作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


思路:利用了一张主控板来获取服务器的开关机状态,开关机其实是给服务器一个500ms~1000ms的脉冲,等同与按了机箱面板的开关机按钮开关。

获取服务器的开关机状态

if [ $# -lt 1 ]; then
    echo "no ip"
    exit 1
fi

IP=$1
#-----------------------------
if [ $# -eq 1 ]; then
#-----------------------------
# 只有1个参数,第一通道获取开关机状态
    rsp=$(curl -X GET "http://${IP}/led0.cgi?led0_2&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
    ret=$(echo "$rsp" | awk -F ';' '{print $1}' | grep red)
    if [ ! -z "${ret}" ]; then
        echo "ON"
        exit 0
    fi
    ret=$(echo "$rsp" | awk -F ';' '{print $1}' | grep black)
    if [ ! -z "${ret}" ]; then
        echo "OFF"
        exit 0
    fi
    echo "Unknown"
    exit 1
fi

服务器的开机、关机、强制关机、复位脚本

#!/bin/bash


if [ $# -lt 1 ]; then
    echo "no ip"
    exit 1
fi

IP=$1
#-----------------------------
if [ $# -eq 1 ]; then
#-----------------------------
# 只有1个参数,第一通道获取开关机状态
    rsp=$(curl -X GET "http://${IP}/led0.cgi?led0_2&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
    ret=$(echo "$rsp" | awk -F ';' '{print $1}' | grep red)
    if [ ! -z "${ret}" ]; then
        echo "ON"
        exit 0
    fi
    ret=$(echo "$rsp" | awk -F ';' '{print $1}' | grep black)
    if [ ! -z "${ret}" ]; then
        echo "OFF"
        exit 0
    fi
    echo "Unknown"
    exit 1
fi

echo " " >resultfail.txt

OP=$2
#-----------------------------
if [ $# -eq 2 ]; then
#-----------------------------
# 只有2个参数,第一通道测试开关机、复位
    if [[ "${OP}" == "on" ]]; then
        rsp=$(curl -X GET "http://${IP}/led0.cgi?led0_0=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
        ret=$(echo "$rsp" | grep '.gif' | wc -l)
        if [ ${ret} -gt 0 ];then
            echo "on succ"
        else
            echo "on fail"
            echo "${OP} fail" >>resultfail.txt
            exit 1
        fi
    elif [[ "${OP}" == "foff" ]]; then
        rsp=$(curl -X GET "http://${IP}/led0.cgi?led0_1=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
        ret=$(echo "$rsp" | grep '.gif' | wc -l)
        if [ ${ret} -gt 0 ];then
            echo "${OP} succ"
        else
            echo "${OP} fail"
            echo "${OP} fail" >>resultfail.txt
            exit 1
        fi
    elif [[ "${OP}" == "off" ]]; then
        rsp=$(curl -X GET "http://${IP}/led0.cgi?led0_4=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
        ret=$(echo "$rsp" | grep '.gif' | wc -l)
        if [ ${ret} -gt 0 ];then
            echo "${OP} succ"
        else
            echo "${OP} fail"
            echo "${OP} fail" >>resultfail.txt
            exit 1
        fi
    elif [[ "${OP}" == "rst" ]]; then
        rsp=$(curl -X GET "http://${IP}/led0.cgi?led0_3=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
        ret=$(echo "$rsp" | grep '.gif' | wc -l)
        if [ ${ret} -gt 0 ];then
            echo "${OP} succ"
        else
            echo "${OP} fail"
            echo "${OP} fail" >>resultfail.txt
            exit 1
        fi
    else
        echo "Invalid Op"
        exit 1
    fi
#-----------------------------
elif [ $# -eq 3 ]; then
#-----------------------------    
# 有3个参数 ,多通道测试开关机、复位
    CH=$3
    if [ $CH -lt 0 ]; then
        echo "Channel number:0~8"
        exit 1
    fi
    if [ $CH -gt 8 ]; then
        echo "Channel number:0~8"
        exit 1
    fi
    
    if [[ "${OP}" == "on" ]]; then
        rsp=$(curl -X GET "http://${IP}/led${CH}.cgi?led${CH}_0=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
        ret=$(echo "$rsp" | grep '.gif' | wc -l)
        if [ ${ret} -gt 0 ];then
            echo "on succ"
        else
            echo "on fail"
            echo "${OP} fail" >>resultfail.txt
            exit 1
        fi
    elif [[ "${OP}" == "foff" ]]; then
        rsp=$(curl -X GET "http://${IP}/led${CH}.cgi?led${CH}_1=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
        ret=$(echo "$rsp" | grep '.gif' | wc -l)
        if [ ${ret} -gt 0 ];then
            echo "${OP} succ"
        else
            echo "${OP} fail"
            echo "${OP} fail" >>resultfail.txt
            exit 1
        fi
    elif [[ "${OP}" == "off" ]]; then
        rsp=$(curl -X GET "http://${IP}/led${CH}.cgi?led${CH}_4=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
        ret=$(echo "$rsp" | grep '.gif' | wc -l)
        if [ ${ret} -gt 0 ];then
            echo "${OP} succ"
        else
            echo "${OP} fail"
            echo "${OP} fail" >>resultfail.txt
            exit 1
        fi
    elif [[ "${OP}" == "rst" ]]; then
        rsp=$(curl -X GET "http://${IP}/led${CH}.cgi?led${CH}_3=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
        ret=$(echo "$rsp" | grep '.gif' | wc -l)
        if [ ${ret} -gt 0 ];then
            echo "${OP} succ"
        else
            echo "${OP} fail"
            echo "${OP} fail" >>resultfail.txt
            exit 1
        fi
    else
        echo "Invalid Channel"
        exit 1
    fi
#-----------------------------
elif [ $# -eq 4 ]; then
#-----------------------------    
# 有4个参数,开关机循环测试
    CH=$3
    TIMES=$4
    
    if [ $CH -lt 0 ]; then
        echo "Channel number:0~8"
        exit 1
    fi
    if [ $CH -gt 8 ]; then
        echo "Channel number:0~8"
        exit 1
    fi
    if [ $TIMES -lt 0 ]; then
        echo "times number:1~10000"
        exit 1
    fi
    if [ $TIMES -gt 10000 ]; then
        echo "Channel number:0~10000"
        exit 1
    fi
    
    if [ "${OP}" == "on" ] || [ "${OP}" == "foff" ] || [ "${OP}" == "off" ] || [ "${OP}" == "rst" ]; then
        for ((i=1;i<=$TIMES ;i++))
        do 
            rsp=$(curl -X GET "http://${IP}/led${CH}.cgi?led${CH}_0=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
            ret=$(echo "$rsp" | grep '.gif' | wc -l)
            if [ ${ret} -gt 0 ];then
                echo "on succ"
            else
                echo "on fail"
                #exit 1
            fi
            sleep 2
            rsp=$(curl -X GET "http://${IP}/led${CH}.cgi?led${CH}_1=0&WebToken=18c70020e5240008550c0008570c0008&t=1692190322" 2> /dev/null)
            ret=$(echo "$rsp" | grep '.gif' | wc -l)
            if [ ${ret} -gt 0 ];then
                echo "${OP} succ"
            else
                echo "${OP} fail"
                echo "${i}----${OP} fail" >>resultfail.txt
                #exit 1
            fi
            sleep 7
        done
    else
        echo "Invalid TIMES"
        exit 1
    fi
fi
#-----------------------------


exit 0


文章来源地址https://www.toymoban.com/news/detail-733319.html

到了这里,关于在SHELL脚本中用curl处理服务器开机、关机、强制关机、重启动作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell脚本实现删除服务器指定目录下文件方法

    上述脚本中,find 命令用于查找指定目录下4天以前的文件,并将其删除。其中,-type f 表示只查找普通文件,不包括目录和符号链接等其他类型的文件;-mtime +3 表示查找修改时间早于3天前的文件;-delete 表示删除查找到的文件。 脚本中的 $folder_path 可以替换为实际的目录路径

    2023年04月19日
    浏览(63)
  • shell脚本使用(宿主机windows-服务器-centos)--用于使用shell脚本方式控制docker容器

    需求: 我想要使得windows上编写shell脚本,并且在这个shell脚本在linux中也可用 shell脚本在windows上无法直接运行,但是有WSL这个linux子系统的工具 可以使得shell脚本在主机上执行 视频讲解连接 方式1 方式2

    2024年02月07日
    浏览(49)
  • 实现判断服务器是否有git并拉取代码的shell脚本

    判断当前服务器是否有git,没有的话使用yum install安装,然后切换至普通用户,创建目录,并且进入新创建的目录,git clone代码

    2024年02月10日
    浏览(56)
  • 【Linux】在服务器上创建Crontab(定时任务),自动执行shell脚本

    业务场景:该文即为上次编写shell脚本的姊妹篇,在上文基础上,将可执行的脚本通过linux的定时任务自动执行,节省人力物力,话不多说,开始操作! 连上服务器后,在任意位置都可以执行: crontab -e 如果没有进入 编辑cron任务模式 根据提示查看我们的服务器上是否未安装crontab没有则

    2024年02月14日
    浏览(60)
  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(67)
  • shell 脚本统计 http 文件服务器下指定目录及其子目录下所有文件的大小

    shell脚本如下: 首先 vi calculate_size.sh 写入下入内容 执行 sh calculate_size.sh http://example.com/some/dir/ 即可统计 http 文件服务器http://example.com/some/dir/ 中 dir 目录及其子目录下所有文件的大小。

    2024年02月15日
    浏览(59)
  • Linux之实现Apache服务器监控、数据库定时备份及通过使用Shell脚本发送邮件

    目录  一、Apache服务器监控 为什么要用到服务监控? 实现Apache服务器监控 二、数据库备份 为什么要用到数据库备份? 实现数据库备份 三、Shell脚本发送邮件 为什么要用使用Shell脚本发送邮件? 实现Shell脚本发送邮件 在Linux中监控Apache服务器是非常重要的,原因如下: 保证

    2024年04月15日
    浏览(74)
  • shell脚本之003获取固定时间段(分钟)内的日志,并将其定时通过sftp上传至服务器中

    #!/bin/bash export PATH=/home/ccbt/software/lftp-4.9.2/usr/local/bin/:$PATH # 获取当前系统时间 now=$(date +\\\"%Y/%m/%d %H:%M:%S\\\") echo \\\"当前日期时间:$now\\\" # 当前时间戳 now_time=$(date +%s) echo \\\"当前时间戳:$now_time\\\" #获取指定开始时间的时间戳 10分钟 time_befo=$(($now_time-600)) echo \\\"指定开始时间戳: $time_befo\\\"

    2024年02月01日
    浏览(56)
  • 命令行请求Web服务器curl

    curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。 它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。 curl https://www.example.com curl -b \\\'foo1=bar;foo2=bar2\\\' https://google.com curl -b coo

    2024年02月08日
    浏览(70)
  • curl命令服务器上执行http请求

     1. 现在本地使用postman生成curl命令    注意: 将ip改成127.0.0.1,端口是实际服务运行的端口   2. 登录云服务容器执行命令,就可以模拟浏览器调用接口了

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包