python学习之路网络编程篇(第五篇)
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学习之路网络编程篇(第五篇)的更多相关文章
- python学习之路网络编程篇(第四篇)
python学习之路网络编程篇(第四篇) 内容待补充
- python学习之路网络编程篇(第二篇)
新课程知识的引入:python作用域 #python中无块级别作用域 if 1 == 1 : name = 'alex' print(name) for i in range(10): name = ...
- python学习之路网络编程篇(第一篇)socket初识
什么是socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为socket.socket通常也称为“套接字”,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的 ...
- python学习之路网络编程篇(第五篇)-续篇
Python堡垒机实现之基础知识 一般的堡垒机必须要具备以下5个基本功能: 1.权限控制 2.执行命令 3.上传下载文件 4.远程登录 5.记录操作 权限控制 说明:根据不同的登录用户分配不同的可管理 ...
- python学习之路网络编程篇(第四篇)- 续
Memcache简介 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速 ...
- python学习之路网络编程篇(第三篇)
python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python # -*- coding:utf-8 -*- import t ...
- python学习笔记11 ----网络编程
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...
- python学习笔记10 ----网络编程
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...
- Python学习之==>Socket网络编程
一.计算机网络 多台独立的计算机通过网络通信设备连接起来的网络.实现资源共享和数据传递.在同一台电脑上可以将D盘上的一个文件传到C盘,但如果想从一台电脑传一个文件到另外一台电脑上就要通过计算机网络 二 ...
随机推荐
- 喜马拉雅音频下载工具 - xmlyfetcher
xmlyfetcher用于下载喜马拉雅歌曲资源,可以下载单个音频资源,也可以下载整个专辑. 项目地址:https://github.com/smallmuou/xmlyfetcher 安装 安装jsh ...
- python基础——特性(property)、静态方法(staticmethod)和类方法(classmethod)
python基础--特性(property) 1 什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 import math class Circl ...
- 云计算 IaaS,SaaS,PaaS的区别?一个通俗易懂的吃货文章
来自一篇吃货文章了: ———————————————————— <img src="https://pic2.zhimg.com/a55676f8e1b084a398f8cd5 ...
- 从感知机到 SVM,再到深度学习(三)
这篇博文详细分析了前馈神经网络的内容,它对应的函数,优化过程等等. 在上一篇博文中已经完整讲述了 SVM 的思想和原理.讲到了想用一个高度非线性的曲线作为拟合曲线.比如这个曲线可以是: ...
- arc的安装
安装: # sudo apt-get install php5 php5-curl # ubuntu 系统 # sudo yum install php5 # centos 系统 # cd ...
- JavaScript数据结构与算法(四) 循环队列的实现
实现击鼓传花,需要用到上一章所述队列类Queue TypeScript方式实现源码 let hotPotato = (nameList, num) => { let queue = new Qu ...
- leetcode 561.Array Partition I-easy
Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1 ...
- [BJOI 2011]元素
Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越强 ...
- bzoj 5251: [2018多省省队联测]劈配
Description 一年一度的综艺节目<中国新代码>又开始了. Zayid从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. 题目描述 轻车熟路的Zayi ...
- 【bzoj4569 scoi2016】萌萌哒
题目描述 一个长度为n的大数,用S1S2S3...Sn表示,其中Si表示数的第i位,S1是数的最高位,告诉你一些限制条件,每个条件表示为四个数,l1,r1,l2,r2,即两个长度相同的区间,表示子串S ...