Estou tendo problemas para executar um script python e continuar com meu script bash

0

Estou usando o tcprelay.py do usbmuxd para encaminhar a porta local 2222 para a porta remota 22 para que eu possa usar o SSH no meu iPhone através de USB. Se eu correr

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

Ele encaminha a porta com sucesso e, em outra janela de terminal, posso executar

ssh -l root -p 2222 127.0.0.1

e use com êxito o SSH via USB. No entanto, estou tentando combinar isso em um comando e

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

não funciona. Depois de executar o comando python, não posso executar nenhum outro comando nessa janela. Como eu poderia colocar esses dois comandos juntos?

Obrigado

    
por Milo 16.10.2013 / 07:36

2 respostas

2

Uma adaptação da resposta de MadMike, você pode usar os seguintes comandos:

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

Isso executará o programa python em segundo plano, depois aguardará (verificando uma vez por segundo) até que a porta interna 2222 esteja aberta. Em seguida, ele executará o programa ssh .

Fonte para verificar se uma porta está aberta

    
por kiri 16.10.2013 / 08:06
2

Você precisa deixar o primeiro comando ser executado em segundo plano e iniciar o segundo após o primeiro ser iniciado. Tenho certeza de que há uma maneira mais elegante (das sortes), mas isso deve funcionar.

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

O e comercial no final informa ao bash para executar o comando python em segundo plano.

No caso de precisar executar o script uma segunda vez, talvez seja necessário localizar o comando python em execução e eliminá-lo antes de poder executá-lo uma segunda vez. Senão vai reclamar que a porta já está bloqueada.

    
por MadMike 16.10.2013 / 07:45