Python 實現斷網自動重連

2021-07-25 03:35:21 字數 3964 閱讀 1061

來所裡一年了,終於有了一台電腦,是小樂師兄淘汰給我的,很開心,因為用它程式設計智商有加成。但是問題就來了,我平時人在懷柔啊,怎麼才能用所裡的電腦搞科研呢?遠端自然是很簡單的,但是所裡每天晚上三天鍾會可恥地斷一次網,而且斷網必須要登入才能重連,為了不麻煩師兄,同時也讓我週末回來顯得很忙的樣子,我開始鼓搗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:[email protected]')

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:[email protected]')

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...