web-dev-qa-db-ja.com

ネットワークインターフェイスが起動しているときにスクリプトを実行する

私はこのbashスクリプトを持っています:

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

$ adapter = "eth0"これは、内部が正しい値になるまで実行し、その後、スクリプトの残りの部分に移動したいのですが、どうすればそれを処理できるかについてのアイデアはありますか?

その後、SMS経由でIPを送信するためにコードを作成しました。

前もって感謝します。

2

これを試してください:

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

ご覧のとおり、私はパイプを1つだけ使用しています:| with awk 、これ以上必要ありません、awkは処理全体を実行できます。

3
Gilles Quenot