Python处理SSH

作者: drmeng 分类: Python 发布时间: 2022-05-19 15:35

关键是添加第三方库:paramiko

import sys

import paramiko

def Run2(ssh,command):
#处理连续输出的命令类型
stdin, stdout, sterr = ssh.exec_command(command, get_pty=True)
while True:
v = stdout.channel.recv(1024)
if not v:
break
sys.stdout.write(str(v))
sys.stdout.flush()

def Run(ssh,command):
# 执行命令
stdin, stdout, stderr = ssh.exec_command(command,timeout=1)
# ssh.exec_command() 返回三个类文件对象
# stdin 是写权限的文件对象,标准输入
# stdin 是读权限的文件对象,标准输出
# stderr 是读权限的文件对象,标准错误,特殊的输出

# 查看执行的结果
result = stdout.read().decode()
return result


# 创建一个ssh的客户端(对象实例化)
ssh = paramiko.SSHClient()
# 创建ssh连接的白名单(实现对服务器访问时,取消询问的效果)
known_hosts = paramiko.AutoAddPolicy()
# 加载白名单到ssh中
ssh.set_missing_host_key_policy(known_hosts)
# 连接我的Centos7服务器
ssh.connect(
hostname = "192.168.1.***", # 主机
port = 22, # 端口号
username= "****", # 用户名
password= "***" # 密码
)


print(Run(ssh,"ls"))
print(Run2(ssh,"ping baidu.com"))
print(Run(ssh,"pwd"))

# 关闭连接,释放内存
ssh.close()

实践发现利用C#的SSH.NET、通过线程控制CMD或者是控制Power Shell,都不如这种操作丝滑。