shell脚本登录dlut-lingshui并设置开机连网和断网重连

2024-01-25 07:04

本文主要是介绍shell脚本登录dlut-lingshui并设置开机连网和断网重连,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文提供了一个用于无图形界面linux系统自动连接dlut-lingshui校园网的shell脚本,并提供了设置开机联网以及断网重连的详细操作步骤。本文的操作在ubuntu 22.04系统上验证有效,在其他版本的linux系统上操作时遇到问题可以自行百度。

1. 获取校园网认证界面的用户名和密码

校园网认证账号是自己的学号,认证密码是加密后的256位密文,这个密文存储在浏览器cookie中,我们可以通过电脑图形界面辅助获取。

1.1 获取密码步骤(以谷歌浏览器为例)
  1. 打开浏览器,按“F12”进入开发者工具
  2. 地址栏输入“http://auth.dlut.edu.cn/eportal/InterFace.do?method=getOnlineUserInfo”并回车(这个网址并不唯一,总之能访问到和校园网登录沾边的页面就行)
  3. 依次在开发者工具中点击“网络”,“Interface…method=getOnlineUserInfo”,“Headers”
  4. 在“Cookie”一栏中找到储存的密码(密码以密文的形式存储)

2. 将账号密码填入shell脚本并保存

将下面这段代码中的账号密码替换为你自己的,并记住保存的路径。本文保存的路径为

/home/ubuntun/system_script/dlut_network.sh

#!/bin/bash
captive_server='http://www.google.cn/generate_204'
url_index='http://123.123.123.123/'
user_agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'id="这里输入账号"
passwd="这里输入密文"login() {login_page_url=$(curl -s "${url_index}" | grep -o '<script>[^<]*</script>' | sed -e "s/<script>\(.*\)<\/script>/\1/" | grep -o "'.*'" | sed -e "s/'//g")login_url=$(echo ${login_page_url} | awk -F \? '{print $1}')login_url="${login_url/index.jsp/InterFace.do?method=login}"query_string=$(echo ${login_page_url} | awk -F \? '{print $2}')query_string="${query_string//&/%26}"query_string="${query_string//=/%3D}"login_post_data="userId=$1&password=$2&service=&queryString=${query_string}&operatorPwd=&operatorUserId=&validcode=&passwordEncrypt=true"if [ -n "${login_url}" ]; thenauth_result=$(curl -d "${login_post_data}" -H "Accept: */*" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh\;q=0.9" -H "Proxy-Connection: keep-alive" -H "Referer: ${login_url}" -H "User-Agent: ${user_agent}" "${login_url}")# echo "${auth_result}"fi
}for ((i=0; i<5; i++)) #5次获取code,获取失败说明网络不通
docode=$(curl -I ${captive_server} -s | grep "HTTP/1.1" | awk '{print $2}')if [ -z "${code}" ]; thensleep 2selsebreakfi
done
if [ -z "${code}" ]; thenecho 连接失败,请检查:$'\n'1. 校园网是否正常/是否插好网线$'\n'2. 电脑代理是否正确设置(可以尝试关闭代理)exit 1;
fi
for ((i=0; i<5; i++)) #5次连接校园网,连接失败说明账号密码不对或此脚本已失效
doif [ "${code}" = "200" ]; thenecho${i}次尝试连接login ${id} ${passwd}elif [ "${code}" = "204" ]; thenecho 连接成功exit 0;fisleep 2scode=$(curl -I ${captive_server} -s | grep "HTTP/1.1" | awk '{print $2}')
done
echo 连接失败,请检查用户信息是否正确

3. 为脚本赋予权限

chmod +x /home/ubuntun/system_script/dlut_network.sh

4. 设置开机自动联网&断网自动重连

本文借助crontab工具实现开机自动联网和断网自动重连,crontab的用法可以自行百度。
以下是配置过程:

  1. 安装curl
sudo apt install curl
  1. 命令行输入crontab -e,向打开的文件追加以下两行并保存
@reboot export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntun/system_script/dlut_network.sh
*/10 * * * * export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntun/system_script/dlut_network.sh

第一行代表开机时运行一次脚本(开机启动)
第二行代表每隔十分钟运行一次脚本(每十分钟检查网络,断网重连)

Q&A:

Q: 密码加密后的密文和设备硬件属性有关吗?
A: 不同设备获取到的密文不同,密文应该和硬件属性有关,最好在自己设备的图形界面获取密文。(换设备好像也没什么问题)

Q: 设置了crontab后脚本依然不生效,我该如何调试?
A: 可以从以下几个方面逐一排查:

  1. 检查cron服务是否正常 service cron status
  2. 检查脚本权限设置是否正常
  3. 将程序运行的输出信息保存在日志中进一步分析。
    要把程序返回信息输出到某个文件中,只需在crontab的计划任务后面追加 >> /path/to/your/logfile.log 2>&1,例如:
@reboot export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntun/system_script/dlut_network.sh >> /home/ubuntun/system_script/aaa.log 2>&1
*/10 * * * * export PATH=/usr/bin:/bin:/usr/local/bin && /home/ubuntun/system_script/dlut_network.sh >> /home/ubuntun/system_script/bbb.log 2>&1

Q: 为什么我可以使用curl,但脚本日志输出却提示我curl不存在?
A: 如果你使用了anaconda或其他虚拟环境管理器,并默认激活了base环境,那你使用的curl很有可能是虚拟环境中的,这种情况下有两种解决办法。
为什么我可以使用curl,但脚本日志输出却提示我curl不存在?
一种解决方法 是使用which curl查看当前curl的路径,并export这个路径:

crontab -e
#在PATH后添加这个路径,用冒号分隔
*/10 * * * * export PATH=/usr/bin:/bin:/usr/local/bin:/home/ubuntun/anaconda3/bin && /home/ubuntun/system_script/dlut_network.sh >> /home/ubuntun/system_script/bbb.log 2>&1

(推荐)另一种解决方法 是在系统安装curl(会自动安装在/usr/bin路径下):

sudo apt install curl

Q: */10 * * * * 是什么意思?
A: 请自行百度crontab的使用方法

这篇关于shell脚本登录dlut-lingshui并设置开机连网和断网重连的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642451

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

centos6一键安装vsftpd脚本

centos6一键安装vsftpd脚本 手动安装vsftpd参考教程:Centos下安装Vsftpd的图文教程 vsftpd脚本功能: 1.安装 (命令执行:sh xxx.sh)2.添加ftp用户 (命令执行:sh xxx.sh add)3.卸载vsftpd (命令执行:sh xxx.sh uninstall) 测试环境:centos6 x64 centos6 x86(测试centos7以

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

Tomcat性能参数设置

转自:http://blog.csdn.net/chinadeng/article/details/6591542 Tomcat性能参数设置 2010 - 12 - 27 Tomcat性能参数设置 博客分类: Java Linux Tomcat 网络应用 多线程 Socket 默认参数不适合生产环境使用,因此需要修改一些参数   1、修改启动时内存参数、并指定J

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到