校园网web登录的shell脚本

在一些情况下由于浏览器的原因,web认证的页面刷不出来,某位大神给出了在shell中用curl的POST来实现登录和shell脚本。

作为一名linux菜鸟,学习了一下他的成果,发现还是比较简单易懂的。再次谢谢大神的分享。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

#!/bin/sh
# A script to login/logout to Southeast University Web Authentication
# Copyright 2014 William Wong (@librehat) <librehat@outlook.com>
# Twitter/Sina Weibo: @librehat
# Blog: https://www.librehat.com
# Blog: http://en.librehat.com

function LOGIN()
{
    REPLY=`curl -# -e "http://w.seu.edu.cn/portal/wap.htm" -d "username=$USER&password=$PWD" "http://w.seu.edu.cn/portal/login.php" | grep -o "success"`
    if [[ "$REPLY" != "" ]]; then
        echo "Login Successed"
        STATUS
    else
        echo "Login Failed"
    fi
}

function LOGOUT()
{
    REPLY_OUT=`curl -# -e "http://w.seu.edu.cn/portal/wap.htm" -d \"\" "http://w.seu.edu.cn/portal/logout.php" | grep -o "success"`
    if [[ "$REPLY_OUT" != "" ]]; then
        echo "Logout Successed"
    else
        echo "Logout Failed"
    fi
}

function STATUS()
{
    STAT=`curl -# "http://w.seu.edu.cn/portal/init.php"`

    NOT_LOGIN=`echo $STAT | grep -o "notlogin"`
    if [[ "$NOT_LOGIN" != "" ]]; then
        echo "Not Login. Please Login First."
        return
    fi

    LOGIN_USERNAME=`echo $STAT | grep -o '"login_username":"[a-Z,0-9]*"' | sed -e 's/"login_username"://' -e 's/"//g'`
    LOGIN_IP=`echo $STAT | grep -o '"login_ip":"[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"' | sed -e 's/"login_ip"://' -e 's/"//g'`
    LOGIN_TIME=`echo $STAT | grep -o '"login_time":[0-9]*' | sed 's/"login_time"://'`
    LOGIN_TIME_="`echo $LOGIN_TIME/3600 | bc`h`echo $LOGIN_TIME%3600/60 | bc`m`echo $LOGIN_TIME%3600%60 | bc`s"
    LOGIN_LOC=`echo $STAT | grep -o '"login_location":"[\\,a-Z,0-9]*"' | sed -e 's/"login_location"://' -e 's/"//g'`
    EXPIRE=`echo $STAT | grep -o '"login_expire":"[0-9]*\-[0-9]*\-[0-9]*"' | sed -e 's/"login_expire"://' -e 's/"//g'`
    LOGIN_REMAIN=`echo $STAT | grep -o '"login_remain":[0-9]*' | sed 's/"login_remain"://'`
    echo    "Login Username   :    $LOGIN_USERNAME"
    echo    "Login IP Address :    $LOGIN_IP"
    echo    "Login Time       :    $LOGIN_TIME_"
    echo -e "Login Location   :    $LOGIN_LOC"
    echo    "Expire Date      :    $EXPIRE"
    echo    "Remaining Days   :    $LOGIN_REMAIN"
}

function USAGE()
{
    echo "Usage :"
    echo "Login : ./seu_web.sh <USERNAME> <PASSWORD>"
    echo "Logout: ./seu_web.sh logout"
    echo "Status: ./seu_web.sh status"
}

if [ $3 ]; then
    USAGE
elif [ $2 ]; then
    USER=$1
    PWD=$2
    LOGIN
elif [ "$1" = "logout" ]; then
    LOGOUT
elif [ "$1" = "status" ]; then
    STATUS
else
    USAGE
fi

echo

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值