測試系統中有一項記錄ssh登入日誌,需要對此進行併發壓力測試。
於是用多執行緒進行python併發記錄
因為需要安裝的一些依賴和模組比較麻煩,指令碼完成後再用pyinstaller打成exe包分發給其他測試人員一起使用。
1.指令碼編寫
# -*- coding: utf-8 -*-
import paramiko
import threading
import time
lt =
def ssh(a,xh,sp):
count = 0
for i in range(0,xh):
try:
ssh = paramiko.sshclient()
ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())
ssh.connect('ip位址',22,'使用者名稱', '密碼')
ssh.close()
print u"執行緒[%s]第[%s]次登入"%(a,i)
if sp != 0:
time.sleep(sp)
count += 1
except:
print u"執行緒異常,已處理"
lt.append(count)
if __name__ == "__main__":
figlet = '''
_____ _____ _
| ___| | _ \ | |
| |__ | |_| | | |
| __| | _ { | |
| | | |_| | | |
|_| |_____/ |_|
www.cppcns.com code by fbi.
'''print figlet
print "認證攻擊次數=執行緒數*每個執行緒認證攻擊次數"
print u"請輸入執行緒數:"
xc = raw_input()
print u"請輸入每個執行緒攻擊次數:"
xh = raw_input()
print u"請輸入每個執行緒延遲時間(秒),0為不休眠:"
sp = raw_input()
try:
print u"預計總共傳送認證攻擊%s次"%(int(xc)*int(xh))
threads =
for j in range(int(xc)):
threads.append(threading.thread(target=ssh,args=(j,int(xh),int(sp),)))
for t in threads:
t.start()
print t.name
t.join()
print lt
count = 0
for count in lt:
count += count
print u"程式執行完畢總共傳送認證攻擊【%s】次" % count
except valueerror,e:
p u"因為程式設計客棧輸入不規範導致程式出現錯誤,請輸入數字"
2.pyinstaller製作exe程式
**pyinstaller後
在根目錄中cmd中執行python setup.py install安裝pyinstaller
安裝完成後執行命令打成exe檔案
python pyinstaller.py -f 檔案路徑
3.執行效果
如圖:本文標題: 對python多執行緒ssh登入併發指令碼詳解
本文位址:
python多執行緒 python多執行緒
通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...
SSH秘鑰對登入
這裡的ssh秘鑰對登入是在linux中配置hadoop時用到的,為了使各個伺服器之間能夠無密碼的相互通訊,但同樣也可用在兩台linux之間的相互通訊,也可用在伺服器管理人員無密碼遠端登入伺服器,這樣做既安全又方便。這裡把兩台伺服器作為實驗物件,一台成為ssh客戶機,一台成為ssh伺服器 大致流程是先...
對python 多執行緒thread的認識
對python 多執行緒thread的認識 標題 class doutulaspider threading.thread headers def init self,args,kwargs self.page que queue 10 self.img que queue 20 defrun se...