log_file 命令不记录 Expect 脚本中命令的输出

2023-12-23

我正在运行调试命令以将命令的输出记录到文件中。我尝试了 log_file 命令,但它没有记录输出。我的代码如下:

log_file -a gdb.txt 
send "~/debugulator.sh $file mns20\r"
log_user 0
expect -re {DSP.*0x[0-9][0-9][0-9][0-9]}
log_user 1
send_log $expect_out(0,string)
log_file 

但是当我打开 gdb.txt 时,里面什么也没有。有人能告诉我到底哪里出错了吗。我使用的 Expect 版本是 5.26.0

UPDATE这是我正在尝试的另一段代码...它仍然不起作用..我在添加 exp_internal 1 命令后发布了输出..代码如下:

spawn telnet 10.1.1.2
expect "Login:"
send "xyz\r"
expect "Password:"
send "Nxyz1\r"
expect "xyz:/home/xyz>"
send "cd /sonus/support/GSX-[lindex $argv 0]\r"
log_file myfile.log
send_log "this is in the log file \n"
log_file
interact

OUTPUT spawn telnet 10.1.1.2 parent: waiting for sync byte parent: telling child to go ahead parent: now unsynchronized from child spawn: returns {17179}

`expect: does "" (spawn_id exp6) match glob pattern "Login:"? no`
`Trying 10.1.1.2...`

`expect: does "Trying 10.1.1.2...\r\n" (spawn_id exp6) match glob pattern "Login:"? no`
`Connected to 10.1.1.2.`
`Escape character is '^]'.`

`expect: does "Trying 10.1.1.2...\r\nConnected to 10.1.1.2.\r\nEscape     character is '^]'.\r\n" (spawn_id exp6) match glob pattern "Login:"? no`


`SunOS 5.9`


`expect: does "Trying 10.1.1.2...\r\nConnected to 10.1.1.2.\r\nEscape character is '^]'.\r\n\r\n\r\nSunOS 5.9\r\n\r\r\n\r" (spawn_id exp6) match glob pattern "Login:"? no
login: xyz\r`
`expect: does "Trying 10.1.1.2...\r\nConnected to 10.1.1.2.\r\nEscape character is '^]'.\r\n\r\n\r\nSunOS 5.9\r\n\r\r\n\rlogin: " (spawn_id exp6) match glob pattern "Login:"? no`
`expect: timed out`
`send: sending "xyz\r" to { exp6 }`

`expect: does "Trying 10.1.1.2...\r\nConnected to 10.1.1.2.\r\nEscape character is '^]'.\r\n\r\n\r\nSunOS 5.9\r\n\r\r\n\rlogin: " (spawn_id exp6) match glob pattern "Password:"? no

xyz`

 `expect: does "Trying 10.1.1.2...\r\nConnected to 10.1.1.2.\r\nEscape character is '^]'.\r\n\r\n\r\nSunOS 5.9\r\n\r\r\n\rlogin: xyz\r\n" (spawn_id exp6) match glob pattern "Password:"? no`
 `Password:` 
 `expect: does "Trying 10.1.1.2...\r\nConnected to 10.1.1.2.\r\nEscape character is '^]'.\r\n\r\n\r\nSunOS 5.9\r\n\r\r\n\rlogin: xyz\r\nPassword: " (spawn_id exp6) match glob pattern "Password:"? yes`
 `expect: set expect_out(0,string) "Password:"`
 `expect: set expect_out(spawn_id) "exp6"`
 `expect: set expect_out(buffer) "Trying 10.1.1.2...\r\nConnected to 10.1.1.2.\r\nEscape character is '^]'.\r\n\r\n\r\nSunOS 5.9\r\n\r\r\n\rlogin: xyz\r\nPassword:"`
 `send: sending "Nxyz1\r" to { exp6 }`

 `expect: does " " (spawn_id exp6) match glob pattern "xyz:/home/xyz>"? no`


 `expect: does " \r\n" (spawn_id exp6) match glob pattern "xyz:/home/xyz>"? no`
 `Last login: Tue May 31 05:10:20 from 10.253.6.98
 /home/xyz/.aliases: No such file or directory.`
 `[1]slate:xyz:/home/xyz>` 
 `expect: does " \r\nLast login: Tue May 31 05:10:20 from 10.253.6.98\r\n/home/xyz/.aliases: No such file or directory.\r\n\u001b]0;[slate:]/home/xyz\u0007[1]slate:\u001b[1mxyz\u001b[m:/home/xyz> " (spawn_id exp6) `match      glob pattern "xyz:/home/xyz>"? no
 `expect: timed out`
 `send: sending "cd /sonus/support/GSX-5\r" to { exp6 }`
 `tty_raw_noecho: was raw = 0  echo = 1`
 `spawn id exp6 sent <c>`
 `cspawn id exp6 sent <d /sonus/support/GSX-5\r\r\n\u001b]0;[slate:]/sonus/support/GSX-5\u0007[2]slate:\u001b[1msdwarampudi\u001b[m:/sonus/support    /GSX-5> >`
 `/sonus/support/GSX-5`
