Bash 为什么互动可以';您不能保持ssh登录状态吗?

Bash 为什么互动可以';您不能保持ssh登录状态吗?,bash,expect,interactive,Bash,Expect,Interactive,我的login.exp脚本 #!/usr/bin/expect spawn ssh -p 1111 root@vps_ip expect "*password" {send "password_for_my_vps\n"} interact expect login.exp将进入ssh并保持ssh登录状态 machine@local:~$ expect login.exp spawn ssh -p 1111 root@vps_ip root@vps_ip's password: Last

我的login.exp脚本

#!/usr/bin/expect
spawn ssh -p 1111 root@vps_ip
expect "*password" {send "password_for_my_vps\n"}
interact
expect login.exp
将进入ssh并保持ssh登录状态

machine@local:~$ expect   login.exp
spawn ssh -p 1111 root@vps_ip
root@vps_ip's password: 
Last login: Mon Nov 12 06:32:28 2018
[root@localhost ~]# 
登录到我的vps并在我的vps中保持登录状态

更改login.exp脚本,如下所示:

#!/usr/bin/expect
spawn ssh -p 1111 root@vps_ip  uptime
expect "*password" {send "password_for_my_vps\n"}
interact
唯一的区别是最后一个脚本有一个用于spawn的
uptime
命令

machine@local:~$expect   /tmp/login.exp
spawn ssh -p 1111 root@vps_ip
root@vps_ip's password: 
02:19:33 up 7 days,  2:14,  0 users,  load average: 0.00, 0.00, 0.00
machine@local:~$
登录我的vps并执行正常运行时间命令,然后退出我的vps,返回我的本地控制台。

此处的
交互
无法将其保留在我的vps控制台中

交互
将在生成的进程完成时返回

对于
spawn sshuser@host正常运行时间
,生成的
ssh
命令在
正常运行时间
(在远程服务器上运行)结束时结束,然后
交互
也将返回

这就像手动运行
ssh一样user@host正常运行时间
,在
正常运行时间
(然后
ssh
)结束后,它也不会给您远程shell提示