使用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()
使用paramiko模块进行封装,远程操作linux主机的更多相关文章
- 远程操作Linux主机
通过putty文件访问: 下载路径:https://the.earth.li/~sgtatham/putty/0.70/w32/putty-0.70-installer.msi 通过Python文件执 ...
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息
1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...
- Notepad++【远程操作linux文件】
目录 目的 预期效果 操作步骤 1.打开插件 2.安装NppFTP 3.连接远程主机 注意 目的 通过Notepad++远程登录linux主机,修改配置文件 预期效果 在Notepad++上登录lin ...
- 远程联机linux主机
远程联机linux主机 推荐使用 ssh 如 ssh user@www.abc.com(ssh使用公钥+私钥非对称加密,数据传输安全,不要使用telnet) 传输文件:sftp 或者 scp 若想使 ...
- putty怎么用?如何使用Putty远程管理Linux主机
Putty是一个免费的Windows 32平台下用于telnet.rlogin和ssh客户端的远程客户端工具,可以通过PUTTY快速的实现SSH连接linux等主机,下面小编就给大家演示一下如何使用P ...
- 使用SSH客户端远程登录Linux主机
使用SSH客户端远程登录Linux主机(可替代samba.ftp服务) . Linux系统起初就是为多用户而产生的,可以允许多个用户同时登录linux主机各自进行操作,如图1所示: 图1 SSH(Se ...
- python的paramiko模块-远程登录linux主机并操作
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作. 如果python服务器对被远程控制机器开启了免密验证,即在python服务器上可通过ssh 用户名@被控制机 ...
- Python Paramiko模块与MySQL数据库操作
Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...
- python中使用paramiko模块并实现远程连接服务器执行上传下载
paramiko模块 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系 ...
随机推荐
- 通过BGP实现流量劫持
BGP BGP全称是Border Gateway Protocol,翻译成中文是边界网关协议,用于全球各个AS之间的路由.它的地位是毋庸置疑的,如果没有它就没有全球的因特网.因为全球各个AS都等价的维 ...
- kubernets学习笔记
K8s CI :持续集成CD :持续交付 D --DeliveryCD :持续部署 D --Deployment Kubernetes Cluster: Masters: (3-host 做高可用)A ...
- JS如何判断鼠标滚轮向上还是向下滚动
前几天偶然看到某前端群有人在问:JS如何判断鼠标滚轮向上还是向下滚动? 我想了想,有点蒙蔽,心想难道不是用scrollTop来判断吗? 但我不确定,也出于好奇心,于是开始了一番探索 思路:通过even ...
- Springboot对SpringMVC如何扩展配置
原文地址:http://www.javayihao.top/detail/171 概述 Springboot在web层的开发基本都是采用Springmvc框架技术,但是Springmvc中的某些配置在 ...
- 记一次Tomcat启动报错Failed to start component [StandardEngine[Catalina].Standard
今天启动项目的时候,发现tomcat一直报错,之前都一直没有问题的啊,提示 org.apache.catalina.LifecycleException: Failed to start ...
- C# detect latest .net framework installed on PC
static void GetNetVersionDemo() { using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.L ...
- ASP.NET Core 2.2 WebApi 系列【九】使用SignalR
1.添加 SignalR 客户端库 右键点击项目->然后选择“添加” >“客户端库” 提供程序选择:unpkg ,库选择:@aspnet/signalr@1.1.4 选择“选择特定文件” ...
- ASP.NET Core 2.2 WebApi 系列【一】搭建ASP.NET Core WebApi项目
一.步骤 从“文件”菜单中选择“新建”>“项目” . 选择“ASP.NET Core Web 应用程序”模板,再单击“下一步” . 将项目命名为 NetCoreWebApi,然后单击“创建” . ...
- wx-show与!show
切换的表示 <!--index.wxml--> <view class="container"> <view class="item&quo ...
- css基础,css选择器
07.29自我总结 css基础 一.什么是CSS CSS是级联样式表 CSS术语标记语言,没有逻辑 CSS作用 完成网页内容的样式与布局 二.CSS的三种引入方式 1. 内联式 书写位置:在 head ...