Я использую 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 я не могу запустить другие команды в этом окне. Как бы я собрал эти две команды?
Спасибо
.Адаптация ответа 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
.
Вам нужно разрешить первой команде работать в фоновом режиме и запустить вторую после инициации первой. Я уверен, что есть более элегантный способ (своего рода), но это должно сработать.
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 и убить ее, прежде чем вы сможете запустить ее во второй раз. В противном случае он будет жаловаться, что порт уже заблокирован.