1. 程式人生 > 實用技巧 >python之 paramiko模組 連線伺服器

python之 paramiko模組 連線伺服器

paramiko是一個基於SSH用於連線遠端伺服器並執行相關操作(SSHClient和SFTPClinet,即一個是遠端連線,一個是上傳下載服務),使用該模組可以對遠端伺服器進行命令或檔案操作。

下載安裝

pycrypto,由於 paramiko 模組內部依賴pycrypto,所以先下載安裝pycrypto
pip3 install pycrypto
pip3 install paramiko

1.賬號密碼連線

    @staticmethod
    def get_data():
        list_ = list()
        try:
            ssh_client = paramiko.SSHClient()
            ssh_client.load_system_host_keys()
            ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh_client.connect("192.168.xx.xx", 22, 'root', 'admin')
            # 在command命令最後加上 get_pty=True,執行多條命令 的話用;隔開,另外所有命令都在一個大的單引號範圍內引用
            std_in, std_out, std_err = ssh_client.exec_command(
                'oc login https://api.ocp4.gzky.com:6443 --username=admin --password=redhat &> /dev/null && '
                'tk=$(oc sa get-token prometheus-k8s -n openshift-monitoring) && '
                'curl -H "Authorization: Bearer $tk" https://192.168.xx.xx:xxxx/metrics -k',
                get_pty=True)
            for line in std_out:
                list_.append(line.strip("\n"))
        except Exception as e:
            logging.error('class path: %s;function name: %s;error message:%s' %
                          (__name__, sys._getframe().f_code.co_name, e.message), exc_info=True)
        return list_

2.公鑰祕鑰連線

import paramiko

private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
# 建立SSH物件
ssh = paramiko.SSHClient()
# 允許連線不在know_hosts檔案中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連線伺服器
ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', key=private_key)
# 執行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 獲取命令結果
result = stdout.read()
# 關閉連線
ssh.close()