美文网首页
Python paramiko 模块

Python paramiko 模块

作者: SateZheng | 来源:发表于2017-01-16 17:51 被阅读597次

    本文参考 http://www.361way.com/python-paramiko-ssh/3984.html

    paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。可以用来远程登录主机并执行命令,传输文件等。

    远程连接方法

    使用paramiko模块有两种连接方式,一种是通过paramiko.SSHssh()函数,另外一种是通过paramiko.Transport()函数。

    # 方法一:
    import paramiko
    
    ssh = paramiko.SSHssh()
    # set_missing_host_key_policy 允许连接不在 known_hosts 文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect("IP", 22, "用户名", "密码")
    ssh.close() 
    
    # 方法二:
    import paramiko
    
    t = paramiko.Transport(("主机",端口))   # 端口需要时 int 整型的
    t.connect(username="用户名", password="密码")
    

    SSH连接并执行命令

    # 使用密码方式
    import paramiko
    
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect("IP", 22, "用户名", "密码")
    # 执行命令 df
    stdin, stdout, stderr = ssh.exec_command('uptime')
    # 读取,数据量比较少,可以用 stdout.read() 读取
    for line in stdout.readlines():
        print line
    ssh.close() 
    
    
    # 使用私钥方式
    import paramiko
    
    key = paramiko.RSAKey.from_private_key_file('/Users/zheng/.ssh/id_rsa')
    ssh = paramiko.SSHssh()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect("IP", 22, "用户名", pkey=key)
    stdin, stdout, stderr = ssh.exec_command('df')
    print stdout.read()
    ssh.close()
    

    SFTP连接并上传下载文件

    # 使用密码方式
    import paramiko
    
    scp = paramiko.Transport(('IP', 端口))
    scp.connect(username='sate', password='pass')
    sftp = paramiko.SFTPClient.from_transport(scp)
    # 上传, 从本地上传到远端服务器
    sftp.put('/tmp/server', '/tmp/server')
    # 下载,从远端服务器下载到本地
    sftp.get('/tmp/server', '/tmp/server')
    scp.close()
    
    
    # 使用私钥方式
    import paramiko
    
    scp = paramiko.Transport(('IP', 端口))
    key = paramiko.RSAKey.from_private_key_file('/Users/zheng/.ssh/id_rsa')
    scp.connect(username='sate', pkey=key)
    sftp = paramiko.SFTPClient.from_transport(scp)
    # 上传, 从本地上传到远端服务器
    sftp.put('/tmp/server', '/tmp/server')
    # 下载,从远端服务器下载到本地
    sftp.get('/tmp/server', '/tmp/server')
    
    scp.close()
    
    

    相关文章

      网友评论

          本文标题:Python paramiko 模块

          本文链接:https://www.haomeiwen.com/subject/ziepbttx.html