Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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 发送密码不存在的命令';无法在SSH连接中使用Expect脚本_Linux_Ssh_Expect_Send - Fatal编程技术网

Linux 发送密码不存在的命令';无法在SSH连接中使用Expect脚本

Linux 发送密码不存在的命令';无法在SSH连接中使用Expect脚本,linux,ssh,expect,send,Linux,Ssh,Expect,Send,我希望能够使用Expect脚本通过SSH连接远程登录到路由器,这就是我所拥有的: #!/usr/bin/expect set host "192.168.1.50" set user "root" set password "mypass" spawn ssh "$user\@host" expect "word:" send "$password\r" 当我尝试使用它时,路

我希望能够使用Expect脚本通过SSH连接远程登录到路由器,这就是我所拥有的:

#!/usr/bin/expect
set host "192.168.1.50"
set user "root"
set password "mypass"
spawn ssh "$user\@host"
expect "word:"
send "$password\r"
当我尝试使用它时,路由器变得没有响应(并且可能超时)。当它进入密码提示行时,它立即返回

第一次登录时,当SSH提示我“是/否”问题时,我使用SSH密钥手动键入“是”进行身份验证。然后,在第一次尝试后,路由器只是自动提示我密码。确切地说,它有两行:

User Authentication
Password:
几秒钟后,它返回到我的根目录,好像send命令在密码提示后没有发送任何内容


因此,我的问题是,在我对Expect和脚本的一般知识非常有限的情况下,这方面的解决方案是什么?出了什么问题?

我遇到了一个问题,我无法在
expect
停止的地方“拾取”,我认为这将是默认行为

正如@glennjackman在评论中所说,在末尾添加
interactive
,可以让您重新开始

#!/usr/bin/expect
set host "192.168.1.50"
set user "root"
set password "mypass"
spawn ssh "$user\@host"
expect "word:"
send "$password\r"
interact

发送后,添加行
interact
,以便重新获得控制权。如果这不能解决问题,请使用
expect-d
运行以查看调试输出。它可以工作,非常感谢。