Bash 为什么互动可以';您不能保持ssh登录状态吗?
我的login.exp脚本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
#!/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提示