实验室电脑自动登陆上网

一、网上找到的方法

参考自
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=utf8
import urllib,urllib2
import base64
import os , subprocess

username = '你的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 True

def 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 response

def 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任务计划设置

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值