自動化運維子產品(二)paramiko實作批量遠端密碼連接配接
代碼如下:
from paramiko.ssh_exception import NoValidConnectionsError, AuthenticationException
import paramiko
def connect(cmd, hostname, user, password):
# 建立一個ssh對象
client = paramiko.SSHClient()
# 自動選擇yes
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
# 連接配接的伺服器
client.connect(
hostname=hostname,
username=user,
password=password
)
except NoValidConnectionsError as e:
return '主機%s連接配接失敗' % (hostname)
except AuthenticationException as e:
return '主機%s密碼錯誤' % (hostname)
except Exception as e:
return '未知錯誤:', e
# 執行操作
# 标準輸入 标準正确輸出 标準錯誤輸出
stdin, stdout, stderr = client.exec_command(cmd)
# 擷取指令的執行結果
print(stdout.read().decode('utf-8'))
# 關閉連接配接
client.close()
with open('hosts') as f:
for line in f:
# 172.25.254.254:root:dd
hostname, username, password = line.strip().split(':')
res = connect('hostname', hostname, username, password)
print(hostname.center(50, '*'))
print('主機名:', )
編寫檔案hosts,格式自己定義:
172.25.254.250:root:dd
172.25.254.54:root:westos
172.25.254.11:root:westos
輸出結果:
因為沒有寫傳回值,是以主機名為none。