gpt4 book ai didi

linux - Expect 脚本的重复输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:22 25 4
gpt4 key购买 nike

我有一个 expect 脚本 A 到 ssh,它在主机 A 上运行,远程连接到主机 B,在主机 B 上运行 bash 脚本 B,然后将脚本 B 的输出附加回主机 A 上的文件。运行这个 expect 脚本后,附加的内容正是我想要的,但是重复了。例如,如果所需的输出是“abc”,我得到的是“abcabc”。重复的运行时间戳与原始的相同。

请看下面的expect脚本:

#!/usr/bin/expect

set ip ip

set user "user"

set password "password"

set first " "

spawn ssh $user@$ip /path/to/script/b/scriptb.sh

expect { -re "(^ABC)|(^password)"

set variable $expect_out(buffer)

set first [cut -c1-3 $variable]

}

if {"$first" == "ABC"} {

send "123"

send "$password\r";

} else {

send "$password\r"

}

expect -re "(?s)-{30}\r\n(.*?)-{30}"

puts $expect_out(0,string)

我的假设是 expect_out(buffer) 有 2 倍的输出,而第二个 expect -re 匹配输出两次。我尝试使用 unset expect_out(buffer) 失败。我还玩了第二个 expect -re 的定位,并用 if 语句放置语句无济于事。如果修复很简单但我花了很多时间在论坛上寻找它,我深表歉意。任何想法表示赞赏。

问候,

艾伦

最佳答案

修复了重复问题;请参阅下面更新的代码:

期望 { -re "(?s)-{30}\r\n(.*?)-{30}"

{puts $expect_out(0,string) }

关于linux - Expect 脚本的重复输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29906521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com