基于Paramiko的交互式命令执行方法及装置制造方法及图纸

技术编号:29488713 阅读:13 留言:0更新日期:2021-07-30 19:00
本发明专利技术提出了一种基于Paramiko的交互式命令执行方法及装置,基于Paramiko的交互式命令执行方法,包括:基于shell类,定义execute函数,包括:第一execute函数和第二execute函数;执行所述第一execute函数,并基于所述第一execute函数中的第一expect判断所执行的命令是非交互式命令还是交互式命令;当判定所执行的命令为交互式命令时,调用所述shell类中的_recv_until函数,当所述_recv_until函数的指定状态为第一expect预设内容时,返回回显字符串;执行所述第二execute函数,当所述第二execute函数中的第二expect为’0’时,完成交互命令的执行。本发明专利技术能够同时执行用于执行交互式和非交互式的命令,避免了Paramiko不能执行交互式命令所带来的不便性,使用其可以大大提高通过程序实现对远程服务器的自动化控制程度。

【技术实现步骤摘要】
基于Paramiko的交互式命令执行方法及装置
本专利技术涉及通信
,尤其涉及一种基于Paramiko的交互式命令执行方法及装置。
技术介绍
Paramiko是对SSH(SecureShell安全外壳协议)协议的一种Python语言实现,可使用其作为SSH客户端去连接SSH服务端,然后执行命令。交互式命令即一条命令在执行过程中还需用户根据提示输入必要的信息后方可继续,如一条删除文件的命令在执行过程中会提示用户是否确认删除,当用户输入yes确认后方才执行删除操作。然而,Paramiko的执行命令的方法无法执行交互式命令。
技术实现思路
本专利技术要解决的技术问题是如何基于Paramiko执行交互式命令,本专利技术提出一种基于Paramiko的交互式命令执行方法及装置。根据本专利技术实施例的基于Paramiko的交互式命令执行方法,包括:基于shell类,定义execute函数,包括:第一execute函数和第二execute函数;执行所述第一execute函数,并基于所述第一execute函数中的第一expect判断所执行的命令是非交互式命令还是交互式命令;当判定所执行的命令为交互式命令时,调用所述shell类中的_recv_until函数,当所述_recv_until函数的指定状态为第一expect预设内容时,返回回显字符串;执行所述第二execute函数,当所述第二execute函数中的第二expect为’0’时,完成交互命令的执行。根据本专利技术的一些实施例,在执行所述第一execute时,当所述第一expect为’0’或”时,调用所述shell类中的_recv_until函数,当所述_recv_until函数的指定状态为命令执行已结束时,返回回显字符串。在本专利技术的一些实施例中,采用_is_cmd_done函数判断命令是否执行结束。根据本专利技术的一些实施例,当所述第二expect为’0’时,所述方法还包括:调用_get_rc获取返回码,并检查所述返回码是否为NOEER_RC,若否,则进行报错;调用_wash_rs清洗回显字符串,将清洗后的字符串作为返回值返回。在本专利技术的一些实施例中,所述execute函数的参数包括:self,用于标识类实例本身;command,用于输入待执行的命令字符串;expect,为期望字符串,当expect为’0’时,表示期望无错误;当expect为”时,表示期望命令执行完成且不检查是否有错;当expect为除’0’和”外的内容时,表示期望显示中出现指定的内容;timeout,用于限定命令超时时间;chan,用于指定Channel。根据本专利技术实施例的基于Paramiko的交互式命令执行装置,包括:定义模块,用于基于shell类,定义execute函数,包括:第一execute函数和第二execute函数;交互命令判断模块,用于执行所述第一execute函数,并基于所述第一execute函数中的第一expect判断所执行的命令是非交互式命令还是交互式命令;第一执行模块,用于当判定所执行的命令为交互式命令时,调用所述shell类中的_recv_until函数,当所述_recv_until函数的指定状态为第一expect预设内容时,返回回显字符串;第二执行模块,用于执行所述第二execute函数,当所述第二execute函数中的第二expect为’0’时,完成交互命令的执行。根据本专利技术的一些实施例,所述装置还包括:报错模块,用于调用_get_rc获取返回码,并检查所述返回码是否为NOEER-_RC,若否,则进行报错;清洗模块,用于调用_wash_rs清洗回显字符串,将清洗后的字符串作为返回值返回。在本专利技术的一些实施例中,所述execute函数的参数包括:self,用于标识类实例本身;command,用于输入待执行的命令字符串;expect,为期望字符串,当expect为’0’时,表示期望无错误;当expect为”时,表示期望命令执行完成且不检查是否有错;当expect为除’0’和”外的内容时,表示期望显示中出现指定的内容;timeout,用于限定命令超时时间;chan,用于指定Channel。根据本专利技术实施例的电子设备,至少包括存储器、处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器在执行所述存储器上的计算机程序时实现上述所述的基于Paramiko的交互式命令执行方法的步骤。根据本专利技术实施例的计算机存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的基于Paramiko的交互式命令执行方法的步骤。根据本专利技术实施例的基于Paramiko的交互式命令执行方法、装置、电子设备及计算机存储介质具有如下有益效果:在任何一种命令行中,交互式命令的使用都是不可完全避免的,如果无法通过程序执行交互式命令,则导致很多操作无法通过程序实现,带来了很大的不便性,由于本专利技术能够同时执行用于执行交互式和非交互式的命令,避免了Paramiko不能执行交互式命令所带来的不便性,使用其可以大大提高通过程序实现对远程服务器的自动化控制程度。附图说明图1为根据本专利技术实施例的基于Paramiko的交互式命令执行方法流程图;图2为根据本专利技术实施例的shell类的属性和方法示意图;图3为根据本专利技术实施例execute方法流程图。具体实施方式为更进一步阐述本专利技术为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本专利技术进行详细说明如后。本专利技术中说明书中对方法流程的描述及本专利技术说明书附图中流程图的步骤并非必须按步骤标号严格执行,方法步骤是可以改变执行顺序的。而且,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。如图1所示,根据本专利技术实施例的基于Paramiko的交互式命令执行方法,包括:S110,基于shell类,定义execute函数,包括:第一execute函数和第二execute函数;S120,执行第一execute函数,并基于第一execute函数中的第一expect判断所执行的命令是非交互式命令还是交互式命令;S130,当判定所执行的命令为交互式命令时,调用shell类中的_recv_until函数,当_recv_until函数的指定状态为第一expect预设内容时,返回回显字符串;S140,执行第二execute函数,当第二execute函数中的第二expect为’0’时,完成交互命令的执行。结合图2所示,根据本专利技术的一些实施例,在执行第一execute时,当第一expect为’0’或”时,调用shell类中的_recv_until函数,当_rec本文档来自技高网...

