[Tutor] updating Unix config file
Matt Herzog
msh at blisses.org
Mon Oct 19 18:10:08 CEST 2009
Hi All.
The below script seems to work well enough to use but I'm wondering if I'm doing the file edit stuff in a "kosher" manner. I was just reading the Lutz O'Reilly "Learning" book and remembered that strings are immutable. So how was I able to change the strings for my dotted quad? I did not explicitly open a separate file in /tmp and then overwrite the ipf.conf file which seemed like the safer way. Yet somehow the below syntax works.
Also I need to figure out how to update the LASTKNOWN variable after my IP changes.
Thanks for any advice.
import socket
# import fileinput
import subprocess
import string
import re
SENDMAIL = "/usr/sbin/sendmail"
CURRENT = socket.getaddrinfo(socket.gethostname(), None)[0][4][0]
LASTKNOWN = '173.48.204.168'
if CURRENT == LASTKNOWN:
print 'Nevermind.'
subprocess.sys.exit()
else:
cf = open("/etc/ipf.conf", "r")
lns = cf.readlines()
lns = "".join(lns)
# close it so that we can open for writing later
lns = re.sub(LASTKNOWN, CURRENT, lns)
cf = open("/etc/ipf.conf", "w")
cf.write(lns)
cf.close()
subprocess.call('/sbin/ipf -Fa -f /etc/ipf.conf', shell=True)
subprocess.call('/sbin/ipnat -CF -f /etc/ipnat.conf', shell=True)
ptchew = subprocess.Popen("%s -t" % SENDMAIL, "w")
ptchew.write("To: msh at blisses.org\n")
ptchew.write("Subject: YOUR IP ADDRESS HAS CHANGED\n")
ptchew.write("\n") # blank line separating headers from body
ptchew.write("Your IP address has changed to: ")
ptchew.write(CURRENT)
ptchew.write(time.asctime())
ptchew = p.close()
--
The test of a first-rate intelligence is the ability to hold two opposed ideas in the mind at the same time, and still retain the ability to function.
-- F. Scott Fitzgerald
More information about the Tutor
mailing list