web-dev-qa-db-fra.com

exécuter le script lorsque l'interface réseau est active

j'ai ce morceau de script bash:

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

$ adapter = "eth0" je veux l'exécuter jusqu'à ce que interne ait la valeur correcte et ensuite je veux aller au reste de mon script Avez-vous des idées sur la façon dont je pourrais gérer cela?

Après cela, je l'ai codé afin d'envoyer l'ip via sms!

Merci d'avance.

2
Dimitris Sapikas

Essayez de faire ceci:

#!/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

Comme vous pouvez le voir, j'utilise un seul tube: | avec awk , pas besoin de plus, awk peut faire tout le traitement.

3
Gilles Quenot