python ssh实现_SSH协议的Python实现paramiko

paramiko安装

SSH是一个协议,paramiko 是一个Python 的库,该库支持sshv2协议,实现了对远程服务器执行操作

安装命令:

pip3 install paramiko

SSHClient类与SFTPClient类

paramiko包含两个核心组建,分别是SSHClient和SFTPClient

SSHClient:类似于Linux下的ssh命令,用于执行远程命令。

SFTPClient:类似于Linux下的sftp命令,实现远程文件操作

SSHClient类的方法

connect:实现远程连接认证,只有hostname 是必传参数

connect(self,hostname,port=22,username=None,password=None,

pkey=None,key_filename=None,timeout=None,

allow_agent=True,look_for_keys=True,compress=False)

set_missing_host_key_poilcy:设置没有做免密的主机应对的策略

exec_command:在远程服务器上执行命令的方法

open_sftp:在远程服务器上打开sftp回话

SFTPClient类的方法

put:上传文件

get:下载文件

mkdir:创建目录

remove:移除文件

rmdir:删除目录

rename:重命名文件/目录

stat:查看文件详细信息

listdir:列出指定目录下的文件内容

paramiko的基本使用

paramiko.SSHClient两种认证方式

在执行远程服务器操作之前,首先需要连接远程服务器并进行认证。

paramiko 与 ssh命令一样,支持密码认证和秘钥认证两种方式

使用密码认证

import paramiko

ip = "192.168.32.130"

port = 22

user = "root"

pwd = "123456"

# 使用密码认证

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)

ssh.connect(ip,port,user,pwd)

使用秘钥认证

import paramiko

ip = "192.168.32.130"

port = 22

user = "root"

pwd = "123456"

# 使用密钥认证

ssh = paramiko.SSHClient()

ssh.connect(ip,port,user,key_filename="私钥文件")

使用方法

远程执行命令

import paramiko

ip = "192.168.32.130"

port = 22

user = "root"

pwd = "123456"

### 远程执行命令

ssh = paramiko.SSHClient()

# 自动添加免密

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程主机

ssh.connect(ip,port,user,pwd)

command = input("请输入你要执行的命令").strip()

# 接收输出结果

stdin,stdout,stderr = ssh.exec_command(command)

res = stdout.readlines() + stderr.readlines()

for line in res:

print(line.strip())

ssh.close()

上传文件到远程机器

import paramiko

ip = "192.168.32.130"

port = 22

user = "root"

pwd = "123456"

t = paramiko.Transport((ip,port))

t.connect(username=user,password=pwd)

sftp = paramiko.SFTPClient.from_transport(t)

# 上传至远程服务器的目录/文件

remotepath = "/tmp/test1.txt"

# 本地的一个文件

localpath = "/tmp/test.txt"

# 上传

sftp.put(localpath,remotepath)

t.close()

从远程机器下载文件

import paramiko

ip = "192.168.32.130"

port = 22

user = "root"

pwd = "123456"

t = paramiko.Transport((ip,port))

t.connect(username=user,password=pwd)

sftp = paramiko.SFTPClient.from_transport(t)

# 上传至远程服务器的目录/文件

remotepath = "/tmp/test1.txt"

# 本地的一个文件

localpath = "/tmp/test.txt"

# 下载

sftp.get(remotepath,localpath)

t.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值