#執行方式: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...