前提条件:
1、安装linux系统
2、打开linux系统的ssh服务
3、关闭linux系统远程防火墙
4、需要安装paramiko服务
使用场景:
主要应用在远程访问系统并执行命令。
#coding=utf-8
import paramiko
import datetime
import os
class SSHParamiko:
def __init__(self, ip, port, user, password):
self.ip = ip
self.port = port
self.user = user
self.password = password
# 执行命令的函数
def run_cmd(self, cmd):
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机,know_hosts是存储公钥信息。
# 加上这句话不用担心选yes的问题,会自动选上(用ssh连接远程主机时,第一次连接时会提示是否继续进行远程连接,选择yes)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh.connect(self.ip, self.port, self.user, self.password)
# exec_command参数使用只需要执行一次的命令,因为执行完该命令以后,shell会自动回到ssh初始连接的shell状态下
# stdin,out,err,对应shell下的标准输入,输出和错误。
stdin, out, err = ssh.exec_command(cmd)
code = out.channel.recv_exit_status()
if code == 0:
print "命令执行成功..."
else:
print "命令执行失败..."
out = out.read()
err = err.read()
ssh.close()
if not err:
return out
else:
return err
# 下载单个文件的函数
def down(self,remotedir, localdir):
t = paramiko.Transport((self.ip, self.port))
t.connect(username=self.user, password=self.password)
ftp = paramiko.SFTPClient.from_transport(t)
try:
ftp.get(remotedir, localdir)
print "下载成功"
except:
print "下载失败"
t.close()
if __name__ == '__main__':
ssh = SSHParamiko("172.20.10.3",22 ,"root", "luohao1993")
result = ssh.run_cmd("ls -i")
print result
ssh.down("/home/test.txt", "/Users/test/test.txt")