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