Xshell 执行python脚本

2023-11-13

XShell支持使用VB,JS,Python脚本去启动自动化任务。这里介绍如何写Xshell的Python脚本。

首先要在脚本中定义一个Main()函数,Xshell会调用这个函数,也就是程序的入口。

然后,通过官方提供的API去完成脚本的书写。

xshell官网API原文:https://netsarang.atlassian.net/wiki/spaces/ENSUP/pages/419957269/Script+API

具体的API我已经同名实现并打包,并且提供详细的中文注释,可以100%当作官方API去调用,在实际执行时,需要注释掉导入包的语句,就像下面的示例一样。

获取途径:https://github.com/AZMDDY/xshapi

在项目中,我封装了一些实际工作中会用到的接口(https://github.com/AZMDDY/xshapi/blob/main/util.py),可以直接使用。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

example-1: 自动切换到root用户

# import xsh.Session
# import xsh.Screen
# import xsh.Dialog

def get_current_row_info(num: int):
    """
    获取终端当前行num个字符
    """
    screenRow = xsh.Screen.CurrentRow
    line = xsh.Screen.Get(screenRow, 1, screenRow, num)
    return line


def Main():
    # 打开一个已经存在的会话
    # xsh.Session.Open("ssh://user:pass_word@192.168.31.52:22")
    xsh.Session.Open("G:\\user\\Documents\\NetSarang Computer\\7\\Xshell\\Sessions\\192.168.31.52.xsh")
    xsh.Screen.Synchronous = True
    xsh.Session.Sleep(1000)

    # 切换到root用户
    xsh.Screen.Send("su root\r")
    xsh.Session.Sleep(100)
    line = get_current_row_info(30)
    if "Password" in line:
        xsh.Screen.Send("paas_word\n")

example-2: 登录另一台设备

# import xsh.Session
# import xsh.Screen
# import xsh.Dialog
import re


def get_current_row_info(num: int):
    """
    获取终端当前行num个字符
    """
    screenRow = xsh.Screen.CurrentRow
    line = xsh.Screen.Get(screenRow, 1, screenRow, num)
    return line


def Main():
    # 在一个存在的会话中执行
    xsh.Screen.Synchronous = True
    xsh.Session.Sleep(1000)

    xsh.Screen.Send("ssh zzb@192.168.31.52\r")
    xsh.Session.Sleep(100)

    # 当第一次登录时,会验证初始ssh连接
    line = get_current_row_info(100)
    if re.search("yes/no", line):
        xsh.Screen.Send("yes\r")
        xsh.Session.Sleep(100)

    # 终端出现提示输入密码时,输入密码
    line = get_current_row_info(100)
    if re.search("password", line, flags=re.I):
        xsh.Screen.Send("pass_word\r")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xshell 执行python脚本 的相关文章

随机推荐

  • 使用python搭建一个简易的Web服务

    介绍 简单的说 web服务器就是机器上监听了本地的IP和端口的一个进程 当有客户的请求进来时 它会响应客户的请求并返回相应的信息 客户端和服务端之间的通信基于HTTP协议 客户端可以是浏览器或者任何支持HTTP的应用 我们平时访问网页或手机
  • 2021-06-29 ffmpeg临时记录

    我们将 H264 和 AAC 码流存储为MP4文件的时候 就需要在 MP4文件中增加两个流通道 一个存储Video H264 一个存储Audio AAC 假设H264和AAC只包含单个流通道 avformat new stream 即在 A
  • 21. 实战:多线程+xpath抓取大量菜价信息(四种方法)

    目录 前言 目的 思路 代码实现 多线程 xpath 1 抓取单个页面 2 创建线程池 3 保存到文件 运行效果 完整代码 举一反三 多进程 xpath 多线程 bs4 多进程 bs4 总结 前言 我们学习了多线程 多进程对于提高效率的方法
  • Qt 的一些心得(背景设置,圆角,半透明)

    一 背景刷成黑色 前景色设为白色 方法一 paltette方式 经测试 该方法不会影响到其他控件 推荐使用 QPalette bgpal palette bgpal setColor QPalette Background QColor 0
  • SpringBoot课程笔记

    黑马程序员SpringBoot2课程笔记 一 基础篇 略 二 运维实用篇 1 SpringBoot运行与部署 略 2 SpringBoot配置 2 1 临时属性配置 可以在启动Boot程序时添加临时属性改变配置 2 1 1 属性加载优先级
  • java 静态类的实例_java中类的静态成员和实例成员

    一 基本介绍 java中的静态成员包括静态方法和静态成员变量 静态成员都是由static修饰的 java中的实例成员包括实例方法和实例成员变量 实例成员都没有被static修饰 二 使用语法 关于使用静态成员和实例成员的具体语法规则如下 p
  • 关于指针运算的一道题

    目录 刚看到这道题的时候我也和大多数小白一样感到无从下手 但是在我写这篇博客的前几分钟开始我对这道题有了一点点的理解 所以我就想着趁热打铁 写一篇博客来记录一下我的想法 题目如下 画图 逐一解答 题一 cpp cpp 1 c 2 POINT
  • 苹果手机10秒解除锁屏_忘记苹果锁屏密码10秒解决 音量键选择wipedata/

    导读 谈到苹果 大家应该都不陌生 有人问忘记手机密码了怎么办 另外 还有朋友想问oppo忘记图案解锁怎么办 这到底怎么回事呢 其实锁屏密码是四位数密码呢 下面是小编精心为你们整理的忘记苹果锁屏密码10秒解决 欢迎大家一起来阅读 忘记苹果锁屏
  • Android 获取当前应用的版本号和当前系统的版本号

    1 获取当前程序版本名 我们可以在AndroidManifest xml中设置程序的版本号等 如android versionName 1 0 那如果想在代码中获取这个版本号呢 可以用如下方法 这些修改版本号时只需要修改AndroidMan
  • 离线安装mariadb

    离线安装mariadb 文章目录 离线安装mariadb 一 下载Rpm包 二 按顺序安装依赖 galera安装 安装mariadb相关 三 安全配置 四 配置权限 五 通过navicat测试 一 下载Rpm包 前往MariaDB官网选择所
  • 如何写好一篇高质量的IEEE/ACM Transaction级别的计算机科学论文?

    http www zhihu com question 22790506 answer 81787300 f3fb8ead20 ea27429f8cbe31fd9183a68ccb41caa7 from timeline isappinst
  • uni——传参出现问题[object Object],[object Object]

    案例说明 后台需要的参数样式 goods lists good id 5 num 11 good id 9 num 3 good id 10 num 34 按照此格式传参发现 解决办法 出现 object Object 的原因通常是因为在将
  • linux 端口转发 udp,Linux Socat TCP/UDP端口转发及使用

    socat是不支持端口段转发 只适用于单端口或者少量端口 如果需要大量端口考虑使用 iptables 或 haproxy haproxy 只能转发TCP Socat安装 Centos 系统 yum install y socat Debia
  • 2023新能源汽车行业薪酬报告

    导读 数据表明 虽然受疫情封控等多重不利因素影响 但新能源汽车产业依然活力强劲 2022年 新能源汽车产销数据分别为 705 8 万辆和 688 7 万辆 同比增长分别为 96 9 和 93 4 连续 8 年保持全球第一 此外 新能源汽车市
  • C语言考试题目(一)

    一 单项选择题 本大题共25小题 每题2分 共50分 1 C语言的源程序通常的扩展名是 A cpp B obj C exe D c 2 下列选项中 属于多行注释 A B C D 3 以下不合法的字符常量是 A ab B 2 C A D n
  • bootstrap 框架学习笔记

    2019独角兽企业重金招聘Python工程师标准 gt gt gt http getbootstrap com 在这个上面下载bootstrap 为什么使用 Bootstrap 移动设备优先 自 Bootstrap 3 起 框架包含了贯穿于
  • Linux下SUDO出现Unable to resolve host XXX解决方法

    转载 Ubuntu环境 假设这台机器名字叫abc 机器的hostname 每次执行sudo 就出现这个警告讯息 sudo unable to resolve host abc 虽然sudo 还是可以正常执行 但是警告讯息每次都出来 而这只是
  • SAP调用HTTP和HTTPS

    HTTPS https archive sap com discussions thread 482084 Note 510007 SAP Kernel版本为721 SAP ECC 6 0 SAP BASIS700 调用公司的https还是
  • 常见hash加密及判定

    常见hash加密及判定 unix系系统 ES Unix 例子 IvS7aeT4NzQPM 说明 Linux或者其他linux内核系统中 长度 13 个字符 描述 第1 2位为salt 例子中的 Iv 位salt 后面的为hash值 系统 M
  • Xshell 执行python脚本

    XShell支持使用VB JS Python脚本去启动自动化任务 这里介绍如何写Xshell的Python脚本 首先要在脚本中定义一个Main 函数 Xshell会调用这个函数 也就是程序的入口 然后 通过官方提供的API去完成脚本的书写