Закройте ожидаемый скрипт, не закрывая сеанс в SSH - PullRequest
0 голосов
/ 06 января 2019

У меня есть скрипт ssh для входа на мой сервер

#!/usr/bin/expect -f

set timeout -1

spawn ssh rootacc@$ip

// logic to login

interact

Ожидаемый скрипт все еще будет работать. Мне нужно закрыть сценарий ожидаемого завершения (kill) после завершения «логики для входа», не закрывая сессию ssh.

Если я заменю слово «взаимодействовать» на «выход», сессия будет закрыта, и она вернется в мою локальную файловую систему.

Есть ли способ, которым я могу это сделать?

1 Ответ

0 голосов
/ 07 января 2019

Ниже приведен пример использования 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] #
...