首页 > 其他分享 >带内串口 在串口中输入命令

带内串口 在串口中输入命令

时间:2024-10-30 15:34:25浏览次数:1  
标签:cmd invoke self 串口 result str 带内 输入 wait

def hioadm_shell(self, start_cmd, cmd, wait_str='Press CTRL+C', wait_time=2, record_size=10240):
        """进入盘内命令 hioadmshell + 控制盘

        Args:
            start_cmd: hioadmshell + device
            cmd:  next cmd
        Returns:
        """
        std = self.con.exec_command_with_confirm(start_cmd+'\n', next_cmd=cmd, confirm=False, wait_str=wait_str,
                                                 wait_time=wait_time, record_size=record_size)
        self.con.invoke.send('\x03\n')
        return std

def exec_command_with_confirm(self, command,next_cmd="", end_words='\n', confirm=True, wait_str='', wait_time=10, record_size=10240):
"""
SSH执行命令并确认
:param wait_str:
:param confirm:
:param wait_time: 执行命令后,等待时间
:param command: 执行命令
:return: 命令执行结果
"""

self.alive()
log.debug(f'{self.ip} 执行了命令 {command}{end_words}')
self.invoke.send(f'{command}{end_words}')
result = ''
out = ''
try:
if confirm and wait_str:
for i in range(0, wait_time):
result = self.invoke.recv(1024).decode('utf-8',errors='ignore')
print(result)
if 'y/n' in result or 'Y/N' in result:
result = self.exec_command_with_confirm('Y', confirm=False, wait_str=wait_str)
break
else:
sleep(1)
else:
for i in range(0, wait_time):
result += self.invoke.recv(1024).decode('utf-8', errors='ignore')
result = result.replace('\r\r\n', '').replace('\r\n','')
if wait_str in result:
log.info(result)
self.invoke.send('\n')
if next_cmd:
sleep(1)
self.invoke.send(f'{next_cmd}\n')
while True:
sleep(2)
if self.invoke.recv_ready():
out= self.invoke.recv(record_size).decode('utf-8', errors='ignore')
out = out.replace('\r\r\n','').replace('\r\n','')
log.info(out)
self.invoke.send('\n')
if 'CORE0->' in out:
break
return out.replace('CORE0->','')
# log.info('执行结果如下:\n%s\n\n' % result)
break
else:
log.debug('数据未收全,等待1s继续查收')
sleep(1)
# log.info(result)
except Exception as e:
raise Exception(f'命令执行错误{e}')
self.invoke.close()
return result

  

标签:cmd,invoke,self,串口,result,str,带内,输入,wait
From: https://www.cnblogs.com/Tanwheey/p/18515922

相关文章

  • Python输入位置的坐标(即经纬度),计算两点的距离结果保留两位
    可以使用haversine公式来计算两个坐标点之间的距离。以下是一个示例代码:importmathdefcalculate_distance(lat1,lon1,lat2,lon2):#将经纬度转换为弧度lon1=math.radians(lon1)lat1=math.radians(lat1)lon2=math.radians(lon2)lat2=m......
  • C# 串口通讯工具类,一个函数发送命令等待并接收返回数据(适用和仪器仪表通讯)
     一般的串口通讯类或者nuget包提供的串口通讯功能,发送和接收数据是分开的。当需要与仪器或者仪表交互大量指令和数据时,分开收发十分不方便,也不好维护。 所以将发送和等待接收返回的数据写成一个函数来操作完成就十分的方便,这里提供一个非常好用的C#串口通讯工具类,其内部......
  • 在浏览器输入URL之后, 会发生什么?
    在浏览器输入URL之后的流程大体分为六步:DNS解析发起TCP连接(三次握手)发送HTTP请求服务器处理请求并返回HTTP报文浏览器解析渲染页面关闭连接请求(四次挥手)这里用一张可视化图表来演示流程1.DNS解析DNS解析就是寻找在哪台主机上有你需要的资源的过程,也就是寻找......
  • 输入与输出,break和continue语句
    1.字符输出函数putchar格式:putchar(ch)功能:向设备输出一个字符,其中的ch可以是字符型常量也可以是字符变量,也可以是整型常量或变量。当ch为字符型的,输出的是ch的值;而当ch为整型时,输出的是ASCII码对应的字符。putchar()函数只用于单个字符的输出,一次只输出一个字符。可以等价为......
  • 基于HAL库STM32F1虚拟串口(USB)通信、大端模式、结构体对齐
    虚拟串口收发函数、大端模式和小端模式、结构体对齐文章目录虚拟串口收发函数、大端模式和小端模式、结构体对齐前言一、发送函数二、接收函数三、大端模式与小端模式三、结构体对齐前言本文主要是在上一篇中的工程,使用虚拟串口遇到的一些问题:在发送数据直接找到......
  • 从零开始学五笔(九):输入
    接下来就可以开始讲解汉字的输入规则了,此外还会讲下基本笔画、字根、词组的输入规则。注意,在五笔中,无论是汉字还是词组,最多只需四位编码即可打出。‍汉字的分类我们可以将汉字分为两部分:键面汉字和键外汉字。键面汉字是五笔字根中存在的汉字,主要分为以下情况:键名汉字:每个键......
  • Protues的虚拟串口显示问题
    Protues的虚拟串口显示用起来比较方便,但是也有显示不出数据的问题,经研究,发现主要问题在于时钟的配置我这边的试验方式如下:CubeMx配置串口,KeilMDK编写程序,Protues显示 经常遇到虚拟仪表不能显示,或显示乱码。经研究,发现问题主要在于波特率和时钟1、波特率一定要一致(CubeMx、Ke......
  • 关于java输入易错点
    nextLine()自动读取了被next()去掉的Enter作为它的结束符,所以没办法给s2从键盘输入值。经过验证,发现其他的next的方法,如nextDouble(),nextFloat(),nextInt()等与nextLine()连用时都存在这个问题,解决的办法是:在每一个next()、nextDouble()、nextFloat()、nextInt()等语句之后......
  • C语言经典20例(输入数组元素,将其反转并输出)
    1.定义数组:首先定义一个数组来存储输入的元素。2.输入元素:使用循环结构(如for循环)来从用户那里获取数组元素。3.反转数组:通过交换数组两端的元素来实现反转,这通常需要一个循环,该循环从数组的两端开始,向中间移动。4.输出反转后的数组:再次使用循环结构来打印反转后的数组。......
  • 输入网址会发生什么
    ●首先会解析URL,分析使用的协议和请求的资源路径●然后会查询请求的资源浏览器中是否有缓存,如果有缓存且没有失效,那么就直接返回,反之则继续向服务器请求●如果请求的资源不在本地,那么需要进行DNS解析,最终找到对应的IP地址。●获取MAC地址,浏览器得到目的地址IP之后,还需要知......