Python之——paramiko实例

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79029041

一、基于用户名密码实现SSH登录

# -*- coding:UTF-8 -*-
'''
基于用户名和密码实现 SSH远程登录,并在远程服务器上执行命令
比如:本实例执行:free -m
Created on 2018年1月10日

@author: liuyazhuang
'''
import paramiko

hostname = '192.168.209.121'
username = 'root'
password = "密码"

#发送paramkio日志到syslogin.log文件
paramiko.util.log_to_file('syslogin.log')
#创建一个ssh客户端client对象
ssh = paramiko.SSHClient()
#获取客户端host_keys,默认~/.ssh/known_hosts, 非默认路径需指定
ssh.load_host_keys()
#创建ssh连接
ssh.connect(hostname=hostname, username=username, password = password)
#调用远程执行命令方法exec_command()
stdin, stdout, stderr = ssh.exec_command('free -m')
#打印命令执行结果,得到Python列表形式,可以使用stdout.readlines()
print stdout.read()
#关闭ssh连接
ssh.close()

二、实现自动密钥登录

# -*- coding:UTF-8 -*-
'''
实现自动密钥登录方式,首先要配置与目标主机设备的密钥认证支持,
私钥文件可以存放在默认路径,“~/.ssh/id_rsa”,也可以自定义路径,
本例就是自定义的路径,通过paramiko.RSAKey.from_private_key_file()方法引用
Created on 2018年1月10日

@author: liuyazhuang
'''
import paramiko
import os

hostname = "192.168.209.121"
username = "root"
paramiko.util.log_to_file('syslogin.log')

ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
#定义私钥存放另=路径
privatekey = os.path.expanduser('/home/key/id_rsa')
#创建私钥对象key
key = paramiko.RSAKey.from_private_key_file(privatekey)

ssh.connect(hostname=hostname, username=username, pkey=key)
stdin, stdout, stderr = ssh.exec_command('free -m')
print stdout.read()
ssh.close()

三、SFTP实现文件上传、下载、创建与删除目录

# -*- coding:UTF-8 -*-
'''
SFTP实现文件上传、下载、创建与删除目录,需要注意的是,
put和get方法需要指定文件名,不能省略,
Created on 2018年1月10日

@author: liuyazhuang
'''
import paramiko

username = "root"
password = "密码"
hostname = "192.168.209.121"
port = 22
try:
    t = paramiko.Transport((hostname, port))
    t.connect(username = username, password = password)
    sftp= paramiko.SFTPClient.from_transport(t)
    #上传文件
    sftp.put("/home/application/user.db", "/data/user/user.db")
    #下载文件
    sftp.get("/data/user/test.db", "/home/application/test.db")
    #创建目录
    sftp.mkdir("/home/userdir", 0755)
    #删除目录
    sftp.rmdir("/home/userdir")
    #文件重命名
    sftp.rename("/home/test.sh", "/home/testfile.sh")
    #打印文件信息
    print sftp.stat("/home/testfile.sh")
    #打印目录列表
    print sftp.listdir("/home")
    t.close()
except Exception, e:
    print str(e)

    原文作者:冰 河
    原文地址: https://blog.csdn.net/l1028386804/article/details/79029041
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