转载请注明出处: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)