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

@Ta 07-10 00:14发布,07-10 00:15修改 2375点击

我正在写一个自动登录远程 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(白)
回复列表(10)
  • @Ta / 07-10 01:08 / /

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

  • @Ta / 07-10 02:01 / /

    查阅官网文档后,已解决,使用 -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 / 07-10 18:52 / /
  • @Ta / 07-10 19:36 / /

    @MaxPHP,不认识。。

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

  • @Ta / 07-11 18:37 / /

    @MaxPHP,expect 一个 linux 的工具
    小米MIX2s(白)

  • @Ta / 07-11 19:49 / /

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

  • @Ta / 07-11 21:12 / /

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

  • @Ta / 07-11 21:20 / /

    @天蓝,学习啥?expect?

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

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

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

  • @Ta / 07-12 23:29 / /

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

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

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

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

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

添加新回复
回复需要登录