paramiko模块

Python的paramiko模块,基于SSH用于连接远程服务器并执行相关操作; paramiko遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接;
paramiko支持Linux,Solaris, BSD,MacOS X, Windows等平台通过SSH从一个平台连接到另外一个平台;
利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输。

模块使用

1、执行命令 - 用户名+密码

#!/usr/bin/python3
#-*- coding: utf-8 -*-

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 允许连接know_hosts中不存在的主机
ssh.connect('10.255.1.42',22,'root','123456')

stdin,stdout,stderr = ssh.exec_command("df -Th")
print(stdout.read().decode('utf-8')) # 以utf-8编码对结果进行解码
ssh.close()

结果如下:

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 /Users/fanhaitao/PycharmProjects/untitled/paramiko模块学习.py
文件系统            类型      容量  已用  可用 已用% 挂载点
/dev/mapper/cl-root xfs       184G  1.7G  182G    1% /
devtmpfs            devtmpfs  3.9G     0  3.9G    0% /dev
tmpfs               tmpfs     3.9G     0  3.9G    0% /dev/shm
tmpfs               tmpfs     3.9G  8.5M  3.9G    1% /run
tmpfs               tmpfs     3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1           xfs      1014M  139M  876M   14% /boot
tmpfs               tmpfs     783M     0  783M    0% /run/user/0


Process finished with exit code 0

2、上传或下载文件 - 用户名+密码

2.1 上传文件

#!/usr/bin/python3
#-*- coding: utf-8 -*-

import paramiko
import os
import sys

t = paramiko.Transport(('10.255.1.42',22))
t.connect(username='root',password='123456')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('test.py','/root/test.py')
t.close()

结果:

[root@Openshift41 ~]# ll
总用量 20
-rw-------. 1 root root  1591 2月  26 16:21 anaconda-ks.cfg
-rw-r--r--  1 root root 15080 10月  3 2017 epel-release-latest-7.noarch.rpm
[root@Openshift41 ~]# ll
总用量 24
-rw-------. 1 root root  1591 2月  26 16:21 anaconda-ks.cfg
-rw-r--r--  1 root root 15080 10月  3 2017 epel-release-latest-7.noarch.rpm
-rw-r--r--  1 root root   836 4月  28 11:43 test.py

2.2 下载文件

#!/usr/bin/python3
#-*- coding: utf-8 -*-
	
import paramiko
import os
import sys
t = paramiko.Transport(('10.255.1.42',22))
t.connect(username='root',password='123456')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/root/test.py','ceshi.py')
t.close()

结果:
在这里插入图片描述

3、执行命令 - 密匙

此处的脚本是在Linux机器上运行的

#!/usr/bin/python3
#-*- coding: utf-8 -*-

import paramiko
private_key_path = '/root/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('10.255.1.42',22,'root',key)
stdin,stdout,stderr = ssh.exec_command('df -Th')
print(stdout.read().decode('utf-8'))
ssh.close()

4、上传或下载文件 - 密匙

# 上传文件
import paramiko

pravie_key_path = '/root/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)

t = paramiko.Transport(('10.255.1.42', 22))
t.connect(username='root', pkey=key)

sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('log.log','/tmp/log.log')

t.close()

# 下载文件
import paramiko

pravie_key_path = '/root/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)

t = paramiko.Transport(('10.255.1.42', 22))
t.connect(username='root', pkey=key)

sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/log.log', 'log3.log')

t.close()
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值