关于xshell快速命令集

xshell在使用时,比如说引入了堡垒机(jumpserver)的MFA双因子登录,每次都会去手机查看,有点不方便。

通过python脚本,生成mfa验证码。

import hmac, base64, struct, hashlib, time, re

def get_hotp_token(secret, intervals_no):
    key = base64.b32decode(secret, True)
    msg = struct.pack(">Q", intervals_no)
    h = hmac.new(key, msg, hashlib.sha1).digest()
    # 加上chr字符串
    o = ord(chr(h[19])) & 15
    h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
    return h

def get_totp_token(secret, bias):
    return get_hotp_token(secret, intervals_no=int(time.time()+bias)//30)

def get_google_code(secret):
     googlecode = get_totp_token(secret, 3)
     return '%06d' % googlecode

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

def Main():
    # google MFA secret
    # 这里替换成自己的 secret(在绑定mfa时,会出一个secret,记下这个值)
    secret = "xxx"
    mfacode = get_google_code(secret)
    #输出到屏幕
    #xsh.Screen.Send("{code}".format(code=mfacode))
    # 通过行数获取文本
    #line = get_current_row_info(30)】
    # 行数切割获取验证码
    #items = []
    #items= line.split("$")
    #弹出窗口,输出验证码到窗口
    xsh.Dialog.Prompt("[OTP Code]: ","jumpserver-mfa-lfoss",mfacode,False);

 

然后,我们把这个脚本放到自己的目录下,比如 c://jumpserver.py

我们打开xshell的快速命令集,添加上这个脚本按钮,每次直接点击按钮,就能自动弹框当前的mfa,复制这个验证码。

比较遗憾的时,没法自动赋值到xshell弹出的验证码,需要手动点击快速命令集,复制。

 

posted @ 2024-06-13 15:08  Macoffee  阅读(7)  评论(0编辑  收藏  举报