zoukankan      html  css  js  c++  java
  • python paramiko

    paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,可以实现远程文件的上传,下载或通过ssh远程执行命令。

    项目地址:https://github.com/paramiko/paramiko

    官方文档:http://docs.paramiko.org/

    一、安装

    root@ubuntu:~/paramiko# pip install paramiko

    测试是否安装成功

    >>> import paramiko
    >>>

    二、上传文件到远程服务器

    原理:通过SFTPClient类根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。实现远程文件上传、下载。

    任务:10. 1.101.187向10.1.101.186发送文件。

    10.1.101.187 目录/root/paramiko  有三个文件 paramikosend.py  test  test.tar

    10.1.101.186 目录/root/paramiko   开始为空文件夹

    执行python paramikosend.py,代码如下

    root@ubuntu:~/paramiko# cat paramikosend.py 
    import paramiko,datetime,os
    hostname = '10.1.101.186'
    username = 'root'
    password = '123456'
    port = 22
    local_dir = '/root/paramiko'
    remote_dir = '/root/paramiko'
    try:
            t=paramiko.Transport((hostname,port))
            t.connect(username=username,password=password)
            sftp = paramiko.SFTPClient.from_transport(t)
            files = os.listdir(local_dir)
            for f in files:
                    sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))
            t.close()
    except Exception:
            print "connect error!"

    结果:

    三、从远程服务器下载文件

    原理:通过SFTPClient类根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。实现远程文件上传、下载。

    任务:现在10.1.101.186的/root/paramiko/temp186目录有两个文件,将其下载到10.1.101.187的/root/paramiko/temp187目录。

     

    执行 python paramikoget.py ,代码如下

    root@ubuntu:~/paramiko# cat paramikoget.py 
    import paramiko,datetime,os
    hostname = '10.1.101.186'
    username = 'root'
    password = '123456'
    port = 22
    local_dir = '/root/paramiko/temp187'
    remote_dir = '/root/paramiko/temp186'
    try:
            t=paramiko.Transport((hostname,port))
            t.connect(username=username,password=password)
            sftp = paramiko.SFTPClient.from_transport(t)
            files = sftp.listdir(remote_dir) #这里需要注意,列出远程文件必须使用sftp,而不能用os
            for f in files:
                    sftp.get(os.path.join(remote_dir,f),os.path.join(local_dir,f))
            t.close()
    except Exception:
            print "connect error!"

    结果:

    四、执行命令测试

    原理:通过SSHClient类执行命令。SSHClient类是SSH服务会话的高级表示,封装了传输、通道以及SFTPClient的校验、建立方法,通常用于执行命令。

    任务:通过10.1.101.187连接到10.1.101.186,然后进入目录/root/paramiko,创建一个目录lxy。

    执行python paramikocommand.py,代码如下:

    root@ubuntu:~/paramiko# cat paramikocommand.py 
    #!/usr/bin/python
    
    import paramiko
    hostname = '10.1.101.186'
    username = 'root'
    password = '123456'
    port = 22
    
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname=hostname,port=port,username=username,password=password)
    stdin, stdout, stderr = ssh.exec_command("cd  /root/paramiko;mkdir lxy")
    print stdout.readlines()
    ssh.close()

    结果:

    命令中也可以带参数:

    root@ubuntu:~/paramiko# cat paramikocommand.py 
    #!/usr/bin/python
    
    import paramiko
    hostname = '10.1.101.186'
    username = 'root'
    password = '123456'
    port = 22
    name='testcmd'
    
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname=hostname,port=port,username=username,password=password)
    stdin, stdout, stderr = ssh.exec_command("cd  /root/paramiko;mkdir %s" %name)
    print stdout.readlines()
    ssh.close()

    Note:exec_command为单个会话,执行完成之后会回到登录时的缺省目录。

    比如执行下面两句。

    stdin, stdout, stderr = ssh.exec_command("cd  /root/paramiko;mkdir %s" %name)
    stdin,stdout,stderr = ssh.exec_command('mkdir haha')

    haha目录最终是在缺省的/root目录下新建的,而不是/root/paramiko目录。

    五、python远程执行操作的其他开源模块

    fabric:fabric是封装了paramiko模块来实现ssh来传输文件的。

    pexpect:也可以实现ssh 登录到某个用户指定的主机上,运行某个用户指定的命令

    本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/4670433.html有问题欢迎与我讨论,共同进步。

  • 相关阅读:
    漏洞扫描
    端口探测
    IP探测
    kali linux基础命令
    python学习07
    python学习06
    openoffice+jquery.media.js实现Linux与Windows中文档在线预览
    Oracle10g安装包
    MyEclipse2014安装包附注册破解包、eclipse安装包
    外层div自适应内层div高度
  • 原文地址:https://www.cnblogs.com/starof/p/4670433.html
Copyright © 2011-2022 走看看