国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python遠程登錄代碼

2020-01-04 18:06:55
字體:
來源:轉載
供稿:網友

因為 python 已內建了一個 pop3 的函式庫,所以我們直接用它來完成郵件的下載和處理。事實上, 如果我們不用 poplib 的話,我們還是可以完成那個例子中的所有作業:就是通過模擬 telnet的協定。

在python中有一個telnetlib,它的作用就是建立一個通到主機的telnet連線實體,然后向主機傳送命令(就像用鍵盤輸入一樣)并從該連線接收數據。利用它,我們可以把示范1的所有內容從"人-機'交流變成'機-機'交流,這樣也可以做到處理pop3郵箱的工作。不過既然我們已經試過了pop3,這一次可以試用真的telnet埠23做些好玩的東西。

以下是代碼片段:1#telnetdo.py2#!/usr/bin/envpython34deftelnetdo(HOST=None,USER=None,PASS=None,COMMAND=None):#定義一個函數,這將要用它會很容易5importtelnetlib,sys67ifnotHOST:#如果沒有給出所要的資料,則要求用戶輸入8try:9HOST=sys.argv[1]#記得吧,序列是從0開始數的,而sys.argv[0]會是你程式的名字10USER=sys.argv[2]11PASS=sys.argv[3]12COMMAND=sys.argv[4]13except:14print"Usage:telnetdo.pyhostuserpass'command'"15return1617msg=['Debugmesages:/n']#這個用來存起所有從主機傳回的訊息,作除錯時很有用1819tn=telnetlib.Telnet()#準備一個telnet連線的實體20try:21tn.open(HOST)#連接端綁定到主機HOST去22except:23print"Cannotopenhost"24return2526msg.append(tn.expect(['login:'],5))#等待主機傳回含有'login:'字符的訊息,等候時限為5秒27tn.write(USER+'/n')#向主機送出字串USER+'/n',如USER是28#'pcheung'則等于'pcheung/n'29ifPASS:#就像是在鍵盤打入一樣。30msg.append(tn.expect(['Password:'],5))#如果有password要打的話就送出密碼字串,31tn.write(PASS+'/n')#但首先要等主機傳回含有'Password:'字樣的訊息3233msg.append(tn.expect([USER],5))#因為通常登入后主機會顯示出登入者名稱,我們在主機回應中找這34#樣的字符,如有的話則代表登入成功了35tn.write(COMMAND+'/n')#向主機發出指令36msg.append(tn.expect(['%'],5))#等5秒,如果程式完成了一般我們會收到37#shellprompt吧,假設為'%'38tn.close()#關閉連線39deltn40returnmsg[len(msg)-1][2]#把收到的訊息通通傳回去。41#(注意msg中第2個元素才是真的訊息,42#其他是附加資訊。4344if__name__=='__main__'#這是python常用的技巧:如果telnetdo.py程式45#是從commandprompt46#引發的話則__name__的內容為__main__,相反47#如果是從別的程式用importtelnetdo的話則48#__name__會變成'telnetdo'49printtelnetdo()#這樣寫的好處是從此telnetdo會成為你的擴展50#模組,你可以在別的程式中51#用telnetdo.telnetdo(HOST,USER,PASS,COMMAND)來調用它!

這個程式用法如下:

以下是代碼片段:>chmod+xtelnetdo.py>telnetdo.py'somehost''glace''xxxxxx''ls-lF'(0,,'/015/012/015/012Linux(somehost)/015/012/015/015/012/015login:')(0,,'Password:')(0,,'/015/012YupRelease2.6somehost/015/012Lastlogin:WedMar618:21:01GMT2002byUNKNOWN@xxx.xxx.xxx.xxxyouhavemail/015/012somehost:glace%')total320-rw-r--r--1glaceuser139788Feb817:54PQR2.1.txtdrwxr-xr-x3glaceuser4096Feb1016:45mytts/drwxr-xr-x3glaceuser4096Jan2919:03sample/drwxr-xr-x2glaceuser4096Jan616:38tex/drwxr-xr-x2glaceuser4096Sep52001tmp/drwxr-xr-x2glaceuser29Feb232001tools/drwxr-xr-x2glaceuser26Feb618:43trash/somehost:glace%可以看到執行的結果和一些附加的資訊。這就是遠端執行程式了。就算沒有rsh,照用可也。哈,很方便吧。不過你應該留意到了程式執行時只等候了5秒,就是說如果你要向主機發出像'find.-namexxx-print'這樣的命令應該等不到執行完這個telnetsession就會被關閉了。不過仔細想一下,這要緊嗎?我們現在所能做到的和真正人手telnet的差別并不大,想一想你會怎樣解決長時間執行的問題?沒錯,就是'nohup'和背景作業了。就是說只要把程式呼叫改成:telnetdo.py'apocal''pcheung''xxxxxx''nohupmyprogram_or_script&'就行了。如此一來,就算對方主機的shellprompt是'>'或是'>>>'都沒有關系了。

(注意安全性并非是這類范例程式的著重點,因此并不建議在實際工作中用它.)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色达县| 河东区| 海兴县| 南昌县| 刚察县| 华坪县| 伊金霍洛旗| 灌阳县| 大同县| 齐齐哈尔市| 共和县| 乳源| 固安县| 会泽县| 邵武市| 磐安县| 安陆市| 菏泽市| 军事| 松潘县| 永春县| 沧州市| 舞钢市| 通渭县| 丰镇市| 清新县| 彰化市| 扎兰屯市| 三台县| 呈贡县| 旅游| 南澳县| 绿春县| 长沙市| 遵义县| 永顺县| 北京市| 襄汾县| 阿坝县| 叙永县| 奉节县|