python之 paramiko模块 连接服务器

paramiko是一个基于SSH用于连接远程服务器并执行相关操作(SSHClient和SFTPClinet,即一个是远程连接,一个是上传下载服务),使用该模块可以对远程服务器进行命令或文件操作。

下载安装

pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto
pip3 install pycrypto
pip3 install paramiko

1.账号密码连接

import logging
import sys

import paramiko


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("
"))
    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()

 

原文地址:https://www.cnblogs.com/shangwei/p/13857371.html