python远程连接linux主机_python 使用paramiko模块进行封装,远程操作linux主机的示例代码...

import time

import paramiko

class HandleParamiko:

'''

定义一个linux处理类

'''

def __init__(self, hostname, password, port=22, username='root'):

'''

构造器

:param hostname: 主机ip,type:str

:param password: 密码,type:str

:param port: 端口,type:int 默认22

:param username: 用户名,type:str

:return:

'''

self.t = None

self.sftp = None

self.hostname = hostname

self.password = password

self.port = port

self.username = username

self.client = paramiko.SSHClient() # 实例化SSHclient

self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加策略,保存服务器的主机名和密钥信息

try:

self.client.connect(hostname=hostname,

port=port,

username=username,

password=password)

except Exception as all:

print(f"连接异常,请确认参数是否有误:{all}")

self.channel = self.client.invoke_shell() # 创建一个交互会话的对象

def sftp_client(self):

'''

创建一个sftp上传下载客户端

:return: sftp对象,调用put()和get()分别实现文件的上传和下载

'''

try:

self.t = paramiko.Transport((self.hostname, self.port))

self.t.connect(username=self.username, password=self.password)

self.sftp = paramiko.SFTPClient.from_transport(self.t)

return self.sftp

except FileNotFoundError as e:

print(f"FileNotFoundError:{e}")

def cmd_res(self, cmd, get_way='out'):

'''

定义一个一次性会话方法(优点:响应速度快,缺点:不能保持会话)

:param cmd: linux命令,type:str

:param get_way: 支持:‘in'、‘out'、‘err'三种方式

:return: 回显结果

'''

stdin, stdout, stderr = self.client.exec_command(cmd)

if get_way == 'in':

return str(stdin.read()).replace('\\n', '\n')

elif get_way == 'out':

return str(stdout.read()).replace('\\n', '\n')

elif get_way == 'err':

return str(stderr.read()).replace('\\n', '\n')

else:

print("输入获取的方式有误,获取回显结果失败!")

def cmd_ssh(self, cmd):

'''

定义一个交互会话的方法(优点:交互式会话,缺点:响应速度慢)

:param cmd: linux命令,type:str

:return:

'''

self.channel.send(cmd+'\n')

time.sleep(5)

try:

res = self.channel.recv(1024 * 100000).decode('utf-8')

except:

res = self.channel.recv(1024 * 100000).decode('gbk')

return res

def close_channel(self):

'''

关闭交互式会话

:return:

'''

self.channel.close()

def close_client(self):

'''

关闭SSH连接

:return:

'''

self.client.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值