linux 中 expect 如何使用正则修饰符

@Ta 2022-07-10发布,2022-07-10修改 9289点击

我正在写一个自动登录远程 ssh 的脚本

以下为 test.exp 内容

#!/usr/bin/expect

set username root
set password root
set host 192.168.123.6
set port 22
spawn ssh $username@$host -p $port
expect {
        -re {([Pp]password} { send "$password\r"}
}

注意 -re {([Pp]password} { send "$password\r"}
我想使用修饰符 i 而非 [Pp] 来使其不区分大小写,但是我不知道怎么添加

我在百度,Stack Overflow中都找不到例子

小米MIX2s(白)
回复列表(9|隐藏机器人聊天)
  • @Ta / 2022-07-10 / /

    @老虎会游泳
    已经尝试使用(?i)(password),没用
    小米MIX2s(白)

  • @Ta / 2022-07-10 / /

    查阅官网文档后,已解决,使用 -nocase 参数(没有使用修饰符,在官网中大致看了一下,没有找到修饰符相关内容,或许不支持)
    -nocase -re {(password} { send "$password\r"}

    官网对应文档如下
    The -nocase flag causes uppercase characters of the output to compare as if they were lowercase characters. The pattern is not affected.
    小米MIX2s(白)

  • @Ta / 2022-07-10 / /

    @加勒比海带,不认识。。

    简单搜了搜,命令行界的按键精灵??

  • @Ta / 2022-07-11 / /

    @加勒比海带,expect 一个 linux 的工具
    小米MIX2s(白)

  • @Ta / 2022-07-11 / /

    @天蓝,为嘛不搞 ssh key 免密登录呢

  • @Ta / 2022-07-11 / /

    @无名啊,因为我想通过写这个脚本学习,另一方面还要通用
    小米MIX2s(白)

  • @Ta / 2022-07-11 / /

    @天蓝,学习啥?expect?

    我经历场景不多,想大概请教一下

    • 这个工具使用场景主要是啥?
    • 解决了shell的啥痛点么?
  • @Ta / 2022-07-12 / /

    这个主要是交互吧@无名啊
    反正我使用场景,就是远程登录 SSH 获取一些信息
    小米MIX2s(白)

  • @Ta / 2022-07-12 / /

    @天蓝,换作我,命令行下,如果shell能通吃,就懒得再学门语言了

    (windows 上都懒得学 cmd powershell,前者简陋,后者稍显繁冗?)

    这个场景,感觉可以 ssh key 免密登录,执行命令后返回(除非要频繁批量登录新主机?)

    我的认知里,命令行多用于脚本执行(使用文件或标准输入输出),面向用户就客户端或网页端

    所以这类模拟交互的,我就不懂使用场景了

添加新回复
回复需要登录