Python Pexpect не запускает мой SSH туннель - PullRequest
0 голосов
/ 21 февраля 2019

у меня есть этот скрипт (называемый туннелем):

(ip-сервер заменен на ssh_server_ip)

ssh -ND 5545 -p 443 -vvv user@ssh_server_ip

Я пытаюсь запустить его через pethon pexpect.

import pexpect 
import time

p = pexpect.run('./tunnel')
#does not work with spawn
#p = pexpect.spawn('./tunnel') 
p.expect('password: ')
time.sleep(2)
p.sendline('pswd')

когда я запускаю сценарий, соединение с сервером существует, но оно не будет длиться долго (несколько секунд)

ssh        8872    root    3u  IPv4 510801      0t0  TCP 192.168.1.36:46328->ssh_server_ip:https (ESTABLISHED)

, если туннель ssh полностью установлен,У меня должно быть следующее:

ssh        8130    root    3u  IPv4 503864      0t0  TCP 192.168.1.36:46326->ssh_server_ip:https (ESTABLISHED)
ssh        8130    root    4u  IPv6 505215      0t0  TCP [::1]:5545 (LISTEN)
ssh        8130    root    5u  IPv4 505216      0t0  TCP 127.0.0.1:5545 (LISTEN)

Должен ли я использовать Bash Expect вместо Python Pexpect?

Спасибо, ребята!

1 Ответ

0 голосов
/ 22 февраля 2019

Вам нужно написать так:

p.sendline('password')
p.expect(pexpect.EOF)

В противном случае скрипт Python закроется сразу после отправки пароля, что, в свою очередь, приведет к уничтожению команды ssh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...