天天看點

自動化運維子產品(二)paramiko實作批量遠端密碼連接配接

自動化運維子產品(二)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
           
自動化運維子產品(二)paramiko實作批量遠端密碼連接配接

輸出結果:

自動化運維子產品(二)paramiko實作批量遠端密碼連接配接

因為沒有寫傳回值,是以主機名為none。