我有一个ssh脚本登录到服务器
#!/usr/bin/expect -f
set timeout -1
spawn ssh rootacc@$ip
// logic to login
interact
期望脚本仍将运行。 我需要在“登录逻辑”完成后关闭期望脚本(kill),而不关闭ssh会话。
如果我将“ interact”替换为“ exit”,则会话将关闭,它将返回我的本地文件系统。
有什么办法可以做到这一点?
答案 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] #