Viewing file: sysctl.py (1.61 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#! /usr/bin/python # -*- python -*- # -*- coding: utf-8 -*- # # Copyright (C) 2007 Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #
class sysctl: def __init__(self): self.cache = {}
def __getitem__(self, key): if not self.cache.has_key(key): value = self.read(key) if value == None: return None self.cache[key] = value
return self.cache[key]
def __setitem__(self, key, value): oldvalue = self[key]
if oldvalue == None: raise IOError elif oldvalue != value: self.write(key, value) self.cache[key] = value
def keys(self): return self.cache.keys()
def read(self, key): try: f = file("/proc/sys/%s" % key.replace(".", "/")) except: return None value = f.readline().strip() f.close() return value
def write(self, key, value): try: f = file("/proc/sys/%s" % key.replace(".", "/"), "w") except: return f.write(value) f.close()
def refresh(self): for key in self.cache(): del self.cache[key] value = self.read(key) if value != None: self.cache[key] = value
|