Python Paramiko模块
代码来自:http://www.cnblogs.com/wupeiqi/articles/4356675.html
今天学到了一个运维方面的利器:python的paramiko模块。
paramiko可以远程连接服务器系统并执行相应操作
paramiko远程连接服务器的方式有两种:用户名密码连接、ssh_key连接。
先看使用用户名密码进行连接方法:
#用户名和密码连接
import paramiko #创建一个ssh对象
ssh = paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect('192.168.1.22',port=22,username='root',password='')
#使用exex_command方法来执行要在服务器执行的命令,并返回一个元组(包含输入的命令,命令正确时的返回值,命令出错时出错信息)
stdin,stdout,stderr = ssh.exec_command('df -h')
#输出命令返回值
print stdout.read()
#关闭ssh连接
ssh.close()
用户名和密码连接
用户名密码连接后,上传下载文件:
#用户名密码连接
#使用paramiko的SFTPClient方法实现 #上传文件
import paramiko #创建一个传输对象
t = paramiko.Transport(('182.92.219.86',22))
#连接服务器
t.connect(username='wupeiqi',password='WOshiniba8')
#实例化一个sftp对象
sftp = paramiko.SFTPClient.from_transport(t)
#sftp使用put方法上传文件
sftp.put('/tmp/test.py','/tmp/test.py')
#关闭连接
t.close() #下载文件
import paramiko t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',password='WOshiniba8')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test.py','/tmp/test2.py')
t.close() #paramiko的SFTPClient其他常用方法
sftp.mkdir('/home/userdir',0755) #创建名为userdir的目录,权限为0755
sftp.remove('/home/userdir') #删除名为userdir的目录
sftp.rename('test.py','testfile.py') #将test.py重命名为testfile.py
sftp.stat('/home/testfile.py') #获取testfiel.py文件的信息
sftp.listdir('/home') #获取home目录列表,以python的List形式返回
上传和下载文件
再来看看使用ssh_key连接。使用这种连接方式的关键是使用密钥认证。例如:
要使用a服务器通过密钥来访问b服务器,就要在a服务器上生成密钥对,并将a服务器上生成的公钥发送给b服务器,这样a服务器就可以不通过账号密码直接访问b服务器了
注:第一次访问b服务器的时候还是需要输入用户名密码的,之后才不需要使用用户名密码
生成密钥对的过程:
#bash下设置密钥过程:
ssh-keygen -t rsa ====>生成密钥对(rsa和rsa.pub)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.23 ===>把生成的公钥发送给要设置密钥登录的服务器(-i:指定公钥文件路径)
生成密钥对
使用ssh_key进行连接:
import paramiko #私钥文件路径
private_key_path = '/root/.ssh/id_rsa'
#从私钥文件读取私钥
key = paramiko.RSAKey.from_private_key_file(private_key_path) #创建一个ssh对象
ssh = paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname='192.168.1.22',port=22,username='root',pkey=key)
stdin,stdout,stderr = ssh.exec_command('df -h')
print stdout.read()
ssh.close()
ssh_key连接
ssh_key连接后,上传下载文件:
#密钥连接 #上传文件
import paramiko pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test3.py','/tmp/test3.py')
t.close() #下载文件
import paramiko pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='wupeiqi',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test3.py','/tmp/test4.py')
t.close()
上传和下载文件
Python Paramiko模块的更多相关文章
- Python Paramiko模块与MySQL数据库操作
Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...
- python paramiko模块学习分享
python paramiko模块学习分享 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Sola ...
- Python paramiko 模块
paramiko模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建SSH对象 ssh ...
- python paramiko模块简介
一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...
- Python paramiko模块基本使用(一)
使用paramiko模块登录远程主机,对日志进行统计分析. import paramiko def batch_count(days, hours, ips, user, passwd, source ...
- Python Paramiko模块安装和使用
1.简介 大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了. 使用par ...
- python paramiko 模块简单介绍
背景,公司的很多服务包括数据库访问都需要通过跳板机访问,为日常工作及使用带来了麻烦,特别数python直接操作数据更是麻烦了,所以一直想实现python 通过跳板机访问数据库的操作. 首先了解到了 p ...
- python paramiko模块简介及安装
一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...
- python paramiko模块SSH自动登录linux系统进行操作
1). Linux系统首先要开启SSH服务:service ssh status 如果没安装的话,则要:apt-get install openssh-server service ssh resta ...
随机推荐
- hadoop问题锦集(一):mapreduce不能在集群中运行
问题详细: 搭建类hadoop的集群集群环境,查看hadoop dfsadmin -report 也有datanode节点.在master:50070上也有. 然而在eclipse环境上运行mapre ...
- JSONP解决ajax跨域问题
在A域名下,用ajax请求B域名下的请求,会报类似这样的错误:No 'Access-Control-Allow-Origin' header is present on the requested r ...
- (进阶篇)Cookie与 Session使用详解
1.Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 ...
- word文档快速取消图片的链接
快捷键Ctrl+Shift+F9 首先,Ctrl+A全选文章或者用鼠标拖动的方法选中部分文中: 批量删除word文档中的超级链接然后,同时按下键盘上的Ctrl+Shift+F9. 效果就出现了! 宏方 ...
- c 函数及指针学习 8
联合体 1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> union sa { double a; int b; ...
- c++内置函数---7
原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 内置函数 调用函数时需要一定的时间和空间的开销.一般,函数调用包括5部分: 1.程序先执行函 数调用之前 ...
- activiti 任务节点 处理人设置【转】
转自http://blog.csdn.net/qq_30739519/article/details/51225067 1.1.1. 前言 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自 ...
- 如何卸载rpm包
首先通过 rpm -q <关键字> 可以查询到rpm包的名字 然后 调用 rpm -e <包的名字> 删除特定rpm包 如果遇到依赖,无法删除,使用 rpm -e --nod ...
- POJ1087 A Plug for UNIX(网络流)
A Plug for UNIX Time Limit: 1000MS Memory Limit: 65536K Total S ...
- 什么是HTML、XML和XHTML
(1)XMLXML是The Extensible Markup Language(可扩展标识语言)的简写.目前推荐遵循的是W3C于2000年10月6日发布的XML1.0,参考(www.w3.org/T ...