『壹』 如何用python開發一個ssh客戶端工具
1)通過paramiko的ssh模塊連接指定主機;
2)通過SSHClient.exec_command在遠程主機上執行命令;
3)通過exec_command返回的stdout,stdin,stderr進行交互;
4)保存成功連接的主機信息(session),可以通過ls命令查看,sessionid命令,直接啟動新連接;
5)可在windows和linux下運行,寫程序時需要注意他們的差別。
代碼ssh.py
#!/usr/bin/python
#-*-coding:utf-8-*-
importos,sys
importparamiko
importthreading
importplatform
curr_ssh=None
curr_prompt=">>"
#使用說明
defprintUsage():
print"!ls:listsessions."
print"!sessionid:connectsession."
print"!connhostuserpassword:connecthostwithuser."
print"!exit:exit."
#連接
defconn(ip,username,passwd):
try:
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
print"Connectto",ip,"with",username
globalcurr_prompt
curr_prompt=username+"@"+ip+">>"
returnssh
except:
returnNone
#載入以前的連接信息
sessions=[]
defloadSessions():
globalsessions
try:
f=open("sessions")
sessions=f.readlines()
f.close()
except:
pass
#執行本地命令,ssh.py的命令
defexe_cmd_local(cmd):
if(cmd=="!ls"):
loadSessions()
globalsessions
i=0
print"Sessions:"
forsinsessions:
print"[%d]%s"%(i,s)
i+=1
else:
vals=cmd.split('')
if(vals[0]=="!session"):
id=(int)(vals[1])
if(id<len(sessions)):os_name="platform.system()"new_console_cmd=""if(os_name="=""linux"):="".=""ssh.py="""=""+=""sessions[id]+"""=""elif(os_name="=""windows"):=""sessions[id]=""os.system(new_console_cmd)=""else:=""print="""didn't=""hava=""sessoin=""",vals[1]=""elif(vals[0]="="!conn"):"global=""curr_ssh=""f="open("sessions","a")"line="vals[1]+"""+vals[2]+"="""+vals[3]+" "=""f.write(line)=""f.close()=""#在ssh連接的主機上執行命令=""def=""exe_cmd_ssh(ssh,cmd):=""if(ssh="="none):=""connect=""to=""a=""server.=""use=""'!conn'=""please."=""return=""stdin,=""stdout,=""stderr="ssh.exec_command(cmd)"#stdin.write("y")=""#簡單交互,輸入=""『y』=""#屏幕輸出=""stdout.read()=""stderr.read()=""#入口函數=""if=""__name__="='__main__':"loadsessions()=""if(len(sys.argv)="=4):"printusage()=""while=""true:=""cmd="raw_input(curr_prompt)"if(len(cmd)="=0):"continue=""if(cmd="=""!exit"):=""if(curr_ssh=""!="None):"curr_ssh.close();=""break=""if(cmd[0]="="'!'):=""exe_cmd_local(cmd)=""exe_cmd_ssh(curr_ssh,cmd)<=""pre="">
『貳』 Python網路編程5-實現DHCP Client
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議),前身是BOOTP協議,是一個區域網的網路協議,使用UDP協議工作,統一使用兩個IANA分配的埠:67(伺服器端),68(客戶端)。主要作用是集中的管理、分配IP地址,使client動態的獲得IP地址、Gateway地址、DNS伺服器地址等信息。
option欄位
DHCP報文中的Options欄位可以用來存放普通協議中沒有定義的控制信息和參數。如果用戶在DHCP伺服器端配置了Options欄位,DHCP客戶端在申請IP地址的時候,會通過伺服器端回應的DHCP報文獲得Options欄位中的配置信息。
獲取IP地址過程
實驗使用的linux 主機由兩個網路介面,其中ens33使用DHCP獲取IP地址,ens37使用靜態IP地址;因此需要使用ens33來發送數據包。
Change_MAC.py用於MAC地址與Bytes類型相互轉換。
DHCP_Discover.py用於發送DHCP Discover報文;其中GET_MAC.py見ARP章節。
DHCP_Request.py用於發送DHCP Request報文。
DHCP_FULL.py用於完成DHCP Client與DHCP Server的報文交互
Wireshark對遠程linux主機抓包,結果如下
客戶端以廣播發送DHCP Discover包,其中報文操作類型為1(請求報文),DHCP客戶端的MAC地址設置為00:0c:29:03:a1:08,option53設置報文類型為Discover,option55(請求選項列表)中包含請求的參數。
伺服器以單播向客戶端回復信息,其中報文操作類型為2(應答報文),分配給客戶端的IP為192.168.160.146,option 53設置報文類型為offer,Option 54設置伺服器標識為192.168.160.254,其他option為客戶端請求列表的應答。
值得注意的是,交互的四個報文中Transaction ID均為0x00000000,表明是同一次DHCP交互報文。
『叄』 學Python畢業後可以做什麼
Python簡單易學,入門門檻低,而且可以跨平台使用,一處編寫處處運行,因此從開發者的視角來說非常高效。
其穩定性和安全性也在大型實際項目上得到了驗證,一些著名的網站或客戶端應用都是用Python來實現的,例如 YouTube,豆瓣,BitTorrent 和 Dropbox等。
Python的應用領域
1. Web開發
Python可以快速創建Web應用,這得益於其強大的基礎庫和豐富的網路框架,例如著名的Django,Flask,Tonardo,Web.py 等。
通過使用這些Web框架,我們開發Web網站會更加安全與便利,在天下武功唯快不破的時代,何樂而不為呢。
2. 游戲開發
Python也能用來開發互動性的游戲。PySoy可以提供3D引擎,而PyGame則可以提供了開發一款游戲的基本功能和庫支持。例如 Civilization-IV,Disney』s Toontown Online,Vega Strike 等游戲都是通過Python來開發。
在網路游戲開發中,Python也有很多應用,相比Lua而言,Python 有更高階的抽象能力,可以用更少的代碼描述游戲業務邏輯。
3. 機器學習與人工智慧
機器學習和人工智慧是當下最熱的話題,Python 在人工智慧領域內的機器學習、神經網路、深度學習等方面,都是主流的編程語言。原因至少有以下三點:
· 目前世界上優秀的人工智慧學習框架,比如 Google 的 TransorFlow(神經網路框架)、FaceBook 的 PyTorch(神經網路框架)以及開源社區的 Karas 神經網路庫等,都是用 Python 實現的;
· 微軟的 CNTK(認知工具包)也完全支持 Python,並且該公司開發的 VS Code,也已經把 Python 作為第一級語言進行支持。
· Python 擅長進行科學計算和數據分析,支持各種數學運算,可以繪制出更高質量的 2D 和 3D 圖像。
如今AI 時代的來臨,Python 作為 AI 時代頭牌語言的位置,已經確定。
4. 科學計算與數據可視化
自1997 年,NASA 就大量使用 Python 進行各種復雜的科學運算,為 Python 積累了豐富的科學運算庫。
並且,和其它解釋型語言(如 shell、js、PHP)相比,Python 在數據分析、可視化方面有相當完善和優秀的庫,例如 NumPy、SciPy、Matplotlib、pandas 等,這可以滿足 Python 開發者高效編寫科學計算程序。
同時基於Matplotlib,Seaborn,又能方便繪制圖形,能讓數據可以更直觀的表現。
5. 桌面軟體
Python可用於桌面應用程序編程。它提供了可用於開發用戶界面的庫,如Tkinter,wxPython和pyQT等,可用於在多個平台上創建桌面應用程序。
Python人才需求逐年增加,從市場整體需求來看,Python在招聘市場上的流行程度也是在逐步上升的,工資水平也是水漲船高。據統計Python平均薪資水平在12K,隨著經驗的提升,薪資也是逐年增長。
目前初級Python工程師薪資待遇就達10-15K,而隨著開發年限的增加,Python開發者薪資呈直線上升的變化趨勢,工作8年的Python薪資攀升至25K左右。
4、Python崗位有哪些呢?
主要的崗位有這些:
Python全棧開發工程師(10k-20K)
Python運維開發工程師(15k-20K)
Python高級開發工程師(15k-30K)
Python大數據工程師(15K-30K)
Python機器學習工程師(15k-30K)
Python架構師(20k-40k)
學習Python的程序員,除去Python開發工程師、Python人工智慧工程師、Python自動化測試外,也能夠朝著Python游戲開發工程師、數據分析工程師、Linux運維工程師等方向發展,發展方向較為多元化。
隨著Python的流行,帶動的是它的普及以及市場需求量,所以現在學習Python是個不錯的時機。
『肆』 哪個ftp客戶端是用python寫的
使用Python寫FTP客戶端時,你所需要做的就是導入ftplib模塊,並實例化一個ftplib.FTP類對象,所有的FTP操作(如登陸,傳輸文件和登出等)都要使用這個對象來完成。
以下是操作的基本步驟:
(1) 連接到伺服器
(2) 登陸伺服器
(3) 發出服務請求(文件交互)
(4) 退出