在一些情况下由于浏览器的原因,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