Cria um script Bash para esperar e depois executar

1

O que estou basicamente tentando conseguir é automatizar algo que faço toda vez que começo a trabalhar.

Nesta ordem, eu

  1. conexão VPN
  2. Abra a nova guia gnome-terminal
  3. SSH em uma máquina remota

Eu tenho isso até agora:

WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}')
xdotool windowfocus $WID
xdotool type --delay 1 --clearmodifiers "sudo openvpn --config 'conn1.ovpn'"
xdotool key Return

xdotool key ctrl+shift+t
wmctrl -i -a $WID
sleep 1

while ! $(/usr/bin/fping -q 192.168.0.5); do sleep 1;done

xdotool type --delay 3 --clearmodifiers "ssh machine1"
sleep 3
xdotool key Return

O problema que estou tendo é que os comandos SSH exigem que a conexão VPN seja aberta primeiro. Eu pensei que, colocando o último comando sleep, que o código iria esperar por 3 segundos antes de apertar enter.

O que está realmente acontecendo é que o comando openvpn não está em execução até depois do último sono, então o comando SSH falha.

Alguém por favor pode me apontar na direção que eu preciso estar indo para isso. Sou relativamente novo na criação de scripts de shell, mas não é novidade no Linux.

    
por Wildcard27 08.11.2017 / 00:40

1 resposta

1

Coloque um loop de espera antes de iniciar o ssh:

while ! $(/usr/bin/fping -q <openvpn remote endpoint ip>); do sleep 1;done
    
por 08.11.2017 / 00:54