On Sat, 6 Jan 2001 13:49:46 -0800, Ross Boylan said: > At various times I have wanted to turn off certain daemons without > uninstalling their packages. I couldn't find any good way to do this, > so I wrote a little script. I'm making it available under the GPL. > > I've since discovered that the some packages also create a bunch of > crontab jobs, and they are still cluttering things up a bit. > > If there's a better way to do this, I'd love to hear it.
Try finding the line in the file /etc/inet.conf and comment it out for the services that you don't want to run. You may have to reboot then, or try restarting the internet superserver - try a "/etc/init.d/inetd restart". You might have to kill a few other processes or just stop them using their scripts in /etc/init.d/. Hope this helps > > #! /usr/bin/python > # switchDemon.py > # > # Usage: switchDemon.py (--on | --off) <list of demon names> > # > # This script will scan, turn off, or turn on selected > # demons in /etc/rc?.d/. It does so by renaming S* symbolic > # links so the services won't start. > # Scan mode (neither --on nor --off) simply reports the status > # of the demons. > # Note that demons are not actually started or stopped by this script; > # it just controls what will happen at system startup. > # > # (c) 2001 Ross Boylan [EMAIL PROTECTED] > # Made available under the GPL (see www.gnu.org) > > import glob, os.path, re, sys > > class Demon: > "Information and actions on a demon" > > gDisabled = "Disabled-" > > def __init__(self, name): > "Name of demon" > if not os.path.exists("/etc/init.d/"+name): > raise name + " is not a known demon" > self._name = name > self._statuses = [] > > def checkStatus(self): > "Check status at various run levels" > self.doOverRunLevels(self._checkStatus) > > def turnOff(self): > "Make it so won't run at next system start" > self.doOverRunLevels(self._turnOff) > self.checkStatus() > > def turnOn(self): > "We will start on next run level change" > self.doOverRunLevels(self._turnOn) > self.checkStatus() > > def doOverRunLevels(self, method): > "Invoke method over all run levels" > for rl in glob.glob("/etc/rc[0-9Ss].d"): > method(rl, rl[-3]) > > def _checkStatus(self, directory, runLevel): > "See if we are around and fill in _statuses if we are" > aRegex = re.compile("("+Demon.gDisabled+r")?S(\d\d)"+self._name); > for file in os.listdir(directory): > aMatch = aRegex.search(file) > if aMatch: > aStatus = DemonStatus(runLevel, aMatch.group(2), not > aMatch.group(1)) > self._statuses.append(aStatus) > return > > def _turnOff(self, directory, runLevel): > "Disable demon for future reboots" > aRegex = re.compile(r"S(\d\d)"+self._name) > for file in os.listdir(directory): > aMatch = aRegex.match(file) # must be at start > if aMatch: > os.rename(os.path.join(directory, file), > os.path.join(directory, Demon.gDisabled+file)) > # no return values documented for os.rename > return > > def _turnOn(self, directory, runLevel): > "Enable demon for future reboots" > aRegex = re.compile(Demon.gDisabled+r"S(\d\d)"+self._name) > for file in os.listdir(directory): > aMatch = aRegex.match(file) # must be at start > if aMatch: > os.rename(os.path.join(directory, file), > os.path.join(directory, > file[len(Demon.gDisabled):])) > # no return values documented for os.rename > return > > def reportTo(self, file): > "Send human readable report to stream" > file.write("Demon %s:\n"%self._name) > for aStatus in self._statuses: > file.write("\t%s\n"%str(aStatus)) > > > class DemonStatus: > "Status of a given demon" > > def __init__(self, runlevel, priority, enabled=1): > "Priority (nn) of demon and whether it is enabled" > # runlevel is a single 0, 1, ... > self._runlevel = runlevel > self._priority = priority > self._enabled = enabled > > def __str__(self): > if self._enabled: > msg = "Enabled" > else: > msg = "Turned off" > return "%s for run level %s (priority %s)"%(msg, self._runlevel, > self._priority) > > def isEnabled(self): > if self._enabled: > return "on" > else: > return "off" > > > aCommand = sys.argv[1] > if aCommand[0] == "-": > if aCommand[-1] == "f": > anAction = "turnOff" > elif aCommand[-1] == "n": > anAction = "turnOn" > else: > print "Command not understood" > names = sys.argv[2:] > else: > anAction = "checkStatus" > names = sys.argv[1:] > > for aDemonName in names: > aDemon = Demon(aDemonName) > Demon.__dict__[anAction](aDemon) > aDemon.reportTo(sys.stdout) > > > > -- > To UNSUBSCRIBE, email to [EMAIL PROTECTED] > with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED] > > > -- Using intelligent power: RISC OS, Be OS, Debian Linux Enjoying computing.