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




/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to