基于多命名会话的多层跳转会话管理方法、装置、设备及介质与流程
本技术涉及网络通信,尤其涉及一种基于多命名会话的多层跳转会话管理方法、装置、设备及存储介质。
背景技术:
1、在运维管理场景中,跨堡垒机进行多级访问时,传统方式需在单条命令中嵌套多层ssh调用。嵌套层数越多,引号、管道及特殊字符在逐层shell解析过程中易被吞并或转义错乱,导致命令失效且难以排错。同时,现有无状态会话无法保持目录、用户及跳转连接状态,多步操作需反复重连。当多台机器需同时操作时,须开启多个互相无关联的终端,各终端所在主机、用户和目录状态须由人工记忆,无法实现有效的并行管理与定位。
技术实现思路
1、鉴于以上内容,本技术提供一种基于多命名会话的多层跳转会话管理方法、装置、设备及存储介质,其目的在于解决上述技术问题。
2、第一方面,本技术提供一种基于多命名会话的多层跳转会话管理方法,所述方法包括:
3、维护多个命名会话,每个所述命名会话包括与远端设备之间基于远程终端协议的实时交互通道,且每个所述命名会话独立记录当前所在目录、当前用户标识以及已建立的跳转链路状态;
4、获取待执行的命令文本;
5、当所述命令文本未指定目标会话标识时,将所述命令文本发送至当前默认命名会话,并通过所述当前默认命名会话所对应的实时交互通道,以将所述命令文本发送至对应的远端shell执行;
6、当所述命令文本指定目标会话标识时,将所述命令文本发送至指定命名会话,并通过所述指定命名会话所对应的实时交互通道,以将所述命令文本发送至对应的远端shell执行;以及
7、解析执行所述命令文本的命名会话的当前提示符,从所述当前提示符中提取当前所在主机信息和当前用户信息,并将执行所述命令文本的命名会话确定为新的默认命名会话。
8、在一些实施例中,所述通过所述当前默认命名会话或所述指定命名会话所对应的实时交互通道,以将所述命令文本发送至对应的远端shell执行,包括:
9、当所述命令文本对应的执行路径需要跨多层网络设备跳转时,通过所述实时交互通道依次向当前所处shell发送切换用户命令和/或远程登录跳转命令;
10、在每发送一条切换命令后,通过所述实时交互通道接收该条切换命令返回的原始输出流;
11、根据所述原始输出流中的提示符检测该条切换命令是否执行完毕,并在确认执行完毕后再发送下一条切换命令,直至完成从当前层级至目标层级的全部逐层跳转;
12、在逐层跳转过程中,每完成一层跳转后,将当前命名会话记录中的当前所在目录、当前用户标识以及跳转链路状态更新为跳转后的状态,以使后续接收到的命令直接沿用更新后的状态执行。
13、在一些实施例中,所述根据所述原始输出流中的提示符检测该条切换命令是否执行完毕,包括:
14、获取预设的提示符正则模板;
15、将所述原始输出流的尾部字符与所述提示符正则模板进行匹配;
16、若匹配成功,则判定该条切换命令执行完毕;
17、若匹配失败,则对所述原始输出流进行逆向字符扫描,截取最后一个换行符之后的尾部候选字符串,去除所述尾部候选字符串中的ansi控制符后作为候选提示符;
18、基于所述候选提示符与该命名会话历史记录中最近一次成功匹配的模板之间的编辑相似度,确定该条切换命令是否执行完毕。
19、在一些实施例中,所述基于所述候选提示符与该命名会话历史记录中最近一次成功匹配的模板之间的编辑相似度,确定该条切换命令是否执行完毕,包括:
20、计算所述候选提示符与所述最近一次成功匹配的模板之间的字符编辑操作次数,所述编辑操作包括字符插入、删除和替换;
21、将所述编辑操作次数除以所述候选提示符与所述最近一次成功匹配的模板两者中的最大长度值,得到归一化编辑距离,并基于所述归一化编辑距离确定所述编辑相似度;
22、当所述编辑相似度高于预设阈值时,将所述最近一次成功匹配的模板作为本次检测结果并确定该条切换命令执行完毕。
23、在一些实施例中,在将所述最近一次成功匹配的模板作为本次检测结果并确定该条切换命令执行完毕之后,所述方法还包括:
24、将所述候选提示符作为补充模板存入对应命名会话的临时缓存区,并为所述补充模板创建生命周期计时器以及设定有效截止时刻;
25、在所述生命周期计时器超时前,当所述命名会话再次触发切换命令的完成检测时,将接收到的原始输出流的尾部字符与所述临时缓存区中的补充模板进行基于编辑相似度的匹配;
26、若匹配成功,则判断当前时刻是否超过所述有效截止时刻;
27、若当前时刻未超过所述有效截止时刻,则刷新所述生命周期计时器,并将所述补充模板的连续失效次数归零;
28、若当前时刻已超过所述有效截止时刻,则舍弃该补充模板并从所述临时缓存区中移除;
29、若匹配失败,则将该补充模板的连续失效次数加1,且当所述补充模板的连续失效次数超过失效次数阈值,则从所述临时缓存区中移除该补充模板,在移除后,若后续再次匹配成功,则重新以初始生命周期存入缓存。
30、在一些实施例中,在将所述命令文本发送至当前默认命名会话之前,所述方法还包括:
31、获取所述当前默认命名会话所对应的实时交互通道的活性状态;
32、当检测到所述当前默认命名会话主动关闭或网络连接中断时,确认所述当前默认命名会话失效;
33、根据预设的存活会话优先级列表,从除所述当前默认命名会话之外的剩余命名会话中,选取优先级最高的一个命名会话作为新的默认命名会话;
34、将所述新的默认命名会话的标识进行上报,并将所述失效的默认命名会话从所述存活会话优先级列表中移除或置为不可选状态。
35、在一些实施例中,当同时获取到来自多个客户端的待执行的命令文本时,所述方法还包括:
36、为每个所述命名会话配置独立的命令执行锁以及与所述命令执行锁关联的命令请求队列;
37、当同一命名会话接收到来自不同客户端的多个待执行的命令文本时,将多个命令按照接收时间的先后顺序依次存入该命名会话的所述命令请求队列中,并为每个命令请求分配递增的序列号;
38、在通过执行线程从所述命令请求队列中取出队首命令之前,获取所述命令执行锁;
39、若所述命令执行锁已被其他执行线程持有,则当前执行线程进入阻塞等待状态,直至所述命令执行锁被释放;
40、在成功获取所述命令执行锁后,从所述命令请求队列中取出序列号最小的命令文本,并通过所述命名会话的所述实时交互通道将所述命令文本发送至对应的远端shell执行。
41、第二方面,本技术提供一种基于多命名会话的多层跳转会话管理装置,该基于多命名会话的多层跳转会话管理装置包括:
42、维护模块,用于维护多个命名会话,每个所述命名会话包括与远端设备之间基于远程终端协议的实时交互通道,且每个所述命名会话独立记录当前所在目录、当前用户标识以及已建立的跳转链路状态;
43、获取模块,用于获取待执行的命令文本;
44、第一发送模块,用于当所述命令文本未指定目标会话标识时,将所述命令文本发送至当前默认命名会话,并通过所述当前默认命名会话所对应的实时交互通道,以将所述命令文本发送至对应的远端shell执行;
45、第二发送模块,用于当所述命令文本指定目标会话标识时,将所述命令文本发送至指定命名会话,并通过所述指定命名会话所对应的实时交互通道,以将所述命令文本发送至对应的远端shell执行;以及
46、解析模块,用于解析执行所述命令文本的命名会话的当前提示符,从所述当前提示符中提取当前所在主机信息和当前用户信息,并将执行所述命令文本的命名会话确定为新的默认命名会话。
47、第三方面,本技术提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
48、存储器,用于存放计算机程序;
49、处理器,用于执行存储器上所存放的程序时,实现第一方面任一项实施例所述的基于多命名会话的多层跳转会话管理方法的步骤。
50、第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项实施例所述的基于多命名会话的多层跳转会话管理方法的步骤。
51、本技术实施例提供的上述技术方案与现有技术相比具有如下优点:
52、通过为每个命名会话独立维护实时交互通道、当前目录、用户标识及跳转链路状态,使得多层跳转过程中的每一层状态均可被持久化保持,后续命令无需重复执行切换操作即可沿用已有的跳转上下文,解决了因传统嵌套命令方式下目录和用户状态无法保持而导致的重复认证和重复连接问题。由于命令文本系经已建立的交互通道直达当前所处远端shell执行,完全避免了多层shell嵌套解析过程中引号和特殊字符被逐层吞并或转义错乱的现象,显著提高了复杂跳转场景下命令执行的可靠性和成功率。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com