My first python program --append kernel-parameter
适兕
|
1#
适兕 发表于 2008-07-10 11:54
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() |