python3远程执行linux命令_【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件...

本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传、下载

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。

由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOS X, Windows等都可以支持

远程执行命令

def ssh_connect(host, username, passwd, *commands):

"""远程连接执行命令"""

import paramiko

try:

# flag = True

ssh = paramiko.SSHClient() # 建立一个ssh client对象

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 使用自动保存服务器的主机名和密钥信息的策略

ssh.load_system_host_keys() # 每次连线时都会检查host key 与纪录的 host key 是否相同

ssh.connect(hostname=host,

username=username,

password=passwd,

timeout=300)

result = {}

for command in commands:

stdin, stdout, stderr = ssh.exec_command(command)

result[command] = stdout.read(), stderr.read() # 获取标准输出和标准错误输出的值

err_list = stderr.readlines()

if err_list:

print("ERROR: ",err_list[0])

exit(1)

break

ssh.close()

return result

except Exception as e:

print( 'ssh %s@%s: %s' % (username, host, e))

从服务器下载文件

def ssh_get_file(host, username, passwd, remotepath, localpath):

import paramiko

try:

ssh = paramiko.Transport(host) # 建立一个连接对象

ssh.connect(username=username,

password=passwd

)

sftp = paramiko.SFTPClient.from_transport(ssh)

sftp.get(remotepath, localpath)

sftp.close()

except Exception as e:

print('Get data from %s@%s:%s, %s' % (username, host, remotepath, e))

上传文件到服务器

def ssh_upload_file(host, username, passwd, localpath, remotepath):

import paramiko

try:

ssh = paramiko.Transport(host) # 建立一个连接对象

ssh.connect(username=username,

password=passwd

)

sftp = paramiko.SFTPClient.from_transport(ssh)

sftp.put(localpath, remotepath)

sftp.close()

except Exception as e:

print('Get data from %s@%s:%s, %s' % (username, host, localpath, e))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值