亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3925 | 回復(fù): 0
打印 上一主題 下一主題

python登錄并校驗(yàn)是否成功 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-11-11 16:40 |只看該作者 |倒序?yàn)g覽

為了監(jiān)控網(wǎng)站運(yùn)行是否正常,寫(xiě)了一個(gè)腳本來(lái)檢查網(wǎng)站運(yùn)行的情況。
主要是自動(dòng)登錄并且校驗(yàn)登陸后的內(nèi)容來(lái)判斷網(wǎng)站web服務(wù)和數(shù)據(jù)庫(kù)服務(wù)是否正常。
代碼如下:
#!/usr/bin/env python
# -*- coding: gbk -*-
import urllib
import urllib2
import ClientCookie
import re
import string
import time
import socket
timeout=10
server="www.juyimeng.com"
loginurl="http://"+server+"/login.php"
v_account=[
{"name":"user1","pass":"pass1","utype":"1","vkey":"用戶1"},
{"name":"user2","pass":"pass2","utype":"2","vkey":"用戶2"}
]
def fes_write(s):
    '''
    控制輸出信息的顯示
    '''
    print s
def get_response(x):
    '''
    登錄,取得登陸后的頁(yè)面html代碼,用來(lái)判斷結(jié)果
    '''
    fes_write("login for "+ x["name"])
    eform = {'username':x["name"], 'password':x["pass"], 'usertype':x["utype"]}
    qstring = urllib.urlencode( eform )
    #print qstring
    try:
        request = urllib2.Request( loginurl , qstring )
        response = ClientCookie.urlopen( request )
        return string.split( response.read(),"\n")
    except Exception, e:
        fes_write(e)
        return "error"
def verify_info(k,l):
    '''
    校驗(yàn)信息是否正確
    '''
    for line in l:
        if k.match(line):
            return True
            break
    return False
def verify_all():
    '''
    主程序,進(jìn)行校驗(yàn)
    '''
    if timeout!=0:
        socket.setdefaulttimeout(timeout )
    fes_write("socket time out: " + str(socket.getdefaulttimeout()))
    success_num=len(v_account)
    for x in v_account:
        vkey=re.compile('.*'+x["vkey"]+'.*')
        if verify_info(vkey,get_response(x))==True:
            success_num=success_num-1
            fes_write(x["name"]+ " login success!")
        else:
            fes_write("error when " + x["name"]+ "login!")
    if success_num==0:
        fes_write("all things runs well!")
    else:
        e_notify()
        fes_write("some thing is wrong!")
        
def e_notify():
    '''
    出錯(cuò)之后的notify操作
    '''
    pass
if __name__ == '__main__':
    verify_all()
v_account定義了多個(gè)賬戶,因?yàn)橛脩艨赡懿煌,后臺(tái)機(jī)制不一樣,所以用多個(gè)用戶來(lái)登錄
request = urllib2.Request( loginurl , qstring ) 用的是post的方法,也可以用get的方法。
ClientCookie,一個(gè)python的擴(kuò)展包,安裝請(qǐng)
參考這里
2個(gè)v_account里的vkey用來(lái)和登陸后的頁(yè)面上的信息來(lái)驗(yàn)證是否正常登錄的
socket.setdefaulttimeout用來(lái)設(shè)置建立socket連接的超時(shí)設(shè)置,原來(lái)沒(méi)有設(shè)置,程序會(huì)一直等待回應(yīng)(如果服務(wù)器端做了最長(zhǎng)運(yùn)行時(shí)間會(huì)好點(diǎn)),設(shè)置了10秒,如果一個(gè)登錄程序10秒還沒(méi)有成功,基本上就失敗了。
e_notify:可以自己設(shè)置一些notify的方法,比如郵件,短消息等。


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/60589/showart_2091811.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP