使用Python来写模拟Xshell实现远程命令执行与交互

news2024/11/23 8:40:13

一、模块

这里使用的是

paramiko带三方库
pip install paramiko

二、效果图

三、代码实现(这里的IP,用户名,密码修改为自己对应服务器的)

import paramiko
import time

class Linux(object):
    # 参数初始化
    def __init__(self, ip, username, passwd, timeout=30):
        self.ip = ip
        self.username = username
        self.passwd = passwd
        self.timeout = timeout
        self.t = ''
        self.chan = ''
        self.try_times = 3

    # 创建连接
    def connect(self):
        while True:
            try:
                self.t = paramiko.Transport(sock=(self.ip, 22))
                self.t.connect(username=self.username, password=self.passwd)
                self.chan = self.t.open_session()
                self.chan.settimeout(self.timeout)
                self.chan.get_pty()
                self.chan.invoke_shell()
                print(f'{self.ip}连接成功。',end='')
                # print('接收到的网络数据解码为str')
                # print(self.chan.recv(65535).decode('utf-8'))
                return
            except Exception as e:
                if self.try_times != 0:
                    print('连接失败正在重试!')
                    self.try_times -= 1
                else:
                    print('重试3次连接失败程序结束。')
                    exit(1)

    # 关闭连接
    def close(self):
        self.chan.close()
        self.t.close()

    def send_command(self, cmd):  # 重命名方法为send_command
        cmd += '\r'
        result = ''
        # 发送命令
        self.chan.send(cmd)  # 修改此处为self.chan.send(cmd)
        # 回显很长的命令可能要执行很久,通过循环分批次回显,执行成功返回true,失败false
        while True:
            time.sleep(0.5)
            ret = self.chan.recv(65535)
            ret = ret.decode('utf-8')
            result += ret
            return result


if __name__ == '__main__':
    host = Linux('192.168.12.155', 'root', '6663614lcx')
    host.connect()
    adsl = host.send_command('adsl-start')  # 发送一个拨号指令
    result = host.send_command('whoami')  # 查看IP的命令
    getname = result.split('\r')
    name = getname[-1]
    while True:
        a = input(name)
        if a =='Q':
            break
        result = host.send_command(a)  # 查看IP的命令
        info = result.split('\r')
        t = info[-1]
        result=result.replace(t,'')
        result = result.replace(a, '')
        print(result,end='')
        name=info[-1]
    host.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1021060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue项目打包_以生产环境prod模式打包_vue-cli-service 不是内部或外部命令,也不是可运行的程序---vue工作笔记0025

打开命令行: 首先执行npm install 不执行会报错: npm run build:prod --scripts-prepend-node-pathauto 然后再这样执行就是以生产环境模式打包了.

leetcode1669. 合并两个链表(java)

合并两个链表 题目描述指针代码演示 题目描述 难度 - 中等 leetcode1669. 合并两个链表 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。 下图中蓝色…

Python实现猎人猎物优化算法(HPO)优化随机森林分类模型(RandomForestClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

sql explain

目录 1. sql explain每个字段对应的含义1.1. id1.2. select_type1.3. table1.4. partitions1.5. type1.6. possible_keys1.7. key1.8. key_len1.9. ref1.10. rows1.11. Extra 索引实践联合索引最左列原则全值匹配不建议在索引列上做任何操作, 否则索引会失效转而全表扫描尽量使…

2023 ICPC Asia EC网络预选赛第一场赛题

文章目录 2023 ICPC Asia EC Online Qualifier Round 1A Qualifiers Ranking RulesB StringC Multiply Then PlusD TransitivityE Magical PairF Alice and BobG Spanning TreeH Range Periodicity QueryI Pa?sWorDJ Minimum Manhattan DistanceK Minimum Euclidean DistanceL…

Openresty(二十二)ngx.balance和balance_by_lua终结篇

一 灰度发布铺垫 ① init_by_lua* init_by_lua init_by_lua_block 特点: 在openresty start、reload、restart时执行,属于master init 阶段机制: nginx master 主进程加载配置文件时,运行全局Lua VM级别上的参数指定的Lua代码场景: …

一文快速创建前端react项目

目前React是最受欢迎和广泛使用的JavaScript库之一。许多知名的公司和组织都在使用React来构建它们的Web应用程序,包括Facebook,Netflix等。学习好React将会使你能够获得更多的就业机会和职业发展机会。 要快速创建React项目,你可以使用Creat…

记录一次OSSClient使用不当导致的OOM排查过程

首发:公众号《赵侠客》 前言 最近线上有个比较边缘的项目出现OOM了,还好这个项目只是做一些离线的任务处理,出现OOM对线上业务没有什么影响,这里记录一下排查的过程 Dump日志查看 项目配置的主要JVM参数设置如下: …

SAP入门到放弃系列之QM质量检验流程概述

目录 一、流程概述二、操作步骤概述2.1 主数据维护2.2 业务操作 一、流程概述 质量检验流程-Inspection Process Flow,通常由于预先设定的一些规则条件自动触发或者手工触发,例如库存地之间的调拨、生产完工入库检验、采购入库的检验、客户交货前检验等等。另外还有…

GMS地下水数值模拟丨GMS各模块、三维地质模型构建及与MODFLOW耦合、地下水流动数值模拟及报告编制、地下水溶质运移模型、反应性溶质运移等

目录 第一部分 地下水数值模拟理论模块 第二部分 地下水数值模拟数据收集、准备及预处理 第三部分 GMS各模块实践 第四部分 三维地质模型构建及与MODFLOW耦合 第五部分 地下水流动数值模拟及报告编制 第六部分 地下水溶质运移模型 第七部分 反应性溶质运移 更多应用 以…

OpenHarmony ArkTS工程目录结构(Stage模型)

一、应用工程结构 图片来源:OpenHarmony官网 AppScope > app.json5:应用的全局配置信息。 entry:OpenHarmony工程模块,编译构建生成一个HAP包。 src > main > ets:用于存放ArkTS源码。 src > main > …

昔日顶流VC宠儿,如今“流血”上市!

今年全球最大IPO安谋控股(Arm Holdings)成功上市后,美国的IPO市场正在被激活。美国最大的杂货配送平台Instacart近日更新了招股书,将IPO目标价从原来的26-28美元每股上调至28-30美元,对应公司估值约77亿美元-82.8亿美元…

SpringSecurity 核心组件

文章目录 SpringSecurity 结构组件:SecurityContextHolder组件:Authentication组件:UserDetailsService组件:GrantedAuthority组件总结 SpringSecurity 结构 在SpringSecurity中的jar分为4个,作用分别为 jar作用spri…

idea配置tomcat项目,运行起来却无法访问项目

好长时间都没碰使用tomcat部署的老项目了 最近碰到一个tomcat老项目,都忘记怎么用idea配置了 按记忆配置好之后,启动tomcat,却怎么也访问不了项目 最后才发现根本没有启动编译后的项目代码 只需要右键项目,选择Open Module Se…

如何通过百度SEO优化提升网站排名(掌握基础概念,实现有效优化)

随着互联网的发展,搜索引擎优化(SEO)成为了网站优化中不可或缺的一部分。在中国,百度搜索引擎占据着主导地位,因此掌握百度SEO概念和优化技巧对网站的排名和曝光非常重要。 百度SEO排名的6个有效方法: 首…

福建企业可以申请泛域名https证书吗

https域名https证书中有一种比较特殊的https证书,可以用一张https证书保护主域名以及主域名下所有子域名,这种证书通常被称为通配符https证书或泛域名https证书。那么企业可以申请泛域名https证书吗?今天就随SSL盾小编了解泛域名https证书。 1.泛域名h…

共享门店模式:让你的连锁门店变成金鸡母

共享门店模式是一种创新的经营方式,它可以让门店的资源和收益与其他人共享,实现互利共赢。共享门店模式有两种主要形式:投资型和消费型。投资型共享门店模式需要股东投入一定的资金,用于锁客和获取分红收益。消费型共享门店模式则…

【免费内网穿透】cpolar从0开始使用

cpolar从0开始使用 具体步骤cpolar下载注册安装 安装启动创建或修改启动 公网远程访问内网web站点初步完成 最近学习到的新东西。 原理类似于使用cpolar的服务器进行跳转 具体步骤 下载CPOLAR 在您的机器上下载并运行cpolar客户端,并为其提供一个本地的网络服务的…

如何合并pdf?三种合并方法教会你

如何合并pdf?合并PDF文件可以将多个PDF文档合并为一个文件,提高文件管理的效率和便利性。无论是为了整理和归档文件,还是为了方便共享和传输文件,合并PDF都是非常实用的操作。通过合并PDF,可以将相关的文件整合在一起&…

项目管理:管理成果是控制还是天意?项目经理的责任是什么?

有人坚信管理具有决定性的作用,主张管理者需对组织的成功或失败负全责。 另一些人则认为,管理者对管理成果的影响其实相当有限,因为存在许多他们无法控制的因素。 组织的成功或失败往往更多地归因于这些无法控制的因素,而非管理者…