executa o script quando a interface de rede está ativa

executa o script quando a interface de rede está ativa

eu tenho este pedaço de script bash:

internal=$(/sbin/ifconfig $adapter | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}')

$adapter="eth0" quero executar isso até que internal tenha o valor correto e depois disso quero ir para o resto do meu script. Você tem alguma ideia de como posso lidar com isso?

Depois disso tenho o código para enviar o ip via sms!

Agradeço antecipadamente.

Responder1

Tente fazer isso:

#!/bin/bash

PATH+=/sbin
adapter=eth0
internal=""

until [[ $internal =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]; do
    sleep 1
    internal=$(
        ifconfig "$adapter" |
        awk -F'(inet add?r:| +|:)' '/inet add?r/{print $3}'
    )
done

# send sms

Como você pode ver, eu uso apenas um tubo: |com, não precisa de mais, awkpode fazer todo o processamento.

informação relacionada