Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 繁殖id:繁殖id exp6未打开_Linux_Shell_Scripting_Expect - Fatal编程技术网

Linux 繁殖id:繁殖id exp6未打开

Linux 繁殖id:繁殖id exp6未打开,linux,shell,scripting,expect,Linux,Shell,Scripting,Expect,我知道这里已经提到了这个问题,但解决方案对我来说并不适用 我有一个脚本(我们把它命名为myscript.sh),它在远程环境中生成一个进程,并且应该与之交互 #!/usr/bin/expect log_user 0 set timeout 10 spawn ssh -o PubkeyAuthentication=no [lindex $argv 0] -n [lindex $argv 1] expect "password:" {send "mypassword\r"} expect "Cont

我知道这里已经提到了这个问题,但解决方案对我来说并不适用

我有一个脚本(我们把它命名为myscript.sh),它在远程环境中生成一个进程,并且应该与之交互

#!/usr/bin/expect
log_user 0
set timeout 10
spawn ssh -o PubkeyAuthentication=no [lindex $argv 0] -n [lindex $argv 1]
expect "password:" {send "mypassword\r"}
expect "Continue to run (y/n)" {send "n\r"}
interact
当我在本地环境中调用此脚本时

myscript.sh user@host "command1;./command2 parameter1 parameter2"
我在第7行(interact)得到上述错误


有什么想法吗???

尝试在不使用脚本的情况下执行正常的ssh。看看它是否有效。有时远程主机标识会更改,并且主机具有新的ip或新密钥。然后使用ssh-keygen-f~/.ssh/known_hosts-R old_hosts或类似的方法删除旧密钥。我怀疑expect无法找到(匹配)您发送的模式

expect "password:" {send "mypassword\r"}
expect "Continue to run (y/n)" {send "n\r"}
再次检查“密码:”和“继续运行(y/n)”的大写字母是否正确


如果仍然出现相同的错误,可以尝试使用正则表达式。

我遇到了这个问题,原因是使用了错误的端口。

我也遇到了这个问题,但这是因为我为一个不相关的项目创建/编辑了以下文件:

~/.ssh/config

一旦我删除了它,我的所有脚本都开始工作,我的expect文件就不再存在这个问题。

您将远程命令作为参数传递给ssh,这样当远程命令完成时,ssh会话将结束。将没有可交互的内容。是的,但该远程命令不应在收到“继续运行(y/n)”的输入之前结束。通过“y\r”后,它应该再运行大约2分钟。。。interact命令不应该在执行结束前将远程命令的输出转发到我的stdout吗?您确定[interact]状态良好,而不仅仅是超时吗?你知道如何调试Expect对话吗。首先;2.确保你已经解决了格伦的观察问题。更多详细信息,请稍后参阅。exp#u internal 1;#您将能够看到从派生的进程中得到了什么。在尝试调试时,日志用户0也是。。。相反,考虑一个评论或提供一个更好的答案。检查