Como esperar um pouco e depois suspender o trabalho atual no novo terminal aberto em um script bash

0

Eu tenho um programa chamado mdr-dev que eu executo e que, como resultado, abre a porta 1022.

Após abrir essa porta, tenho que deixar o programa em execução para manter essa porta aberta. O problema é que demora algum tempo a executar, pelo que, nesse meio tempo, devo esperar que abra essa porta!

Quando a porta estiver aberta, quero abrir um novo terminal e ssh através dessa porta para um dispositivo remoto.

A pergunta é: Como escrever um bash ou qualquer outro script para isso?

(Eu já tentei com o comando sleep, mas parece que não funciona.)

Aqui está o que eu tentei até agora:

#!/bin/bash
echo $MDR_ROOT
mdr-dev --root --mount /opt/tile/home /home --tunnel 1022 22 

Após o processo de inicialização do comando mdr-dev acima, quero abrir automaticamente um novo terminal e executar:

ssh -p 1022 root@localhost

Claro, já tentei:

--tunnel 1022 22 &
sleep 5m 
xterm -hold -e ssh -p 1022 root@localhost

mas isso parece não funcionar ...

Como devo proceder?

    
por andi99 06.10.2015 / 23:21

1 resposta

1

Como não tenho seu programa mdr-dev , é difícil testar isso, então aqui vai a versão 0.1. Por favor, teste e feedback nos comentários.

#!/bin/bash  
#
# This script opens a port to tunnel through, then waits for the tunnel to be opened
# and then connects to the correct host using ssh  
# Answer to: https://sobrelinux.info/questions/181279/how-to-wait-for-a-while-and-then-suspend-current-work-on-open-new-terminal-in-a""
if $bDebug ; then
  set -x
  declare iDebugTimeOut=30 #seconds
fi

### Main ###
echo "$MDR_ROOT"
# open tunnel:
mdr-dev --root --mount /opt/tile/home /home --tunnel 1022 22 &

if $bDebug ; then
  read -t $iDebugTimeOut -p "Hit [Enter] to continue..."
fi

#Wait for the tunnel to open
while [ -z "$szPortOpen" ]
do
  sleep 1m
  netstat -atn | grep ":1022" | (read szPortOpen; )
  if $bDebug ; then
    echo $szPortOpen
    read -t $iDebugTimeOut -p "Hit [Enter] to continue..."
  fi
done

# Now ssh to the server 
xterm -hold -e ssh -p 1022 root@localhost
    
por Fabby 08.10.2015 / 10:37