У меня проблемы с запуском скрипта на Python и продолжением работы со скриптом bash

Я использую tcprelay.py из usbmuxd для переадресации локального порта 2222 на удаленный порт 22, чтобы я мог подключиться по SSH к iPhone через USB. Если я запускаю

python ~/Downloads/usbmuxd-1.0.8/python-client/tcprelay.py -t 22:2222

, он успешно перенаправляет порт, и в другом окне терминала я могу запустить

ssh -l root -p 2222 127.0.0.1

и успешно использовать SSH через USB. Тем не менее, я пытаюсь объединить это в одну команду, и

python ~/Downloads/usbmuxd-1.0.8/python-client/tcprelay.py -t 22:2222
ssh -l root -p 2222 127.0.0.1

не работает. После запуска команды python я не могу запустить другие команды в этом окне. Как бы я собрал эти две команды?

Спасибо

.
0
задан 16 October 2013 в 09:36

2 ответа

Адаптация ответа MadMike, вы можете использовать следующие команды:

python ~/Downloads/usbmuxd-1.0.8/python-client/tcprelay.py -t 22:2222 &

while ! (: < /dev/tcp/127.0.0.1/2222) 2>/dev/null; do
    sleep 1
done

ssh -l root -p 2222 127.0.0.1

Это запустит программу python в фоновом режиме, затем подождет (проверяя раз в секунду), пока внутренний порт 2222 не будет открыт. Затем он запустит программу ssh.

Источник для проверки, открыт ли порт

0
ответ дан 16 October 2013 в 09:36

Вам нужно разрешить первой команде работать в фоновом режиме и запустить вторую после инициации первой. Я уверен, что есть более элегантный способ (своего рода), но это должно сработать.

python ~/Downloads/usbmuxd-1.0.8/python-client/tcprelay.py -t 22:2222 &
ssh -l root -p 2222 127.0.0.1

Амперсанд в конце говорит bash запустить команду python в фоновом режиме.

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

0
ответ дан 16 October 2013 в 09:36

Другие вопросы по тегам:

Похожие вопросы: