python 並行批量管理遠端伺服器 110

2021-08-28 16:29:55 字數 1752 閱讀 7505

#執行方式:python3 指令碼名稱 伺服器的ip位址檔案 "要在遠端伺服器上執行的命令"

import sys

import getpass

import paramiko #基於ssh用於連線遠端伺服器並執行相關操作

import threading

import os

def remote_comm(host,pwd,command):

ssh = paramiko.sshclient()

ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())

ssh.connect(hostname=host,username='root',password=pwd) #連線要用的資訊

stdin,stdout,stderr = ssh.exec_command(command) #命令所對應的輸入,輸出,錯誤

out = stdout.read() #定義輸出

err = stderr.read() #定義錯誤

if out:

print('[%s] out:\n%s' % (host,out.decode('utf8'))) #解碼為utf8然後輸出

if err:

print('[%s] error:\n%s' % (host, err.decode('utf8')))

ssh.close()

if __name__ == '__main__':

if len(sys.argv) != 3: #執行指令碼時輸入的不是三項

print(print('usage: %s ipaddr_file "command"' % sys.argv[0]))

exit(1)

if not os.path.isfile(sys.argv[1]): #指令碼後面的第乙個引數不是檔案

print('no such file:',sys.argv[1])

exit(2)

fname = sys.argv[1]

command = sys.argv[2]

pwd = getpass.getpass()

with open(fname) as fobj:

ips = [line.strip() for line in fobj]

for ip in ips:

t = threading.thread(target=remote_comm,args=(ip,pwd,command))

t.start()

# [root@room9pc01 python百例]# python3 110並行批量管理遠端伺服器.py 1.txt "id zhangsan"

# password:

# [192.168.4.8] out:

# uid=1001(zhangsan) gid=1001(zhangsan) 組=1001(zhangsan)

## [192.168.4.6] out:

# uid=1001(zhangsan) gid=1001(zhangsan) 組=1001(zhangsan)

## [192.168.4.5] out:

# uid=1001(zhangsan) gid=1001(zhangsan) 組=1001(zhangsan)

## [192.168.4.7] out:

# uid=1001(zhangsan) gid=1001(zhangsan) 組=1001(zhangsan)

pssh批量遠端管理

root proxy rpm ivh pssh 2.3.1 5.el7.noarch.rpm 2 修改 etc hosts本地解析檔案 cat etc hosts 192.168.2.100 host1 192.168.2.200 host2 192.168.4.100 host3 3 建立主機列表...

pssh PSSH批量遠端管理主機

安裝 wget tar zxvf pssh 2.3.1.tar.gz cd pssh 2.3.1 python setup.py install 或者yum install y pssh使用yum安裝後,只能使用pssh,但是編譯安裝後會包括其他命令也安裝了 pscp prsync pnuke ps...

使用ansible批量管理遠端伺服器

本地需要管理遠端的一批伺服器,主要執行以下任務 1 將本地的檔案複製到遠端所有伺服器 2 需要在遠端伺服器中執行乙個個命令 使用copy模組,可以將本地檔案一鍵複製到遠端伺服器 a後跟上引數,引數中指定本地檔案和遠端路徑 ansible通過ssh登入到遠端伺服器後,並不執行.bash profile...