Das Kommando chrctcp

chrctcp

Unter AIX wird der System Resource Controller (SRC) zum kontrollieren von Subsystemen und Subservern verwendet. Die Kommandos lssrc, startsrc und stopsrc dürften jedem AIX Administrator bekannt sein. Nicht ganz so bekannt ist das Kommando chrctcp mit dem Subsysteme, die über /etc/rc.tcpip gestartet werden, verwaltet werden können. Durch Nutzung dieses Kommandos kann das Editieren des Start-Skriptes /etc/rc.tcpip vermieden werden. Die meisten Administratoren kennen und verwenden nur die Optionen „-a“ (add/activate), „-d“ (delete/deactivate) und „-S“ (start, stop or restart subsystem). Das Kommando chrctcp hat aber über die Optionen „-c“ (change) und „-s“ (show) noch mehr Funktionalität zu bieten, was von SMIT auch genutzt wird. (Letztlich wurde chrctcp wohl auch eigens für die Verwendung durch SMIT geschrieben.)

Eine Reihe von Subsystemen wird beim Booten über /etc/rc.tcpip gestartet. Allerdings nur wenn es einen Eintrag der folgenden Form im Skript /etc/rc.tcpip gibt:

start /usr/sbin/inetd "$src_running"

Soll ein bestimmtes Subsystem beim Booten nicht gestartet werden, muss das entsprechende Subsystem in /etc/rc.tcpip auskommentiert werden:

#start /usr/sbin/inetd "$src_running"

Im Prinzip kann die Änderung mit einem Editor durchgeführt werden. Es gibt aber über das Kommando chrctcp einen viel eleganteren Weg. Das Kommando chrctcp kann die Datei /etc/rc.tcpip automatisiert editieren. Soll ein bestimmter Dienst beim nächsten Booten nicht mehr gestartet werden, kann chrctcp mit der Option „-d“ verwendet werden, um den Dienst auszukommentieren:

# chrctcp -d inetd
# grep /usr/sbin/inet /etc/rc.tcpip
#start /usr/sbin/inetd "$src_running"
#

Dies hat keinen Einfluß auf das aktuell laufende Subsystem. Möchte man das laufende Subsystem zusätzlich stoppen, kann man entweder zusätzlich das Kommando „stopsrc –s“ verwenden, oder, was deutlich einfacher ist, einfach die Option „-S“ von chrctcp zusätzlich verwenden:

# chrctcp -S -d inetd
0513-044 The /usr/sbin/inetd Subsystem was requested to stop.
#

Das Subsystem wird in /etc/rc.tcpip auskommentiert und zusätzlich wird das eventuell laufende Subsystem gestoppt.

Ähnlich kann man vorgehen, wenn man einen bisher ungenutzten Dienst aus /etc/rc.tcpip nutzen möchte. Um den entsprechenden Eintrag zu aktivieren, kann die Option „-a“ verwendet werden:

# grep /usr/sbin/inetd /etc/rc.tcpip
#start /usr/sbin/inetd "$src_running"
# chrctcp -a inetd
# grep /usr/sbin/inetd /etc/rc.tcpip
start /usr/sbin/inetd "$src_running"
#

Hinweis: Der Eintrag ‚#start /usr/sbin/inetd „$src_running“‚ muss schon in auskommentierter Form an der richtigen Stelle in der Datei stehen!

Soll nicht nur die Datei /etc/rc.tcpip angepasst werden, sondern der Dienst auch sofort gestartet werden, kann wieder die Option „-S“ zusätzlich verwendet werden:

# grep /usr/sbin/inetd /etc/rc.tcpip
#start /usr/sbin/inetd "$src_running"
# chrctcp -S -a inetd
0513-059 The inetd Subsystem has been started. Subsystem PID is 5636582.
# grep /usr/sbin/inetd /etc/rc.tcpip
start /usr/sbin/inetd "$src_running"
#

Im folgenden bleiben wir exemplarisch beim inetd als Beispiel. Das Beschriebene gilt aber in gleicher Weise für andere Subsysteme.

Dienste wie inetd, syslogd und andere besitzen häufig Optionen und Argumente, die beim Start angegeben werden können. Z.B. bietet inetd die folgenden Optionen und Argumente:

-d   Versenden von Debugging Informationen an syslogd

-6   Unterstützung von IPv6

file  Angabe einer Konfigurationsdatei die anstelle von /etc/inetd.conf verwendet werden soll.

Mit dem Kommando chrctcp und der Option „-s“ lassen sich die verwendeten Optionen und Argumente anzeigen:

# chrctcp -s inetd
#debug_mode:ipv6_mode:config_file
no:no:
#

Die Beispiel-Ausgabe zeigt das Debugging und IPv6 deaktiviert sind und keine alternative Konfigurationsdatei angegeben wurde.

Mit der Option „-c“ (change) kann man die Optionen und Argumente ändern. Attribute können mit der Option „-f“ angegeben werden. Als Beispiel aktivieren wir Debugging und erlauben IPv6:

# chrctcp -c inetd -f debug=yes -f ipv6=yes
# grep /usr/sbin/inetd /etc/rc.tcpip
start /usr/sbin/inetd "$src_running" " -d  -6 "
#

Ein Blick in /etc/rc.tcpip zeigt das der Start von inetd um die Optionen „-d“ (Debugging) und „-6“ (IPv6) ergänzt wurde! Geändert wurde aber wieder nur die Start-Datei /etc/rc.tcpip, ein eventuell schon laufender inetd bleibt von der Änderung unberührt:

# ps -ef|grep ine[t]d
    root  5636582  4587924   0 18:34:47      -  0:00 /usr/sbin/inetd
#

Wie beim Aktivieren und Deaktivieren von Subsystemen kann auch beim Ändern die Option „-S“ verwendet werden:

# chrctcp -S -c inetd -f debug=yes -f ipv6=yes
0513-044 The inetd Subsystem was requested to stop.
0513-059 The inetd Subsystem has been started. Subsystem PID is 5636584.
#

Der Dienst wird dann gestoppt und sofort wieder gestartet. Natürlich dann mit den geänderten Optionen und Argumenten:

# ps -ef|grep ine[t]d
    root  5636584  4587924   0 18:49:25      -  0:00 /usr/sbin/inetd -d -6
#

Die beim nächsten Booten verwendeten Optionen und Argumente lassen sich mit der Option „-s“ auflisten:

# chrctcp -s inetd
#debug_mode:ipv6_mode:config_file
yes:yes:
#

Etwas unglücklich ist die Tatsache, das die im Header angezeigten Bezeichnungen (debug_mode, ipv6_mode, config_file) nicht ganz mit den zu verwendenden Attributnamen übereinstimmen. Die korrekten unterstützten Attributnamen im Falle von inetd sind debug, ipv6 und file.

In einem der nächsten Beiträge werden wir die unterstützten Attribute für weitere Subsysteme einmal auflisten und tabellarisch zur Verfügung stellen.