executa script quando a interface de rede está ativa

2

eu tenho este pedaço de script bash:

  

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

$ adapter="eth0" Eu quero executar isso até que interna tenha o valor correto e depois disso eu quero ir para o resto do meu roteiro Você tem alguma idéia de como eu poderia lidar com isso?

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

Obrigado antecipadamente.

    
por Dimitris Sapikas 03.04.2013 / 00:21

1 resposta

3

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 }'
    )
done

# send sms

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

    
por Gilles Quenot 03.04.2013 / 03:02