python之paramiko模块安装使用

今天在centos6.5 上安装使用paramiko库。记录遇到的问题和流程。

部分概念

1 paramiko是一个python第三方库,使用python来实现了SSH,使用条件2.6+/3.3+.官方站点是https://www.lag.net/  应该是这个社区的人在维护。源代码被托管至`github`.
2 
3 PYPI是python官方维护的的第三方库,个人可以上传并使用。官方推荐使用`pip`来安装管理第三方库。
4 
5 python 2.7.9 和3.4以后的版本已经内置pip程序,所以不需要安装。从Python内部来说,pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品。distribute是setuptools的取代(Setuptools包后期不再维护了)。pip的安装前需要setuptools 或者 distribute,如果你使用的是Python3.x那么就只能使用distribute因为Python3.x不支持setuptools。
6 
7 paramiko的安装需要依赖于`PyCrypto` 这个库中有许多的加密算法。`PyCryto`的站点是 https://www.dlitz.net/  源码包也在这里。到现在稳定版2.6,实验版2.7
8 
9 readline-devel(解决centos下Python2.7交互模式中方向键、退格键乱码问题)

安装步骤

1、安装依赖环境

   yum -y install zlib-devel readline-devel libffi-devel python-devel openssl-devel gcc git

2、安装setuptools-19.6

    wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26 

    tar -xf setuptools-19.6.tar.gz

    cd setuptools-19.6

    python3 setup.py build

    python3 setup.py install

3、pycrypto(paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto)

    wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz 

    tar -xvf pycrypto-2.6.1.tar.gz

    cd pycrypto-2.6.1

    python setup.py build

    python setup.py install

 

4、安装paramiko

    下载:http://pan.baidu.com/s/1dFKYNq5 密码:y2ml

 

     tar -xf paramiko-1.14.0.tar.gz

     cd paramiko-1.14.0

     python3 setup.py build

     python3 setup.py install

centos7 Python3 可以直接pip3 install paramiko (没试)

5、验证进入python环境,导入paramiko检查是否安装成功

     [root@localhost paramiko-1.14.0]# python3
     Python 3.6.0a1 (default, Jul 13 2018, 16:13:45)
     [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
     Type "help", "copyright", "credits" or "license" for more information.
     >>> import paramiko

    

使用:

Paramiko是用python语言写的一个模块,远程连接到Linux服务器,查看上面的日志状态,批量配置远程服务器,文件上传,文件下载等
初始化一些参数:
1 1 host = "120.24.239.214"
2 2 port = 22
3 3 timeout = 30
4 4 user = "root"
5 5 password = "******"
Paramiko远程执行linux命令:
 1 # -*- coding:utf-8 -*-
 2 import paramiko
 3 
 4 def sftp_exec_command(command):
 5     try:
 6         ssh_client = paramiko.SSHClient()
 7         ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 8         ssh_client.connect(host, 22, user, password)
 9         std_in, std_out, std_err = ssh_client.exec_command(command)
10         for line in std_out:
11             print line.strip("\n")
12         ssh_client.close()
13     except Exception, e:
14         print e
15 
16 if __name__ == '__main__':
17     sftp_exec_command("ls -l")
      Paramiko上传文件:
# -*- coding:utf-8 -*-
import paramiko

def sftp_upload_file(server_path, local_path):
    try:
        t = paramiko.Transport((host, 22))
        t.connect(username=user, password=password)
        sftp = paramiko.SFTPClient.from_transport(t)
        sftp.put(local_path, server_path)
        t.close()
    except Exception, e:
        print e

if __name__ == '__main__':
    sftp_upload_file("/root/bug.txt", "D:/bug.txt")

Paramiko下载文件:

 1 # -*- coding:utf-8 -*-
 2 import paramiko
 3 
 4 def sftp_down_file(server_path, local_path):
 5     try:
 6         t = paramiko.Transport((host, 22))
 7         t.connect(username=user, password=password)
 8         sftp = paramiko.SFTPClient.from_transport(t)
 9         sftp.get(server_path, local_path)
10         t.close()
11     except Exception, e:
12         print e
13 
14 if __name__ == '__main__':
15     sftp_down_file("/root/test.txt", "D:/text.txt")

 




posted @ 2021-10-10 11:05  八戒不爱吃西瓜  阅读(1476)  评论(0编辑  收藏  举报