• iterm2 配置自动登录跳板机,无需输入密码和google验证码


     1、准备:编写Python脚本计算生成google身份验证码,参考python3 实现 google authenticator 认证/校验_我要买GTR45的博客-CSDN博客

    脚本拿来就可以用,只需要替换脚本中的secret字段的值为自己的密钥即可

    2、在~/.ssh/目录下编写expect脚本

    新建expect文件,内容如下:

    1. #!/usr/bin/expect
    2. #配置自动登录跳板机,无需手动输入登录命令密码和google身份验证码
    3. spawn python3 /Users/username/.ssh/get_googe_token.py
    4. expect eof
    5. set CODE $expect_out(buffer)
    6. set HOST jump_server's Ip
    7. set USER username
    8. set PASSWORD password
    9. set PORT port
    10. spawn ssh $USER@$HOST -p $PORT
    11. expect {
    12. "yes/no" {send "yes\r";exp_continue;}
    13. "*password:*" { send "$PASSWORD\r";exp_continue;}
    14. "*MFA auth*" {send "$CODE\r";exp_continue;}
    15. "Opt*" {send "p\r"}
    16. }
    17. interact

    上面代码主要解释

    expect花括号中的内容解释:当执行完 spawn ssh $USER@HOST -p $PORT后,检查有没有yes/no,如果有则在终端输入yes;如果下面还需要继续执行expect命令,exp_continue命令一定不能少!!!

    "*password*":同理接下来继续检查终端命令行中是否包含有password,如果有则在终端输入密码

    "*MFA auth*":终端如果有MFA auth则在终端输入google校验码

    "Opt":上一步输入google校验码以后,如果终端命令行有Opt命令,则在输入终端p 

     3、MAC电脑增加配置:利用快捷键 command+o打开iterm2的Profile配置,新增一个Profile,如下图:

    4、登录:command+o,打开profiles的窗口,选择刚才新增的profile回车,开始执行expect脚本的命令自动登入

    expect简单命令学习:

    expect 是一种基于 Tcl(Tool Command Language)的编程语言和工具,用于自动化交互式进程。尽管 Expect 主要基于 Tcl,但它也在其他编程语言中有相应的实现,如 Python 的 pexpect 模块。Expect 用于编写脚本,以模拟用户与命令行应用程序之间的交互,可以用于自动化、自动化测试、自动登录、远程操作等场景。其主要特点是可以处理交互式输入和输出。

    Expect 脚本通常用于创建自动化任务,特别是在需要与其他程序或系统进行交互、响应特定提示符或处理复杂输入和输出时非常有用。它允许您编写脚本来模拟用户的交互操作,以实现自动化任务的目标。

    虽然 Expect 最初是基于 Tcl 的,但它已经有了多个语言的变种和实现,以适应不同的编程环境和需求。这意味着您可以在多种编程语言中使用 Expect 的功能,以满足您的自动化需求。

    1. #!/usr/bin/expect
    2. # 连接到跳板机
    3. spawn ssh user@jump_server
    4. # 匹配跳板机的提示符,这可以根据实际情况进行调整
    5. expect "jump_server_password_prompt_here"
    6. # 输入跳板机密码
    7. send "your_jump_server_password\r"
    8. # 匹配跳板机成功登录后的提示符,这可以根据实际情况进行调整
    9. expect "jump_server_prompt_here"
    10. # 连接到目标服务器
    11. send "ssh user@target_server\r"
    12. # 匹配目标服务器的密码提示符
    13. expect "target_server_password_prompt_here"
    14. # 输入目标服务器密码
    15. send "your_target_server_password\r"
    16. # 匹配Google身份验证器验证码提示符,这可以根据实际情况进行调整
    17. expect "Google_authenticator_code_prompt_here"
    18. # 输入Google身份验证器验证码
    19. send "your_google_authenticator_code\r"
    20. # 期望进入目标服务器的命令行界面,这可以根据实际情况进行调整
    21. expect "target_server_command_prompt_here"
    22. # 这里可以继续执行其他操作,例如执行命令等
    23. # send "your_command_here\r"
    24. # 等待命令完成并获取输出
    25. expect "output_prompt_here"
    26. # 获取命令输出并打印
    27. set command_output $expect_out(buffer)
    28. puts $command_output
    29. # 退出交互式会话
    30. send "exit\r"
    31. # 等待退出
    32. expect eof

  • 相关阅读:
    格式字幕格式脚本
    挑战30天学完Python:Day2 夯实基础 - 变量和内置函数
    Web应用防火墙的性能优化技术
    DGIOT数字工厂整体结构介绍
    微信小程序603300报错,保存文件出错download save file error的解决办法
    LeetCode:117. 填充每个节点的下一个右侧节点指针 II(C++)
    给某个伙伴展示一次渗透提权
    【问题解决】Android JDK版本不匹配导致崩溃踩坑记录
    Python的常用排序算法实现
    多主复制下处理写冲突(4)-多主复制拓扑
  • 原文地址:https://blog.csdn.net/neverSaynever_/article/details/133148140