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

bea8c5a55e65a200c3aa5024febca573.png

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", "

")

elif get_way == "out":

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

")

elif get_way == "err":

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

")

else:

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

def cmd_ssh(self, cmd):

"""

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

:param cmd: linux命令,type:str

:return:

"""

self.channel.send(cmd+"

")

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()

以上就是python 使用paramiko模块进行封装,远程操作linux主机的示例代码的详细内容,更多关于python paramiko模块的资料请关注云海天教程其它相关文章!

原文链接:https://www.cnblogs.com/xiaogongjin/p/11364982.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Paramiko库实现PythonLinux系统的远程连接。下面是连接步骤: 1. 安装Paramiko库 在Windows系统中,打开命令行窗(cmd)或PowerShell窗,输入以下命令进行安装: ``` pip install paramiko ``` 2. 编写Python代码 使用Paramiko库,编写Python代码连接Linux系统,示例如下: ``` import paramiko # 远程主机IP地址、用户名和密码 hostname = '192.168.1.100' username = 'username' password = 'password' # 创建SSH客户端对象 ssh = paramiko.SSHClient() # 自动添加主机名和主机密钥到本地主机的HostKeys对象中 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接远程主机 ssh.connect(hostname=hostname, port=22, username=username, password=password) # 执行命令 stdin, stdout, stderr = ssh.exec_command('ls -l') # 输出结果 print(stdout.read().decode()) # 关闭连接 ssh.close() ``` 3. 使用Django框架 在Django框架中,可以将上述代码封装成函数或类,以便在Web应用中调用。例如,可以在views.py文件中编写如下代码: ``` import paramiko from django.http import HttpResponse def connect_linux(request): # 远程主机IP地址、用户名和密码 hostname = '192.168.1.100' username = 'username' password = 'password' # 创建SSH客户端对象 ssh = paramiko.SSHClient() # 自动添加主机名和主机密钥到本地主机的HostKeys对象中 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接远程主机 ssh.connect(hostname=hostname, port=22, username=username, password=password) # 执行命令 stdin, stdout, stderr = ssh.exec_command('ls -l') # 输出结果 result = stdout.read().decode() # 关闭连接 ssh.close() return HttpResponse(result) ``` 这样,在Django的urls.py文件中配置路由,即可通过Web应用访问Linux系统并执行命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值