paramiko简介

  paramiko 是基于Python实现的SSH2远程安装连接,支持认证及秘钥方式。可以实现远程命令执行、文件传输、中间SSH代理等功能。

  paramiko安装 

#!/bin/bash
#install indepence package
cd /data/soft
wget https://www.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz
yum -y install gcc python-devel
tar zxf pycrypto-2.6.tar.gz -C /usr/local
cd /usr/local/pycrypto-2.6
python setup.py build
python setup.py install wget https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.13.tar.gz#md5=1f60eda9cb5c46722856db41a3ae6670
tar zxf ecdsa-0.13.tar.gz -C /usr/local
cd /usr/local/ecdsa-0.13
python setup.py build
python setup.py install #install paramiko package
cd /data/soft
wget https://pypi.python.org/packages/source/p/paramiko/paramiko-1.16.0.tar.gz#md5=7e1203f5ffeb7d2bc2bffc4feb804216
tar zxvf paramiko-1.16.0.tar.gz -C /usr/local
cd /usr/local/paramiko-1.16.0
python setup.py build
python setup.py install

导入paramiko模块:import paramiko

[root@bogon ~]# python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
>>>

paramiko API安装:pip install paramiko

paramiko基于用户名和密码登陆远程主机

SSHClient

用于连接远程服务器并执行基本命令

import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='172.16.2.100', port=22, username='root', password='123345') # 执行命令
stdin, stdout, stderr = ssh.exec_command('ls')
# 获取命令结果
result = stdout.read() # 关闭连接
ssh.close()

具体实现脚本如下:

#!/usr/bin/env python
import paramiko
transport = paramiko.Transport(('172.20.2.234',22))
transport.connect(username='root',password='000000')
ssh = paramiko.SSHClient()
ssh._transport = transport stdin,stdout,stderr = ssh.exec_command('uname -a')
print(stdout.read())
transport.close()

paramiko基于秘钥登陆远程主机

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='172.16.2.234', port=22, username='root', key=private_key) # 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read() # 关闭连接
ssh.close()

具体实现脚本如下:

[root@bogon paramiko]# cat para_key.py
#!/usr/bin/env python
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') transport = paramiko.Transport(('172.20.2.234',22))
transport.connect(username='root',pkey=private_key)
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin,stdout,stderr = ssh.exec_command('df -hT')
print(stdout.read())
transport.close()

paramiko实现远程文件的上传下载

SFTPClient

用于连接远程服务器并执行上传下载

基于用户名密码上传下载:

import paramiko

transport = paramiko.Transport(('172.16.2.234',22))
transport.connect(username='root',password='123345') sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/data/local/location.py', '/data/remote/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path') transport.close()

具体实现代码如下:

#!/usr/bin/env python
import paramiko
username = 'root'
password = '000000'
hostname = '172.20.2.234'
port = 22 try:
t = paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t) sftp.put('/data/local/localfile','/data/remote/remotefile')
sftp.get('/data/remote/remotefile1','/data/local/localfile1')
sftp.mkdir('/data/aaa',0755)
sftp.rmdir('/data/aaa')
sftp.rename('/data/remote/test.sh','/data/remote/testfile.sh')
print(sftp.stat('/data/remote/testfile.sh'))
print(sftp.listdir('/data/remote'))
except Exception as e:
print(e)

  

 

python学习之路网络编程篇(第五篇)的更多相关文章

  1. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  2. python学习之路网络编程篇(第二篇)

    新课程知识的引入:python作用域 #python中无块级别作用域 if 1 == 1 : name = 'alex' print(name) for i in range(10): name = ...

  3. python学习之路网络编程篇(第一篇)socket初识

    什么是socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为socket.socket通常也称为“套接字”,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的 ...

  4. python学习之路网络编程篇(第五篇)-续篇

    Python堡垒机实现之基础知识 一般的堡垒机必须要具备以下5个基本功能: 1.权限控制 2.执行命令 3.上传下载文件 4.远程登录 5.记录操作 权限控制 说明:根据不同的登录用户分配不同的可管理 ...

  5. python学习之路网络编程篇(第四篇)- 续

    Memcache简介 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...

  6. python学习之路网络编程篇(第三篇)

    python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python # -*- coding:utf-8 -*- import t ...

  7. python学习笔记11 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  8. python学习笔记10 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  9. Python学习之==>Socket网络编程

    一.计算机网络 多台独立的计算机通过网络通信设备连接起来的网络.实现资源共享和数据传递.在同一台电脑上可以将D盘上的一个文件传到C盘,但如果想从一台电脑传一个文件到另外一台电脑上就要通过计算机网络 二 ...

随机推荐

  1. 百度播放器SDK 播放MP4格式视频有声音无画面问题解决

    此处为记录解决过程. 所链接使用的MP4格式视频为codec id是mp4v-20.使用手机自带播放器可以播放,使用百度云媒体播放器不能无画面.经调试,Android Baidu-Cloud-Play ...

  2. SSM中的登陆验证码

    @Autowired private Producer captchaProducer = null; /** * 后台登录验证码 * @param request * @param response ...

  3. 复习HTML+CSS(2)

    n  项目符号嵌套编号思路 标签的内容(文本.项目符号.表格.图片等)必须放在最底层标记中. n  图片标记(行内元素,单边标记) l  语法:<img 属性 = "值"&g ...

  4. List<E> 接口简明

    java.util.List<E>接口. ListIterator.equals 方法 List 是 Collection 接口的子接口,具备了 Collection 的所有方法. Lis ...

  5. 调用Kubernetes API操作Kubernetes

    准备工作 首先要准备一个1.5+版本的Kubernetes,并且开放了API Server的http访问端口8080.本文使用的是1.10的版本,没有环境的可以参考我上一篇文章<在CentOS ...

  6. 玩一玩基于Token的 自定义身份认证+权限管理

    使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录.大概的流程是这样的: 客户端使用用户名跟密码请求登录 服务端收到请求,去验证用户名与密码 验证成功后,服务端会签发一个 Toke ...

  7. .NET Core Community 首个千星项目诞生:CAP

    项目简介 在我们构建 SOA 或者 微服务系统的过程中,我们通常需要使用事件来对各个服务进行集成,在这过程中简单的使用消息队列并不能保证数据的最终一致性, CAP 采用的是和当前数据库集成的本地消息表 ...

  8. javascript/TypeScript 生成GUID

    export const guid = () => { return `xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, functi ...

  9. position的static、relative、absolute、fixed、inherit

    网上有很多关于position的讲解,也有很多他们属性之间的比较,但是比较全面的讲解还是比较少,每次看完过段时间就忘了,所以今天参考了很多网上现有的资源,自己整理一下,写下这篇文章. position ...

  10. [HAOI 2016]食物链

    Description 如图所示为某生态系统的食物网示意图,据图回答第1小题. 1.数一数,在这个食物网中有几条食物链( ) 现在给你n个物种和m条能量流动关系,求其中的食物链条数. 物种的名称为从1 ...