2

i have this piece of bash script :

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

$adapter="eth0" i want to execute this until internal has the correct value and after that i want to go to the rest of my script Do you have any ideas how i could deal with that ?

After that i have code it in order to send the ip via sms !

Thank you in advance.

Dimitris Sapikas
  • 2,705
  • 2
  • 15
  • 9

1 Answers1

3

Try doing this :

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

As you can see, I use only one pipe : | with , no need more, awk can do the whole processing.

  • It worked greate ! thank you , but it seems there is a litle bug calling my script on the bottom (before "exti 0" of course) of /etc/rc.local , when i receive the sms the time is on 0 unix timestamp :/

    NOTE : i receive the sms using my provider's mail (smtp) that send's my the subject on sms

    – Dimitris Sapikas Apr 03 '13 at 05:50