• xshell会话批量迁移到mobaxterm的工具


    自己写了一个Python小工具:xshell2mobaxterm,可以将xshell的session转换成mobaxterm的数据文件以导入到mobaxterm中。

    exe版的编译好了,博客园不支持附件,所以没法上传,需要的话可以评论留下邮箱,我发送给你。

    Python代码:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # xshell session to mobaxterm session file
    # Support: TELNET, serial, SSH
    # Usage: xshell2mobaxterm.py Xshell_Session_Direcotry
    # Example: python3 xshell2mobaxterm.py D:XshellSession >mobaxterm.mxtsessions
    # Linux platform enviroment: LANG=zh_CN.utf8/en_US.utf8
    # Windows: python3.6 cmd run it.
    
    import os, sys
    
    
    def convert_x2m(xshell_session_file, num):
        #print(xshell_session_file)
        ssh_format = (
            '[{BookMarks}]
    '
            'SubRep={Directory}
    '
            'ImgNum=41
    '
            '{SessionName} ({UserName})=#109#0%{Host}%{Port}%{UserName}%%-1%-1%%%%%0%0%0%%%-1%0%0%0%%1080%%0%0%1#DejaVu Sans Mono%{FontSize}%0%0%-1%15%236,236,236%30,30,30%180,180,192%0%-1%0%%xterm%-1%-1%_Std_Colors_0_%80%24%0%1%-1%<none>%%0%1%-1#0# #-1
    '
        )
        
        telnet_format = (
            '[{BookMarks}]
    '
            'SubRep={Directory}
    '
            'ImgNum=41
    '
            '{SessionName} ()= #98#1%{Host}%{Port}%%%2%%%%%0%0%%1080%#DejaVu Sans Mono%{FontSize}%0%0%-1%15%236,236,236%30,30,30%180,180,192%0%-1%0%%xterm%-1%-1%_Std_Colors_0_%80%24%0%1%-1%<none>%%0%1%-1#0# #-1
    '
        )
        
        serial_format = (
            '[{BookMarks}]
    '
            'SubRep={Directory}
    '
            'ImgNum=42
    '
            '{SessionName}= #131#8%-2%100{Speed}%3%0%0%1%2%{Port}#DejaVu Sans Mono%{FontSize}%0%0%-1%15%236,236,236%30,30,30%180,180,192%0%-1%0%%xterm%-1%-1%_Std_Colors_0_%80%24%0%1%-1%<none>%%0%1%-1#0# #-1
    '
        )
    
        session_file = open(xshell_session_file, 'r')
        session_lines = session_file.readlines()
        xshell_attr = {'num': num}
        xshell_attr['Directory'] = os.path.dirname(xshell_session_file.replace(sys.argv[1], '').strip('\'))
        xshell_attr['SessionName'] = os.path.basename(xshell_session_file).rsplit('.',1)[0]
    
        if num == 0:
            xshell_attr['BookMarks'] = 'Bookmarks'
        else:
            xshell_attr['BookMarks'] = 'Bookmarks_{num}'.format(num=num)
    
        for line in session_lines:
            if line.startswith('UserName='):
                xshell_attr['UserName'] = line.split('=')[1].strip('
    ')
            elif line.startswith('Port='):
                xshell_attr['Port'] = line.split('=')[1].strip('
    ')
            elif line.startswith('FontSize='):
                xshell_attr['FontSize'] = line.split('=')[1].strip('
    ')
            elif line.startswith('Host='):
                xshell_attr['Host'] = line.split('=')[1].strip('
    ')
            elif line.startswith('Protocol='):
                xshell_attr['Protocol'] = line.split('=')[1].strip('
    ')
            elif line.startswith('BaudRate='):
                xshell_attr['Speed'] = line.split('=')[1].strip('
    ')
    
        #print(xshell_attr)
        x = 1
        if xshell_attr.get('Protocol').lower().startswith('ssh'):
            x = ssh_format.format(
                Directory = xshell_attr.get('Directory') or '',
                SessionName = xshell_attr.get('SessionName') or 'default',
                UserName = xshell_attr.get('UserName') or '',
                Port = xshell_attr.get('Port') or '22',
                FontSize = xshell_attr.get('FontSize') or '12',
                num=xshell_attr['num'],
                Host=xshell_attr.get('Host') or '',
                BookMarks=xshell_attr['BookMarks']
            )
        elif xshell_attr.get('Protocol').lower() == 'telnet':
            x = telnet_format.format(
                Directory = xshell_attr.get('Directory') or '',
                SessionName = xshell_attr.get('SessionName') or 'default',
                UserName = xshell_attr.get('UserName') or '',
                FontSize = xshell_attr.get('FontSize') or '12',
                Port = xshell_attr.get('Port') or '23',
                num=xshell_attr['num'],
                Host=xshell_attr.get('Host') or '',
                BookMarks=xshell_attr['BookMarks']
            )
        elif xshell_attr.get('Protocol').lower() == 'serial':
            x = serial_format.format(
                Directory = xshell_attr.get('Directory') or '',
                SessionName = xshell_attr.get('SessionName') or 'default',
                FontSize = xshell_attr.get('FontSize') or '12',
                Port = xshell_attr.get('Port') or '',
                Speed = xshell_attr.get('Speed') or '9600',
                num = xshell_attr['num'],
                BookMarks = xshell_attr['BookMarks']
            )
        #print(x.replace('/', '\'))
        return x.replace('/', '\')
    
    
    def generate_mobaxterm_sessions(xshell_session_path, count):
        #print(session_path)
        base_dir = os.listdir(xshell_session_path)
        for file in base_dir:
            file = os.path.join(xshell_session_path, file)
            try:
                os.listdir(file)
                #print(file)
                generate_mobaxterm_sessions(file, count)
            except:
                if not file.endswith('.xsh'): continue
                print(convert_x2m(file, count[0]))
                count[0] += 1
    
    
    if __name__ == '__main__':
        count = [0]
        generate_mobaxterm_sessions(sys.argv[1], count)

     使用方法:

    (1)cmd>python3 Python代码文件 "Xshell Session所在的路径" > mobaxterm.mxtsessions

    例如:C:Usersuser> python3 xshell2moba.py "C:UsersuserDocumentsNetSarangXshellSessions" > mobaxterm.mxtsessions

              会在cmd的当前目录(C:Usersuser)中生成一个mobaxterm.mxtsessions文件

    备注:如果不知道Xshell Session的路径,可以在xshell本地命令行中输入pwd命令查看:

    (32)将生成的mobaxterm.mxtsessions文件导入mobaxterm即可。

  • 相关阅读:
    JSON的序列化与还原
    正则表达式的一些基础
    跨域二三事
    与Web服务器通信
    与 Web 服务器通信
    代码重构
    构造函数与各种继承方法特点
    this指向问题——严格、非严格模式,事件处理程序
    《JavaScript设计模式与开发实践》学习笔记——单例模式
    Git常用命名及常见操作流程
  • 原文地址:https://www.cnblogs.com/hanxiaomeng/p/15066986.html
Copyright © 2020-2023  润新知