关闭期望脚本而不关闭ssh中的会话

时间:2019-01-06 07:24:47

标签: linux unix expect

我有一个ssh脚本登录到服务器

#!/usr/bin/expect -f

set timeout -1

spawn ssh rootacc@$ip

// logic to login

interact

期望脚本仍将运行。 我需要在“登录逻辑”完成后关闭期望脚本(kill),而不关闭ssh会话。

如果我将“ interact”替换为“ exit”,则会话将关闭,它将返回我的本地文件系统。

有什么办法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

以下是使用sexpect的示例。仅供参考。

[STEP 101] # export SEXPECT_SOCKFILE=~/tmp/sexpect-ssh.sock
[STEP 102] # sexpect spawn ssh -D 8888 -N root@127.0.0.1
[STEP 103] # sexpect expect -nocase password:
root@127.0.0.1's password:                     <-- No <NEWLINE> here
[STEP 104] # sexpect send -enter 'password'
[STEP 105] # pgrep -af 8888
28089 sexpect spawn ssh -D 8888 -N root@127.0.0.1
28090 ssh -D 8888 -N root@127.0.0.1
[STEP 106] # netstat -anp | grep -w 8888
tcp    0  0 127.0.0.1:8888   0.0.0.0:*    LISTEN      28090/ssh
[STEP 107] #