python3 實現多執行緒ssh 批量遠端執行命令

2021-08-26 05:40:28 字數 2131 閱讀 5673

需要模組:paramiko

pip3 install  paramiko
import paramiko

import sys

import getpass

def rcmd (host,password,cmd,port=22,username='root'):

ssh = paramiko.sshclient()

ssh.set_missing_host_key_policy(paramiko.autoaddpolicy()) #

ssh.connect(host,username=username,password=password,port=port)

stdin,stdout,stderr = ssh.exec_command(cmd) #分別儲存,標準輸入,標準輸出,錯誤輸出

data = stdout.read().decode('utf8')

error = stderr.read().decode('utf8')

if data:#如果存標準輸出,列印

print('[%s:out]:\n%s' % (host,data))

if error:

print('[%s:error]:\n%s' % (host,error))

ssh.close()

if __name__ == '__main__':

# rcmd('192.168.4.11','123456','useradd zzz')

password = getpass.getpass()

ips = sys.argv[1]

with open(ips) as fobj: #迴圈匯入位址

for lines in fobj:

ip = lines.strip()

rcmd(ip,password,sys.argv[2])

多執行緒優化版:

import paramiko

import sys

import getpass

import threading

import os

def rcmd (host,password,cmd,port=22,username='root'):

ssh = paramiko.sshclient()

ssh.set_missing_host_key_policy(paramiko.autoaddpolicy()) #

ssh.connect(host,username=username,password=password,port=port)

stdin,stdout,stderr = ssh.exec_command(cmd) #分別儲存,標準輸入,標準輸出,錯誤輸出

data = stdout.read().decode('utf8')

error = stderr.read().decode('utf8')

if data:#如果存標準輸出,列印

print('[%s:out]:\n%s' % (host,data))

if error:

print('[%s:error]:\n%s' % (host,error))

ssh.close()

if __name__ == '__main__':

if len(sys.argv) != 3:

print('%s 引數使用不正確' % (sys.argv[0]))

exit(1)

password = getpass.getpass()

ips = sys.argv[1]

cmd = sys.argv[2]

if not os.path.isfile(ips):

print('找不到檔案!',ips)

exit(2)

with open(ips) as fobj: #迴圈匯入位址

for lines in fobj:

ip = lines.strip()

t = threading.thread(target=rcmd,args=(ip,password,cmd))

t.start()

Python3多執行緒

學習python執行緒 python3 執行緒中常用的兩個模組為 thread threading 推薦使用 thread 模組已被廢棄。使用者可以使用 threading 模組代替。所以,在 python3 中不能再使用 thread 模組。為了相容性,python3 將 thread 重新命名為...

python3 多執行緒

多執行緒簡介 執行緒 thread 也稱輕量級程序,時作業系統能夠進行運算排程的最小單位,它被包涵在程序之中,時程序中的實際運作單位。執行緒自身不擁有資源,只擁有一些在執行中必不可少的資源,但他可與同屬乙個程序的其他執行緒共享程序所擁有的全部資源。乙個執行緒可以建立和撤銷另乙個執行緒,同一程序中的多...

python3 多執行緒,執行緒鎖

python使用多執行緒,不一定執行速度快,這裡引入gil global interpreter lock python直譯器中任意時刻都只有乙個執行緒在執行 gil執行過程 1 設定乙個gil 2 切換執行緒去準備執行任務 runnale就緒狀態 3 執行 4 可能出現的狀態 執行緒任務執行結束 ...