【技术保护点】
1.一种基于Paramiko的交互式命令执行方法,其特征在于,包括:/n基于shell类,定义execute函数,包括:第一execute函数和第二execute函数;/n执行所述第一execute函数,并基于所述第一execute函数中的第一expect判断所执行的命令是非交互式命令还是交互式命令;/n当判定所执行的命令为交互式命令时,调用所述shell类中的_recv_until函数,当所述_recv_until函数的指定状态为第一expect预设内容时,返回回显字符串;/n执行所述第二execute函数,当所述第二execute函数中的第二expect为’0’时,完成交互命令的执行。/n

【技术特征摘要】
1.一种基于Paramiko的交互式命令执行方法,其特征在于,包括:
基于shell类,定义execute函数,包括:第一execute函数和第二execute函数;
执行所述第一execute函数,并基于所述第一execute函数中的第一expect判断所执行的命令是非交互式命令还是交互式命令;
当判定所执行的命令为交互式命令时,调用所述shell类中的_recv_until函数,当所述_recv_until函数的指定状态为第一expect预设内容时,返回回显字符串;
执行所述第二execute函数,当所述第二execute函数中的第二expect为’0’时,完成交互命令的执行。


2.根据权利要求1所述的基于Paramiko的交互式命令执行方法,其特征在于,在执行所述第一execute时,当所述第一expect为’0’或”时,
调用所述shell类中的_recv_until函数,当所述_recv_until函数的指定状态为命令执行已结束时,返回回显字符串。


3.根据权利要求2所述的基于Paramiko的交互式命令执行方法,其特征在于,采用_is_cmd_done函数判断命令是否执行结束。


4.根据权利要求1所述的基于Paramiko的交互式命令执行方法,其特征在于,当所述第二expect为’0’时,所述方法还包括:
调用_get_rc获取返回码,并检查所述返回码是否为NOEER_RC,若否,则进行报错;
调用_wash_rs清洗回显字符串,将清洗后的字符串作为返回值返回。


5.根据权利要求1所述的基于Paramiko的交互式命令执行方法,其特征在于,所述execute函数的参数包括:
self,用于标识类实例本身;
command,用于输入待执行的命令字符串;
expect,为期望字符串,当expect为’0’时,表示期望无错误;当expect为”时,表示期望命令执行完成且不检查是否有错;当expect为除’0’和”外的内容时,表示期望显示中出现指定的内容;
timeout,用于限定命令超时时间;
chan,用于指定Channel。


6...

【专利技术属性】
技术研发人员:赵万成苗健卢健
申请(专利权)人:瀚高基础软件股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1