V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GoRoad
V2EX  ›  程序员

请教一个关于 macos 下 iterm2 通过 expect 脚本登录同一台服务器卡死的问题

  •  
  •   GoRoad · 2022-06-23 15:50:33 +08:00 · 1222 次点击
    这是一个创建于 875 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题:首次打开 ssh 窗口无问题,但是打开同一台服务器的第二个 ssh 窗口后显示连接上,但是无法正常输入,类似于卡死的情况,换连接其他服务器也是同样的情况,只能打开一个窗口,我的 iterm2 profile 配置如下

    具体操作: 1 、配置.ssh 目录下的配置文件,如下

    #!/usr/bin/expect -f
    
    set host x.x.x.x
    set user root
    set port 22
    set password password
    set timeout -1
    
    spawn ssh -p$port $user@$host
    expect "*password:*"
    send "$password\r"
    interact
    expect eof
    

    2 、新建 iterm2 的 profile 文件

    在 Command 处选择Command ,填写 expect ~/.ssh/xxxconfig,Working Directory 选择 Home directory

    3 、使用

    在 iterm2 窗口按快捷键 cmd+o 选择 profile 直接登录 ssh

    5 条回复    2022-06-27 14:43:50 +08:00
    viquuu
        1
    viquuu  
       2022-06-24 11:17:43 +08:00
    ```sh
    #!/usr/bin/expect

    set PORT xxxxxxx
    set HOST xxxxxxx
    set USER xxxxxxx
    set PASSWORD xxxxxxx

    spawn ssh -p $PORT $USER@$HOST
    expect {
    "yes/no" {send "yes\r";exp_continue;}
    "*password:*" { send "$PASSWORD\r" }
    }
    interact
    ```
    我用的脚本是这样,刚试了一下,没卡死。iterm2 版本:3.4.15
    beordle
        2
    beordle  
       2022-06-24 13:10:25 +08:00 via iPhone
    大抵是因为你复用了会话,第二次登陆无需输入密码。password 关键是不会出现,从而 hang 住,建议修改 viquuu 的脚本,并增加 bash prompt 的 case 分支。
    GoRoad
        3
    GoRoad  
    OP
       2022-06-27 11:45:53 +08:00
    @viquuu #1 我按照你这样改的 还是出现同样的问题
    GoRoad
        4
    GoRoad  
    OP
       2022-06-27 11:46:19 +08:00
    @beordle #2 麻烦能帮忙改一个吗 我对这个脚本实在是不熟悉 非常感谢
    GoRoad
        5
    GoRoad  
    OP
       2022-06-27 14:43:50 +08:00
    刚刚测试又发现个问题,我多次打开同一台服务器的配置文件,关闭第一个能用的会话后,剩余的会话在几秒内就全都关闭了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1548 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:13 · PVG 01:13 · LAX 09:13 · JFK 12:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.