shell script question
Richard K. Miller
richardkmiller at gmail.com
Wed Oct 12 20:53:27 MDT 2005
>> I'm close to finishing a shell script to automatically enable the
>> DMZ on my Linksys router no matter what IP address my computer has.
>> This returns the last octet of my local IP address, which happens
>> to be a "5":
>> ifconfig | grep netmask | grep -v 127.0.0.1 | awk {'print $2'} |
>> sed 's/10.1.1.//'
>> This connects to the web interface of my Linksys router to turn
>> on the DMZ: (notice the "5")
>> curl -u admin:password -d
>> "submit_button=DMZ&change_action=&action=Apply&dmz_enable=1&dmz_ipadd
>> r=5 " -s http://10.1.1.1/apply.cgi
>> How do I connect the two commands?
>>
>
> Piece of cake. Use the backquotes to grab the first command's output:
>
> LAST_OCTET=`ifconfig | grep netmask | grep -v 127.0.0.1 \
> | awk {'print $2'} |sed 's/10.1.1.//'`
> curl -u admin:password -d \
> "submit_button=DMZ&change_action=&action=Apply&dmz_enable=1&dmz_ipaddr
> =$LAST_OCTET"\ -s http://10.1.1.1/apply.cgi
>
> Even so, this seems really hacky (in a bad way). For example, you
> can pass an interface name to ifconfig- call "ifconfig eth0"
> instead of greping out the localhost IP.
>
Thanks Barry and Doran for the tip. I didn't know I could enclose
the command and assign the result to a variable. Perfect.
And true, I wasn't going to put the code in a beauty contest. It's
ugly. I'm not sure, however, that grepping "ifconfig eth0" is any
prettier. But I'm okay with that.
Richard
More information about the PLUG
mailing list