【ECNU】bash登陆校园网

本文于2017年10月13日发表于知乎专栏,查看原文
本文于2017年10月14日发表于微信公众号,查看原文

校园网的登陆页面是个网页,bash不能浏览网页,但是也有联网需求。幸好,curl命令可以发送POST请求。

一、curl发送POST

我们检查登陆页面(https://login.ecnu.edu.cn/srun_portal_pc.php)的源代码,发现使用了jQuery,还有一个叫srun_portal.js的JavaScript脚本,显然登陆的POST请求就是从这里发送的:

打开srun_portal.js,我们看到这段post请求,下面还有login_ok,很显然就是这段了。记下post地址https://login.ecnu.edu.cn/include/auth_action.php,几个关键的参数,action=login,username=用户名,password=密码,ajax=1,ac_id=1,ok。

下面可以编写curl命令了:

1
curl -d "action=login&username=10154601140&password=password&ac_id=1&ajax=1" https://login.ecnu.edu.cn/include/auth_action.php

提示login_ok

二、制成Shell脚本

这么一长串命令,每次都输一遍肯定特别麻烦。我们可以制成Shell脚本。

1
vi network #创建名为network的脚本

然后将上面的curl命令输进去,:wq保存。

1
chmod 755 network #设置权限为可执行
1
ls -l network #检查一下文件权限

如果设置成功,文件权限应为-rwxr-xr-x。现在,我们就可以运行脚本了:

1
./network

三、扔进~/bin

1
2
3
mkdir bin
mv network bin
network

bin目录一般是默认的PATH环境变量,扔进去即可直接输入network运行。如果PATH变量不包含此目录,我们可以修改.bashrc文件:

1
vi .bashrc

在最下方加入export PATH=~/bin:"$PATH",保存:

1
. .bashrc #重新读取.bashrc

现在,我们即可输入network直接连接校园网了。

参考文献

“编写第一个 Shell 脚本”. https://billie66.github.io/TLCL/book/zh/chap25.html (2017/10/14)