博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验室电脑自动登陆上网
阅读量:3917 次
发布时间:2019-05-23

本文共 3053 字,大约阅读时间需要 10 分钟。

一、网上找到的方法

参考自

http://yangyingming.com/article/380/

在家呆了很长时间。需要使用的资料在公司电脑上没有传到邮箱里,怎么办呢,只能委托公司的前台小哥哥帮我在公司电脑上打开太阳花远程控制了。但是,公司的电脑半夜会断网!,断网之后,远程控制就断了,怎么办,我只能像师兄那样在公司电脑上搞一个自动登录上网,只要公司电脑能上网,我就能远程控制公司电脑。师兄的方法是在电脑上搞了一个定时器,每过一段时间就自动登录。向师兄要来了他的自动登录脚本,是什么什么windows批处理文件好像。我也不知道咋用,但是又不想麻烦师兄,得嘞,自己动手,丰衣足食,我在网上找了一个python脚本。

思路

写一个死循环一直 ping 8.8.8.8,如果 ping 通说明正连着网,进入下一次循环;如果 ping 不通,说明断网了,尝试登陆校园网,然后进入下一次循环。即:

ping 8.8.8.8 —> 如果已联网 —> 继续 ping 8.8.8.8 —> …… —> 如果断网 —> 尝试登陆 —> 登陆成功 —> ping 8.8.8.8 ……

脚本写好后放到 windows 的计划任务里设置开机启动。

或者在linux中设置 crontab,一样的道理。

技术点

利用 python 进行 post 请求

base64加密解密
利用 subprocess 创建子进程

碎碎念

脚本在后台运行cpu占用大概为 1~2%,内存占用大概为 4M 左右,完全可以接受。

当然如果你有条件的话,运行在内网服务器上也是极好的,顺便可以连个路由器出来,这样实验室的小伙伴能用不断网的wifi了……

如果没有服务器,树莓派+路由器的组合也是一种解决方案~

当然最省钱的就是我这种把脚本直接跑在自己机器上的……

代码

#coding=utf8import urllib,urllib2import base64import os , subprocessusername = '你的base64加密过的校园网用户名'password  = '你的base64加密过的校园网密码'url = 'https://login.xxxx.edu.cn/auth_action.php'   # 校园网登陆验证地址def isConnecting():    # Judge network connect status    res = subprocess.call('ping 8.8.8.8 -n 1',shell=True)    return False if res else Truedef Signon():    # Sign on    data = {        'action' : 'login',        'username' : base64.decodestring(username),        'password' : base64.decodestring(password),        'ac_id' : 1,        'save_me' : 0,        'ajax' : 1,    }    data = urllib.urlencode(data)    response = urllib2.urlopen(url,data=data)    response = response.read().decode('utf8')    print responsedef main():    while True:        if not isConnecting():            # no-connect status, attempt sign on            Signon()if __name__=="__main__":    try:        main()    except Exception,e:        print '[ERROR]:',        print e

设置任务计划

在 windows 中设置 任务计划 以便在某些情况下自动运行脚本。

比如现在我想在 连接 WIFI 时自动运行校园网登陆的脚本。

实现的思路是在任务计划中创建一个新的任务,在新任务的触发器中设置 发生事件时 运行脚本,连接 WIFI 的事件是 WLAN-AutoConfig > Operational 的 8001 事件。

可按如下设置创建新任务:

常规页面:

在这里插入图片描述
触发器页面:
在这里插入图片描述
编辑触发器(电脑启动时运行):
在这里插入图片描述
编辑触发器(将触发器设置成上面的电脑启动时运行或者这里的连接无线网络时运行,均可):
在这里插入图片描述
操作页面:
在这里插入图片描述
编辑操作:
在这里插入图片描述
条件页面:
在这里插入图片描述
设置页面:
在这里插入图片描述
但是,我在按照这些一步步设置的时候,在最后出现了一个对话框,要求输入运行任务的用户账户信息,我搞了半天,也没能找到账户的密码。恩,我看了下之所以会出现这么个东西是因为前面的常规页面,选中了”不管用户是否登陆都要运行“。将这个选成上面的”只在用户登录时运行“就不会出现这个了。

然后,当我断掉公司电脑的网络,想试一下,发现远程控制就真的断了。大概没有成功。没有成功的原因可能是:

1)选成”只在用户登录时运行“这个操作本身就是错的??

2)前面为了找账户密码的时候,进行了一些操作,没有改回去,操作如下:

将C:/windows/system32中的osk.exe剪切了出来;将C:/windows/system32中的osk.exe重命名为了cmd.exe

3)代码本身里的网址啊什么的写的不正确。

二、师兄的方法

在上次试了网上的方法,通过把”不管用户是否登陆都要运行“换成”只在用户登录时运行“,就可以不用输入用户名和密码了,但是这很有可能就是上次失败的原因。这次还是用”不管用户是否登陆都要运行“,当然用户名还是dell-PC\dell,密码就是我的锁屏密码(不得不说我太蠢了)。

这次用的是师兄给的.bat脚本。
在这里插入图片描述

1. 下载安装curl

1)下载curl网址:https://curl.haxx.se/download.html

进入curl官网下载合适的版本,我这里下载的是Windows 64位的curl.
在这里插入图片描述
2)解压下载的curl

3)可以给Windows增加curl命令的环境变量,为系统变量增加CURL_HOME环境变量,给PATH环境变量加上%CURL_HOME%;

在这里插入图片描述
在这里插入图片描述
4)将刚才设置环境变量用的路径下的curl.exe文件复制到复制到C:\Windows\System32路径下面

5)打开cmd ,输入 curl --help,显示入下,就代表成功了。

在这里插入图片描述

2. .bat脚本

.bat脚本,直接右键点击“编辑”就能打开,并修改。点击“编辑”,就会用记事本打开了。

.bat脚本如下:

@echo off curl http://2.2.2.2/ac_portal/login.php -X POST -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -d "opr=pwdLogin&userName=用户名&pwd=密码&rememberPwd=0"

3. windows任务计划设置

和上面网上找到的那种方法就大同小异了。

转载地址:http://votrn.baihongyu.com/

你可能感兴趣的文章
.NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记...
查看>>
如何用 Blazor 实现 Ant Design 组件库?
查看>>
DotNetCore Web应用程序中的Session管理
查看>>
从业务需求抽象成模型解决方案
查看>>
Kafka
查看>>
Magicodes.IE 2.2发布
查看>>
应用交付老兵眼中的Envoy, 云原生时代下的思考
查看>>
.NET 开源项目 StreamJsonRpc 介绍[上篇]
查看>>
.NET Core微服务开发选项
查看>>
探讨NET Core数据进行3DES加密或解密弱密钥问题
查看>>
Vue 3拖更,尤雨溪介绍最新进展
查看>>
如何利用.NETCore向Azure EventHubs准实时批量发送数据?
查看>>
WPF 框架全构建环境虚拟机硬盘分享
查看>>
ABP框架 v3.0 已发布!
查看>>
使用.Net Core实现的一个图形验证码
查看>>
.NET 开源项目 StreamJsonRpc 介绍[中篇]
查看>>
Blazor带我重玩前端(三)
查看>>
基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)
查看>>
实现业务数据的同步迁移 · 思路一
查看>>
龙芯开源社区上线.NET主页
查看>>