My first python program --append kernel-parameter

全文如下:最初的版本,实现的功能有限,也少必要的参数检测,持续更行中!
用到了构建命令行工具的模块optparse.文字处理string.对文件描述符的操作。
#!/usr/bin/env python
#
#akpw_grub.py:append kernel-parameters with grub.conf
#
# (in alphabetical order...)
#
#lijiansheng(lijiangsheng1@gmail.com)
#
# Maybe  And many others
#
#
# This software may be freely redistributed under the terms of the GNU
# library public license.
#
# You should have received a copy of the GNU Library Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
import optparse
import ConfigParser
import re,os,sys
import string
f = open('/etc/grub.conf','r')
clines = f.readlines()
f.close()
dictory =[
("noacpi"),
("acpi=off")
]
def list_current():
    print """************************below is your current running Linux OS kernel-parameterse************************
       """
    if os.access("/proc/cmdline", os.R_OK):
       path = "/proc/cmdline"
    else:
       path = None;
    if path is not None:
         f = open(path, "r")
         lines = f.readlines()
         parameter=lines[0]
    print  parameter
#next regular match so output all kernel-parameters   
    print """********************below is your current grub.conf about kernel-parameterse*****************************
       """
    if os.access("/etc/grub.conf", os.R_OK):
       grub = "/etc/grub.conf"
    else:
       grub = None;
    if grub is not None:
         f = open(grub, "r")
         lines = f.readlines()
    for i in xrange(len(lines)):
        if lines[0] != "#":
           line = string.strip(lines)
           try:
               line = string.split(line,'#')[0]
           except: pass
           tokens = string.split(line)
#           if tokens[0] == "kernel":
           if lines[1] == "k" or lines[0] == "k":
              print lines
    f.close()
#           print tokens
    if os.access("/etc/grub.conf" , os.W_OK):
       print """****************************************Now, go on
             """         
    else:
         print """unknown error
               """
    append_new()
def append_new():
    selection = raw_input("Please Input Your Kernel-Parameter:\n")
    print ("your input kernel parameter is " + selection )
    yes_no = raw_input("are you sure add this parameter?(yes/no) " )
    if yes_no == "yes":   
       fd = open('/etc/grub.conf', 'r')
       clines = fd.readlines()
       for i in xrange(len(clines)):
           if clines[0] != "#":
              line = string.strip(clines)
              try:
                  line = string.split(line,'#')[0]
              except: pass
              tokens = string.split(line)
#       for strline in clines:
           if clines[1] == "k" or clines[0] == "k":
#           if strline[:6] == "kernel":
              stringline = line.replace(line,line + ' %s\n' % selection)
              print stringline
       fd.close()
       fd1 = open('/etc/grub.conf', 'w')
      
       for i in xrange(len(clines)):
           if clines[0] != "#":
              line = string.strip(clines)
              try:
                  line = string.split(line,'#')[0]
              except: pass
              tokens = string.split(line)
           if clines[1] == "k" or clines[0] == "k":
              stringline = line.replace(line,line + ' %s\n' % selection)
              fd1.writelines(stringline)
           else:
              if clines[0] != "#":
                 line = string.strip(clines)
                 try:
                    line = string.split(line,'#')[0]
                 except: pass
                 fd1.writelines(['%s' % line + '\n'])  
#              print 'next is your changed kernel %s' % stringline
           
       fd1.close()
def main():
    """Welcome to use redflag server,enjoy it! """
  
    p = optparse.OptionParser(description='change your boot kernel-parameterse and append your configure file,like grub',
                                    prog='akpw_grub',
                                    version='akpw_grub 0.1;write by lijiangsheng1@gmail.com',
                                    usage= '%prog [options] arg ')
    p.add_option('--add','-a',help='append kernel-parameters and work immediately.')
    p.add_option('--list','-l',default=True,help='list current kernel-parameters')
    options, arguments = p.parse_args()
   
    if options.add:
        append_new()
    elif options.list:
         list_current()
if __name__ == '__main__':
   if os.getuid() != 0:
       print """you must be run this program as root!!"""
       sys.exit(10)   
   main()