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.
*/