问题来源:一些学校或者企业的网络通常需要连接wifi时在弹出来的登录界面上填写用户名和密码才能连网,比较麻烦,本文用curl编写脚本,在windows10和linux上实现连接wifi时即可上网,并且定时检测网络状态,保持电脑始终联网
用curl写脚本
首先,在win10上,我这里使用谷歌浏览器,保持上网账号为注销状态,连接wifi,弹出上网登录界面,点击F12,接着点Network。 然后在左侧界面填写用户名和密码,点击登录,观察右侧Network界面的变化。 点击login?callback,右侧有一个request url,复制request url
windows上实现自动运行脚本
在自己的工作路径上新建一个.txt文件,里面的内容是curl+“request url”
curl "request url"
requesr url 换成刚刚自己复制的,保存代码,将.txt脚本改成.ps1格式。 紧接着打开windows的任务计划程序点击创建基本任务 具体设置见链接
linux上实现自动运行脚本
有两种方法:
第一种方法:用linux contrab工具
先在终端的指定路径新建一个脚本
$sudo nano connect.sh
将上文的curl脚本复制进来,保存并退出,此时在Linux的终端上用以下指令运行脚本,成功联网
$sudo sh ./connect.sh
接下来打开contrab工具
$contrab -e
进入crontab的任务部署文档,里面用于存放需要定时启动的任务 直接跳到文件的最后一行,在后面添加,其中,/usr/connect.sh更换为自己的路径
"10 02 * * * /usr/connect.sh"
crontab任务表的格式如下:
# 注释行
f1 f2 f3 f4 f5 program
- #开始的行为注释行
- f1表示分钟周期,范围 (0 - 59)
- f2 表示小时周期,范围(0-23)
- f3 表示月份中的日期,范围(1-31)
- f4 表示月份,范围(1-12)
- f5 表示星期中的第几天,范围(0-6)从星期日开始计数,也可使用sun,mon,tue,wed,thu,fri,sat
- program 表示要执行的程序命令行
关于contrab的更详尽介绍见这篇文章
第二种方法:自己写脚本运行
同样新建一个脚本文件
$sudo nano connect.sh
在里面添加内容(这段代码的意思就是检测是否能连上百度,如果不能就重新curl一下网络)
timeout=5
target=www.baidu.com
ret_code=`curl -I -s --connect-timeout $timeout $target -w %{http_code} | tail $
if [ "x$ret_code" = "x200" ]; then
else
这一行添加上文写过的curl "request url"代码
fi
在终端运行一下
$sudo sh ./connect.sh
这里遇到一个问题,最开始运行完代码并不能后发现Ping通百度,在终端上直接ping www.baidu.com也失败 分析原因:没有配置DNS服务器 网上有很多在Linux上配置DNS的方法,附上一个
|