代码来自: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. Android Bitmap OOM处理

        public int calculateInSampleSize(BitmapFactory.Options option, int rWidth, int rHeight) {        ...

  2. Codeforces Round #303 (Div. 2) C dp 贪心

    C. Woodcutters time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  3. 增加mvc:resources后访问不了注解配置的controller的问题

    刚开始没有配置mvc:resourcescontroller能够正确访问,但是由于web.xml使用/拦截了所有的请求,所以静态资源访问不上增加mvc:resources之后,静态资源是能访问上了,但 ...

  4. UVa 1593代码对齐

    原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  5. leetcode 147. Insertion Sort List ----- java

    Sort a linked list using insertion sort. 插入排序. /** * Definition for singly-linked list. * public cla ...

  6. P188 实战练习(父类和子类)

    1.创建一个父类,在父类中创建两个方法,在子类中覆盖第二个方法,为子类创建一个对象,将它向上转型到基类并调用这个方法. 创建Computer父类: package org.hanqi.practise ...

  7. POJ-2486 Apple Tree (树形DP)

    题目大意:一棵点带权有根树,根节点为1.从根节点出发,走k步,求能收集的最大权值和. 题目分析:从一个点向其某棵子树出发有三种可能的情况: 1.停留在那棵子树上: 2.再回到这个点: 3.经过这个点走 ...

  8. IOS中如何获取手机的当前IP

    网上有许多类似的帖子.在搜索了资料以后.觉得下面的方法是最简单的. 使用的时候直接把类方法拖到自己新建的分类中就行. .h文件 #import <Foundation/Foundation.h& ...

  9. checking

    https://en.wikipedia.org/wiki/Java_performance https://en.wikipedia.org/wiki/Java_virtual_machine ht ...

  10. C7 连接电脑问题解决

    http://bbs.anzhuo.cn/thread-1254845-1-1.html