代码来自: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模块的更多相关文章

  1. Python Paramiko模块与MySQL数据库操作

    Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...

  2. python paramiko模块学习分享

    python paramiko模块学习分享 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Sola ...

  3. Python paramiko 模块

    paramiko模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建SSH对象 ssh ...

  4. python paramiko模块简介

    一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...

  5. Python paramiko模块基本使用(一)

    使用paramiko模块登录远程主机,对日志进行统计分析. import paramiko def batch_count(days, hours, ips, user, passwd, source ...

  6. Python Paramiko模块安装和使用

    1.简介 大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了. 使用par ...

  7. python paramiko 模块简单介绍

    背景,公司的很多服务包括数据库访问都需要通过跳板机访问,为日常工作及使用带来了麻烦,特别数python直接操作数据更是麻烦了,所以一直想实现python 通过跳板机访问数据库的操作. 首先了解到了 p ...

  8. python paramiko模块简介及安装

    一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...

  9. python paramiko模块SSH自动登录linux系统进行操作

    1). Linux系统首先要开启SSH服务:service ssh status 如果没安装的话,则要:apt-get install openssh-server service ssh resta ...

随机推荐

  1. Page_Init 的执行过程

    网上有的资料在说Page_Init这个事件只会在第一次加载页面时触发,实际上并不是这样,我们会发现每次回发页面,Page_Init事件都会被执行, 举一个例子 private static int t ...

  2. ZOJ 3878--解题报告

    题目相关: 3878相关链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5526 Edward 打字员习惯于QWERTY键 ...

  3. 2015GitWebRTC编译实录3

    2015.05.17 librtprtcp 编译通过[702/1600 ] CXX obj /webrtc/modules/rtp_rtcp/source/rtp_rtcp.bitrate.o[703 ...

  4. jq 全选/取消效果

    //全选框$('#btnbutton').live('click',function(){ var data = $(this).attr('data'); if(data=='on'){ $(&qu ...

  5. XStream解析

    package com.baidu.farment; import java.io.IOException;import java.util.ArrayList;import java.util.Li ...

  6. ISBN号码

    总时间限制:  1000ms 内存限制:  65536kB 描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx- ...

  7. 【BZOJ1006】【HNOI2008】神奇的国度

    这回没看黄学长的代码,看的是chty的 原题: K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K ...

  8. 【NOIP2010】【P1317】乌龟棋

    似乎很像搜索的DP(应该也可以用搜索写) 原题: 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物.乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N 格是终点, ...

  9. Python路径总结

    Windows下文件路径的分隔符是'\'反斜杠,文件路径也是一个字符串,牵扯到'\'在Python字符串中存在转义的情况,就对这个问题做一个探究. Python字符串中要使用'\'时有两种方法: 使用 ...

  10. 学习Logistic Regression的笔记与理解(转)

    学习Logistic Regression的笔记与理解 1.首先从结果往前来看下how logistic regression make predictions. 设我们某个测试数据为X(x0,x1, ...