天天看點

python連接配接ssh執行子產品_詳解python通過paramiko子產品批量執行ssh指令

多台裝置批量執行ssh指令,目前是串行,後期會加入多線程實作并行,直接上源碼

注意不能執行top等動态指令#!/usr/bin/env python

# -*- coding:utf-8 -*-

__author__ = 'babyshen'

__version__ = '1.0.0'

import paramiko

class SSh(object):

def __init__(self,port,username,password):

self.port = port

self.username = username

self.password = password

def ssh_con(self,host,ip,cmd):

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(ip,self.port,self.username,self.password)

stdin, stdout, stderr = ssh.exec_command(cmd)

res,err = stdout.read(),stderr.read()

result = res if res else err

print('\033[31;1m%s %s\033[0m' %(host,ip))

print('\033[32;1m%s\033[0m' %result.decode())

ssh.close()

if __name__ == '__main__':

client = {'host1':'1.1.1.1',

'host2':'2.2.2.2',

'host3':'3.3.3.3',

'host4':'4.4.4.4',

} # 主機清單 ,hostname:ip

port = 22 # 端口号

username = 'root' # 使用者名

password = '123456789' # 密碼

cmd = "ip route show match 1.1.1.1 | head -1"

ssh = SSh(port,username,password)

for i in client:

host,ip = i,client[i]

try:

ssh.ssh_con(host,ip,cmd)

except WindowsError:

print('\033[31;1m%s %s %s \033[0m\n' %(host,ip,'連接配接嘗試失敗'))

except Exception as e:

print(e)