來所裡一年了,終於有了一台電腦,是小樂師兄淘汰給我的,很開心,因為用它程式設計智商有加成。但是問題就來了,我平時人在懷柔啊,怎麼才能用所裡的電腦搞科研呢?遠端自然是很簡單的,但是所裡每天晚上三天鍾會可恥地斷一次網,而且斷網必須要登入才能重連,為了不麻煩師兄,同時也讓我週末回來顯得很忙的樣子,我開始鼓搗python自動聯網。
先從最基本的功能說起:傳送post給伺服器。這裡你需要知道你登入的時候到底傳送了什麼,大概看一下登入頁面的**:
可以發現,function do_login()
if(pass=="")
//密碼md5加密傳送
var pass1=hex_md5(pass);
var pass2=pass1.substr(8,16);
var drop=(document.form1.drop.checked==true)?1:0;
var data="username="+uname+"&password="+pass2+"&drop="+drop+"&type=1&n=100";
var con=postdata("/cgi-bin/do_login", "post", data);
//alert(con);
var p=/^[\d]+$/;
if(p.test(con))
else
if(location.search != "")
else
settimeout("jump_to(url)", 1000);
return;
} switch(con)
}
var data="username="+uname+"&password="+pass2+"&drop="+drop+"&type=1&n=100";
這一句,就是post的內容了,當然密碼是md5加密過後的,這個隨便找找也沒有問題的
接下來是
def ping(user,password):
fnull = open(os.devnull, 'w')
return1 = subprocess.call('ping 61.135.169.125', shell = true, stdout = fnull, stderr = fnull)
if return1:
print_ts('internet not connected!')
print_ts('connecting now...')
postlogin('',user,password)
ping(user,password)
else:
print_ts('internet connected!')
fnull.close()
最後是定時執行,需要用到python的time模組
def print_ts(message):
print "[%s] %s"%(time.strftime("%y-%m-%d %h:%m:%s", time.localtime()), message)
def run(interval,user,password):
print_ts("-"*50)
print_ts ('email:zhangzihao@ict.ac.cn')
print_ts ('')
print_ts("check the internet every %s seconds."%interval)
print_ts("-"*50)
while true:
try:
time_remaining = interval-time.time()%interval
time.sleep(time_remaining)
print_ts("checking internet connection...")
ping(user,password)
print_ts("next check will start after %s seconds"%interval)
except exception, e:
print e
最後,附一下完整**
#!/usr/bin/env python
#coding=utf8
import urllib
import urllib2
import hashlib
import subprocess
import os
import time
def getpass(password):
pass1 = hashlib.md5()
pass1.update(password)
pass2 = pass1.hexdigest()
return pass2[8:24]
def postlogin(url,user,password):
pass2 = getpass(password)
post_data =
post_data = urllib.urlencode(post_data)
req = urllib2.request(url, post_data, headers)
response = urllib2.urlopen(req)
def ping(user,password):
fnull = open(os.devnull, 'w')
return1 = subprocess.call('ping 61.135.169.125', shell = true, stdout = fnull, stderr = fnull)
if return1:
print_ts('internet not connected!')
print_ts('connecting now...')
postlogin('',user,password)
ping(user,password)
else:
print_ts('internet connected!')
fnull.close()
def print_ts(message):
print "[%s] %s"%(time.strftime("%y-%m-%d %h:%m:%s", time.localtime()), message)
def run(interval,user,password):
print_ts("-"*50)
print_ts ('email:zhangzihao@ict.ac.cn')
print_ts ('')
print_ts("check the internet every %s seconds."%interval)
print_ts("-"*50)
while true:
try:
time_remaining = interval-time.time()%interval
time.sleep(time_remaining)
print_ts("checking internet connection...")
ping(user,password)
print_ts("next check will start after %s seconds"%interval)
except exception, e:
print e
# 設定聯網檢查時間間隔
interval = 600
# 設定使用者名稱
user = 'type your username here'
# 設定密碼
password = 'type your password here'
# 執行
run(interval,user,password)
Websocket實現斷網重連
websocket實現斷網重連 如下 定義的變數如下 var lockreconnect false 避免重複連線 var wsurl ws localhost 8080 websocket 111 websocket鏈結 var ws websocket物件 首先判斷是否支援websocket i...
PHP連線MySql閃斷自動重連的方法
使用php作為後台執行程式 例如簡訊 在cli模式下執行php,php需要連線mysql迴圈執行資料庫處理。當mysql連線閃斷時,之後迴圈的執行將會失敗。我們需要設計乙個方法,當mysql閃斷時,可以自動重新連線,使後面的程式可以正常執行下去。1.建立測試資料表 create table user...
TCP自動重連
每2s發一次心跳包 public thread thread public boolean threadrunning true 活動銷毀置為false private boolean islogined false 啟動執行緒 thread new thread tpcconnectcheckin...