`[2]slate:xyz:/sonus/support/GSX-5>` 

您的提示中包含导致模式匹配失败的颜色代码:

expect: does "...slate:\u001b[1mxyz\u001b[m:/home/xyz> " (spawn_id exp6) `match      glob pattern "xyz:/home/xyz>"? no
# .................................^^^^^^^^........................................................^^^^^^^^^^^^^^

通常,当我通过 ssh 连接到远程主机时,我要做的第一件事就是(假设远程 shell 是 sh/ksh/bash)将提示符设置为易于匹配的内容:

spawn ssh remotehost
# ... password stuff
# now, set the prompt
send "PS1='>'\r"
expect -re {>$}    # use this to match the prompt from now on

实际上,您需要做的就是简化您的提示符匹配:您的提示符以>和一个空格,所以:

expect -re {> $} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

log_file 命令不记录 Expect 脚本中命令的输出 的相关文章

  • expect_out(buffer)中包含send的数据

    expect out buffer 中包含send的数据 我一直以为在Expect中一旦执行send之后 xff0c expect out buffer 就会被清空 xff0c 直到有新的数据被填入 xff0c 而恰恰就是这些数据被用在ex
  • Tcl/Expect中利用exec调用管道"|"和awk的注意事项

    Tcl Expect中利用exec调用稍微复杂的shell命令时 xff0c 经常会遇到一些小问题 xff0c 常见的就是pipeline 和awk Tcl Expect调用多个shell命令并使用 将其串接在一起时 xff0c 需要注意的
  • expect spawn、linux expect 用法

    使用expect实现自动登录的脚本 xff0c 网上有很多 xff0c 可是都没有一个明白的说明 xff0c 初学者一般都是照抄 收藏 可是为什么要这么写却不知其然 本文用一个最短的例子说明脚本的原理 脚本代码如下 xff1a usr bi
  • __builtin_xxx指令学习【1】__builtin_expect

    builtin expect是GCC编译器提供的一个内置函数 xff0c 用于告诉编译器一个分支的执行概率 xff0c 以便编译器在生成机器码时进行优化 它的语法如下 xff1a span class token function buil
  • 【量化分析】用mplfinance显示交易图时,处理 Expect data.index as DatetimeIndex?

    目录 一 说明 二 程序代码和出错描述 三 合理化建议 3 1 读入数据时指定索引 3 2 读入数据后 xff0c 使用数据前指定日期 xff08 时间戳 xff09 索引 一 说明 我打算从比特币数据中获取烛台图 这是我在加载 csv 文
  • 如何在正则表达式中使用变量(TCL/Expect)

    我试图弄清楚如何在正则表达式匹配中使用字符串 我在谷歌上搜索了一个小时 想我应该问问专家 这有效 usr bin expect set MYSTR value if regexp nocase MYSTR outcome matchresu
  • 预期:没有这样的变量[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我开始使用expect 我有一个简单的脚本 但我有一个问题 我想初始化一个第一个字符为 的变量 set mystring THIS IS MY STRING 所以我得到一个错误 因为exp
  • pexpect 相当于 Expect 的“send_user”

    作为我的延续上一个问题在 pexpect 中构建交互式选项菜单时 交互输入过滤器中的打印语句只有在交互完成后才会发送到 stdout 该文档似乎没有包含与 Expect 中的 send user 等效的方法 是否有任何解决方法可以将输出发送
  • 我可以在 Unix 中运行 jshell 吗?

    我想使用expect重定向jshell输入 以便我可以在录制的演示中模拟输入 但是 尽管我可以从 Expect 脚本生成一个 jshell 进程 该进程也可以识别 jshell 提示符 但之后就没有任何效果了 期望输出看起来像控制序列 例如
  • 如何从期望脚本中转义异常/唯一字符?

    在期望脚本中 我可以设置任何命令或字符以在远程计算机上运行它 但可悲的是 expect 无法发送与expect 脚本中定义的相同的字符 例如 我想从expect脚本运行这一行 以便更改IP地址10 10 10 10 to 1 1 1 1 e
  • 如果没有明确设置一个巨大的常量值,是否可以期望被告知不要超时?

    我已将超时设置为一个愚蠢的高数字 有没有更好的方法告诉脚本不要超时 usr bin expect spawn telnet 10 10 10 10 set timeout 200000000 expect login send user r
  • 在 python 中执行 bash 脚本

    我创建了一个 Expect 脚本 执行时 它会通过 ssh 连接到服务器并执行一系列命令 伪代码如下所示 usr bin expect spawn ssh usr myip expect password send mypassword n
  • 对模拟对象的期望似乎没有得到满足(最小起订量)

    我在 Moq 中遇到了一些奇怪的行为 尽管我设置了一个模拟对象以某种方式行事 然后在我正在测试的对象中以完全相同的方式调用该方法 但它的反应就像该方法是从来没有打电话过 我正在尝试测试以下控制器操作 public ActionResult
  • 将其放入 TCL 正则表达式中的转义字符串

    I use Expect作为测试框架并编写一些辅助函数来简化匹配模式的键入expect命令 因此 我寻找将任何字符串转换为字符串的函数 其中所有特殊的正则表达式语法都被转义 例如 和其他字符 这样我就可以将任何字符串放入正则表达式中 而不必
  • 如何在expect脚本中查找文件是否存在

    我的期望脚本中有这样的声明 send sed i e s oldport newport backup txt r expect 但是我希望首先检查文件 backup txt 是否存在 如果存在 然后编辑它 我该如何实现这一目标 Thank
  • 期望在 while 循环内 - 永远循环

    我是新来的脚本 所以请原谅我的绊脚石 以下是我的预期脚本的主要内容 目的是滚动浏览多个输出屏幕 在每个屏幕之后都会提示用户 继续 y n 最后 当没有更多屏幕时 会显示 提示符 这应该导致执行脱离 while 循环 set more scr
  • Bash 脚本:使用 Expect 将文件发送到 SFTP

    我必须将一些 gzip 压缩文件从本地服务器发送到 SFTP 服务器 我的服务器信息 发行商 ID Ubuntu 说明 Ubuntu 12 04 4 LTS 发布 12 04 代号 精确 创建了一个 bash 脚本 并且能够将文件发送到 s
  • Expect 脚本中 sudo 的问题

    我正在运行以下脚本 usr bin expect f set user lindex argv 0 set pass lindex argv 1 set PATH lindex argv 2 set INV PATH lindex argv
  • 如何使用 bash/expect 检查 SSH 登录是否有效

    我的团队管理着许多服务器 公司政策规定这些服务器上的密码必须每隔几周更改一次 有时 我们的官方密码数据库会因某种原因而过时 人们通常会忘记更新它 但有时我们要到几个月后才能识别这一点 因为我们并不总是使用每台服务器 我想编写一个脚本 从数据
  • 在expect脚本中发送INSERT和F12

    我知道为了在期望脚本中发送返回 我会执行以下操作 send r What is the send command for the INSERT and F12 keys I ve looked online and cannot find

随机推荐

  • ISIN 至少有 1 个号码

    我有以下正则表达式来解析债券 资产等的 ISIN 2 个字符后跟 10 个数字和字符 A Z 2 A Z0 9 10 但这也标记了例如这样的单词ABCDEFGHIJKL 但这不是真正的 ISIN ISIN 的定义如下 WIKI https
  • 仅在加载 Google Web Font 后才绘制到画布

    我在用 fillText 在画布上 我希望其文本采用 Google Web 字体 在我的例子中为 Oswald 当页面加载时 文本在字体加载之前被绘制到画布上 但显然一旦字体加载 画布上的文本就不会更新 因为它已经被绘制为位图 如何延迟此文
  • 基于向量重叠从列表中删除和添加元素

    我有一个包含约 500 个模型对象的列表 该对象的名称是 v1 existing list lt vector list 3 v1 lt names existing list lt c A B C 我现在得到了不同的数据集 我也需要对其进
  • 实体框架 Code First 的 Spatial / DBGeography 属性索引

    我有一个 EF 6 1 代码优先项目 其模型之一具有 DbGeography 属性 仅包含 POINT 地理 我将对其执行查询 我声明自定义索引如下官方指南 http msdn microsoft com en us data jj5916
  • 使用 ES6 (Babel) 导出类

    我正在使用 ECMAScript 6 编写一些前端代码 使用 BabelJS 进行编译 然后使用 Browserify 进行浏览器化 以便我可以在一个文件中包含一个类 将其导出并将其导入到另一个文件中 我这样做的方式是 export cla
  • SearchView.isFocused 始终返回 false

    我正在尝试确定是否SearchViewActionBar 中的焦点 但当我打电话时SearchView isFocused 我总是得到false因此 即使视图真正聚焦 内部有光标 并且显示软键盘 我如何检查是否SearchView是否专注
  • 如何在测试期间对 Node.js 内置 fs 进行存根?

    我想存根 Node js 内置组件 例如fs这样我实际上就不会进行任何系统级文件调用 我唯一能想到的就是通过fs以及所有其他内置函数作为我所有函数的参数 以避免使用真正的 fs 这看起来有点愚蠢 并且创建了一个冗长的函数签名 里面挤满了内置
  • 如何将连字符后的第一个字母大写,即 Adam Smith-Jones

    我正在寻找一种将字符串的第一个字母大写的方法 包括名称由连字符连接的位置 例如 adam smith jones 需要是 Adam Smith Jones ucwords or ucfirst 如果我把它们分成名字和姓氏 只有亚当 斯密 琼
  • Rabbitmq:代理重启后未确认的消息不会消失

    我们观察到了 RabbitMQ 的以下行为 并试图了解它是否正确以及如何解决它 设想 持久 消息被传递到持久队列中 单个 消费者 Spring AMQP 获取消息并开始处理 gt 消息从 READY 变为 UNACK 现在代理已关闭 gt
  • 使用键值存储实现的图数据库

    我需要一个图形数据库 该数据库需要备份并可能在较低的抽象级别进行访问 为了负载平衡 它也必须是分布式的 单个主复制就可以 我知道可以使用自引用键值存储来实现图形数据库 Git 对象数据库就是这种模式的一个示例 我发现大多数图数据库令人沮丧的
  • 使用Python的h5py包读取hdf文件时出错

    我想从我下载的 hdf 文件中提取数据 MODIS http modis atmos gsfc nasa gov MOD08 M3 acquiring html网站 链接中提供了示例文件 我正在使用以下代码行读取 hdf 文件 gt gt
  • render() 中的 React 函数

    在 React 组件中放置函数的位置是否有偏好 我仍在学习 React 所以只是想找出最佳实践 class Content extends React Component What is the difference between put
  • 应用内购买自动续费交易恢复问题

    我正在开发一个应用程序 用户可以在其中购买自动续订订阅 购买部分工作正常 但当用户删除应用程序并尝试恢复其购买时会出现问题 以下是我为处理该问题而编写的代码 我已经给出了一个标题为 已经是订阅者 的按钮 当用户点击时 我调用以下代码 SKP
  • 致命错误:调用未定义的函数 mb_strlen()

    我正在尝试建立一个捐赠中心 我使用 Totorialzine 的源代码 到目前为止 一切对我来说都工作得很好 但唯一的问题是我一直在努力解决并试图查看一整天 并且无法准确地弄清楚代码到底出了什么问题 这是当我的访客捐赠时我在页面上提交评论时
  • 如何为Java源代码创建数据流程图

    我用 java 编写了一个包含大约 500 个类的应用程序 现在我知道这个问题已经被问过很多次了 但我仍然找不到合适的资源或教程来为我的整个项目创建数据流程图 任何帮助 教程 资源或代码示例将不胜感激 您也许能够从单元测试中导出数据流 如果
  • 垂直分隔线 CSS

    我正在创建一个垂直分隔线 效果很好 但是CSS很麻烦 CSS 是 headerDivider1 border left 1px solid 38546d height 80px position absolute right 250px t
  • 如何从文件夹中读取每个文件并为每个文件创建单独的数据帧?

    我试图让我的代码读取包含各种文件的文件夹 我希望让 Jupyter 读取该文件夹中的每个文件 并通过将文件名称作为数据帧名称来创建单独的数据帧 到目前为止我有代码 import glob path r C Users SemR Docume
  • 有没有办法使用 C# 或 vb 从 xml 递归查找最里面的节点

    我有一个 XML 文件说
  • Kubernetes 服务中端口 0 有何用途? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 创建服务时 我在内部端点列表中看到一个条目 如下所示myservice sandbox cluster 0 TCP以及我明确打开的端口 端
  • log_file 命令不记录 Expect 脚本中命令的输出

    我正在运行调试命令以将命令的输出记录到文件中 我尝试了 log file 命令 但它没有记录输出 我的代码如下 log file a gdb txt send debugulator sh file mns20 r log user 0 e