代码来自: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. Pythono 实现 Permutation

    不管在R 还是python中,都有现成的函数来轻而易举地进行全排列(Permutation).无序排列等等.今天想要尝试一下使用自己写代码来实现全排列. 首先,我采用的算法如下: 对于一个数列 i.e ...

  2. zBoot/Makefile

    #上层makefile调用执行make命令,执行的应该是第一个目标allHEAD = head.oSYSTEM = ../tools/zSystem#LD = gcc#TEST = -DTEST_DR ...

  3. MATLAB符号运算 分类: 图像处理 2015-07-31 22:53 3人阅读 评论(0) 收藏

    1.符号运算 使用MATLAB可以进行多项式乘除运算,也可以进行因式分解. 例1. 多项式乘除运算(x+3)3 >> syms x; >> expand((x+3)^3) an ...

  4. API读取和处理的文件

    1.FileList对象  FileList对象是File对象的一个集合,设置multiple就可以多文件上传.2.Blob对象 Blob对象就是一个二进制原始数据对象,它提供了slice方法可以读取 ...

  5. python--切片--6

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 一.对list进行切片 取一个list的部分元素是非常常见的操作.比如,一个list如下: &g ...

  6. Linux-IP地址后边加个/8(16,24,32)是什么意思?

    是掩码的位数        A类IP地址的默认子网掩码为255.0.0.0(由于255相当于二进制的8位1,所以也缩写成“/8”,表示网络号占了8位);    B类的为255.255.0.0(/16) ...

  7. kmeans算法

    # coding:utf-8 import numpy as np import matplotlib.pyplot as plt def dis(x, y): #计算距离 return np.sum ...

  8. Page cache和Buffer cache[转1]

    http://www.cnblogs.com/mydomain/archive/2013/02/24/2924707.html Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的 ...

  9. mysql+mybatis 插入可递增字段库表操作

    mysql本身类型介绍: BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 70 ...

  10. linux服务之rsync

    http://www.cnblogs.com/itech/archive/2010/06/13/1757952.html rsync与mfs好像有点类似,都是传输块的chunk,chunk的 1)软件 ...