- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
大家好
我刚刚找到了造成这些奇怪事情的原因。这是命令:发送“等待”
我编写了一些脚本来测试它。
proc Login {pass} {
# send the password
}
proc Wait {} {
expect "*]$*"
sleep 1
}
proc sendl {message} {
send "$message\r"
}
spawn ssh xxxxx.xxx.xxx
Login xxxxxxxx
Wait
sendl "cd /somepath/"
Wait
sendl "expect infiniteLoop.exp >/dev/null &"
Wait
***sendl "wait"***
Wait
sendl "TESTTEST"
Wait
sendl "HAHAHA"
Wait
sendl "DONEDONEDONE"
Wait
它应该卡在以下行之后:sendl“wait”
但结果是:
[xxx@xxxxx.xxx ~]$ cd /somepath/
[xxx@xxxxx.xxx folder]$ expect infiniteLoop.exp >/dev/null &
[1] 27260
[xxx@xxxxx.xxx folder]$ wait
TESTTEST
HAHAHA
DONEDONEDONE
[xxx@xxxxx.xxx folder]$
shell还在等待,但后续命令已经一一发出去,没有任何反应。该行之后的所有期望命令似乎都是无效的。然后脚本就完成了。
我不知道这里发生了什么。什么原因导致expect命令无效?命令“wait”似乎不是一个程序(我无法使用“whereis wait”找到它)。
最佳答案
[xxx@xxxxx.xxx folder]$ wait
TESTTEST
HAHAHA
DONEDONEDONE
这种输出很可能是expect超时造成的。
我不确定infiniteLoop.exp在做什么。如果它实际上是一个无限循环(或需要很长时间的事情),则以下 wait
shell 命令将始终等待,因为进程(infiniteLoop.exp)永远不会终止。
因此,以下 Wait()
过程调用最终将在每 10 秒后超时(10 秒是 Expect 默认超时),并且脚本将继续执行,如下所示:
sendl "TESTTEST" (send message to spawned process)
Wait (process still waiting for infiniteLoop.exp, timeout after 10s.)
sendl "HAHAHA" (continue to send message)
Wait (process still waiting for infiniteLoop.exp, timeout after 10s.)
sendl "DONEDONEDONE" (continue to send message)
当 Expect 脚本没有按预期进行调整时,我总是做两件事:
第一个是手动运行程序,检查是否有问题。
第二个是添加-d选项来打开调试消息(例如:expect -d hello.exp
)。如果您看到类似“expect: timed out”的内容,则先前的模式可能无法匹配。
顺便说一句,您可以添加一些检查来指示超时情况
proc Wait {} {
expect {
"$" {}
timeout {send_user "expect timeout\n"}
}
sleep 1
}
关于linux - 期待剧本。使用[发送 "wait"]后事情变得奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634787/
我想在“交互”模式下“监听”shell 输出的字符串。或者我想以某种方式模拟交互模式,这仍然允许我从 shell 监听特定的字符串。 好像interact只听用户输入(我按下的键)而不是 shell
这些字符数组在语法上有什么问题? struct NewBuiltIn{ char *CommandName[64] = "bigbluetest"; char *FunctionNam
我正在尝试使用继承来创建一个从 runtime_error 派生的类,但我一直收到错误,即使这是练习中使用的确切代码并且作为书中的示例。这是代码: class DivideZeroEx : publi
您好,下面是我的 SQL 代码,它给了我错误,我不知道为什么。如果有人可以提供帮助。 select time_dif, count(time_dif) as count from ( select d
我想在构造函数中分配我的类变量,但出现错误“期望成员声明” class YLAService { var context:Context?=null class YLAService
试图让我了解 Jasmine spy ,这就是我的测试的样子: $scope.switchTurns = function () { $scope.playerTurn = !$scope
我正在研究一个 C 输出问题: #include int main() { int a[][2][3]={0,1,2,3,4,5,6,7,8,9,10,11,12}; int i=-1;
我正在为我的大学做一个关于编译器的作业,这是我第一次使用 SableCC 3.7。我正在尝试定义我的语法文件,但是当我尝试运行它(通过命令行)时,我收到此错误: “ParserException:[5
我正在尝试下面的线性回归 python 代码,但收到错误:“期望 2D 数组得到 1D 数组:Array=[16]”。可能出了什么问题? from sklearn.linear_model impo
这个问题在这里已经有了答案: MySQL - UPDATE query based on SELECT Query (13 个答案) 关闭 3 年前。 我尝试将 John Smith 的薪水增加 1
我在程序结束时遇到问题,它在关键字“END”的末尾表示语法错误,意外的 END_OF_INPUT,期待 IF - 最后一行。我看不出出了什么问题,有人知道问题出在哪里 DELIMITER $$
我为我的方法编写了一个 JUnit 测试。 这是我的方法: public static int delimit(int value, int min, int max) throws Illeg
我想制作一个可以使用 srand 函数回答问题的 expect 脚本。 例如,我将使用 netcat 连接到服务器,我将从服务器收到一个问题,例如“请输入 0 或 1”;然后我希望我的脚本可以使用上面
我有一个初始化脚本(我运行的是 Debian)来启动一个 DLNA 服务器。当我开始服务时,出现以下错误。任何帮助,将不胜感激。请注意:我对 linux/bash/debian 非常陌生。 我收到此错
我正在尝试创建一个脚本来清除 ciscoasa bad xlate。 为了检查错误的 xlate,我运行 sh xlate |在 500 中,如果它得到回复,那么它应该发送一个明确的命令。如果我不这样
我在使用 bash 变量执行 expect 命令时遇到问题。我有脚本参数给定的位置,我需要通过 expect -c 在发送命令中使用它。但我需要用 "给它,所以实际上发送命令认为我已经结束输入,并且在
我真的很难过!我不想使用 RSA AUTH,所以请弃权。 #!/bin/bash echo "Enter the server password" read password cd /home/mik
我有一个异步 QUnit 测试,如果操作超时,测试应该通过。 (我正在测试,如果您省略可选的 errorCallback 并执行会引发错误的操作,那么无论您等待多长时间,基本上都不会发生任何事情。)
关于这个话题有很多问题,但是 - 他们没有给我答案。 根据建议 - 有一个可以设置 ServicePointManager.Expect100Continue = false。但这是 Not Acce
有几篇关于相同内容的帖子,但我仍然无法使我的 expect 脚本正常工作。我的意图是将所有内容自动化,但为用户保留输入密码。所以脚本有 3 个部分: 自动登录 让用户输入密码 将控制权交还给 Expe
我是一名优秀的程序员,十分优秀!