本文共 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.exe3)代码本身里的网址啊什么的写的不正确。
在上次试了网上的方法,通过把”不管用户是否登陆都要运行“换成”只在用户登录时运行“,就可以不用输入用户名和密码了,但是这很有可能就是上次失败的原因。这次还是用”不管用户是否登陆都要运行“,当然用户名还是dell-PC\dell,密码就是我的锁屏密码(不得不说我太蠢了)。
这次用的是师兄给的.bat脚本。1)下载curl网址:https://curl.haxx.se/download.html
进入curl官网下载合适的版本,我这里下载的是Windows 64位的curl. 2)解压下载的curl3)可以给Windows增加curl命令的环境变量,为系统变量增加CURL_HOME环境变量,给PATH环境变量加上%CURL_HOME%;
4)将刚才设置环境变量用的路径下的curl.exe文件复制到复制到C:\Windows\System32路径下面5)打开cmd ,输入 curl --help,显示入下,就代表成功了。
.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"
和上面网上找到的那种方法就大同小异了。
转载地址:http://votrn.baihongyu.com/