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