欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python paramiko模块使用解析(实现ssh)

程序员文章站 2022-06-05 22:44:28
开发堡垒机之前,先来学习python的paramiko模块,该模块基于ssh用于连接远程服务器并执行相关操作 安装paramiko模块 pip3 install...

开发堡垒机之前,先来学习python的paramiko模块,该模块基于ssh用于连接远程服务器并执行相关操作

安装paramiko模块

pip3 install paramiko

基于用户密码方式

import paramiko

# 创建ssh对象
ssh = paramiko.sshclient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())
# 连接服务器
ssh.connect(hostname="10.0.0.200", port=22, username='root', password='1')

# 执行命令
# stdin:标准输入(就是你输入的命令);stdout:标准输出(就是命令执行结果);stderr:标准错误(命令执行过程中如果出错了就把错误打到这里),stdout和stderr仅会输出一个
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = (stdout.read().decode('utf-8'))  # 这个有问题,如果执行的命令是错误的,会不显示错误,可以修改一下,先判断stdout有没有值,如果输出没有,就显示错误
print(result)
# 关闭连接
ssh.close()

基于公钥密钥连接

import paramiko

# 指定私钥路径
private_key = paramiko.rsakey.from_private_key_file('/root/.ssh/id_rsa')

# 创建ssh对象
ssh = paramiko.sshclient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.171', port=22, username='root', pkey=private_key)

# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode())
# 关闭连接
ssh.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。