gpt4 book ai didi

ssh - 执行Expect命令时错误的spawn_id

转载 作者:行者123 更新时间:2023-12-02 14:39:44 26 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本会将Valgrind复制到我们在命令行中输入的任何架子上。语法如下:

vgrindCopy [shelf number]



出于某种原因,文件将进行复制而没有任何问题,但是在复制完成后,将观察到以下错误:

错误的spawn_id(进程较早死亡?)
在执行时
“期望”#“”


这是相关代码的副本:
 function login_shelf {
expect -c "
set timeout 15
spawn $1
expect \"password:\"
send \"$PW\r\"
expect \"#\"
sleep 1
exit
"
}
# login and make the valgrind directory at /sfs/software/shelf/current
set -- /opt/swe/tools/ext/gnu/valgrind-3.7.0/i686-linux2.6/lib/valgrind/*
login_shelf "/opt/corp/projects/shelftools/bin/app rsync -Lau $* $shelf:/shelf/valgrind"

在玩完代码之后,我发现如果删除“ expect \"#\"”行,则该程序将不再复制任何文件。同样奇怪的是,我在运行脚本时看到了这个问题,而同事却没有。

有没有人遇到过类似的问题并确定了原因?一如既往,任何帮助将不胜感激!

最佳答案

您的代码生成了rsync,并且在expect \"#\"上等待rsync输出#,但它从未执行过,因此退出,并且expect报告错误。

当您删除expect \"#\"时,预期脚本将退出,从而终止rsync。

而不是expect \"#\",您应该等待rsync退出:

expect eof
wait

关于ssh - 执行Expect命令时错误的spawn_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12643264/

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