Skripte

In meiner Zeit als Systemadministrator sind ein paar für mich sehr nützliche Skripte entstanden, die ich Euch nicht vorenthalten möchte. Da in meinen Skripten auch einzelne Elemente und Gedanken anderer Autoren eingeflossen sind, stehen alle Skripte unter GPL ( englische Version , deutsche Version).

cvs2hg.sh - Vereinfacht die Umwandung von CVS-Repository in Mercurial-Repositories

cvs2hg.sh wandelt eine beliebige Anzahl von CVS-Modulen oder ein gesamtes CVS-Repository in Mercurial-Repositories um. Dabei wird jedes Modul innerhalb eines CVS-Repositories in ein eigenes Mercurial-Repository überführt. Die Standard-CVS-Verzeichnisse wie zum Beispiel CVSROOT oder CVS werden ignoriert.

Anwendungsbeispiel:

  1. Temporäres Verzeichnis anlegen

    # mkdir convert && cd convert
    
  2. Gesamte CVS-Repository oder auch einzelne Module auschecken

    Syntax:

    cvs -d:pserver:<Benutzer>@<CVS-Server>:<absoluter Pfad zum Repository>
    

    Beispiel:

    # cvs -d:pserver:carsten@localhost:/home/cvs/projects/repository
    # cvs checkout .
    
  3. Datei mit der Zuordnung von CVS-Benutzernamen zu Mercurial-Benutzernamen anlegen

    Beispiel:

    # cat authors
    carsten=Carsten Grohmann
    
  4. Alle Module in eigene Mercurial-Repositories konvertieren

    # cvs2hg.sh *
    
Dateiname   cvs2hg.sh  [Signatur]
Größe   1 KByte
Version   0.1
Sprache   Shell (Bash)

getweblogfiles.pl - Ein Perlskript zur automatischen Auswertung von Logdateien

Holt und verarbeitet Logdateien des Webservers mit AWStats.

Da alles über eine kommentierte Konfiguratiosndatei gesteuert ist, entfällt sich regelmäßig wiederholende Tiparbeit.

Die Ausgaben des Skripts werden auf Wunsch per Mail versandt. Die Konfiguration erfolgt über eine kommentierte Datei und sollte sich auf für andere Programme einfach nutzen lassen.

Für die Version 2.2 wurde das Skript intern überarbeitet und verbessert. Auch wurden einige Fehler behoben. Zum Beispiel ist nun Passive FTP problemlos aktivierbar / deaktivierbar ist, was in den letzten Versionen nicht voll implementiert war.

Die Version 2.3 bringt eine eigene Implementierung von cat() mit benötigt daher das Modul File::Cat, daß meist zusätzlich installiert werden mußte, nicht mehr.

Details aller Änderungen stehen wie immer im ChangeLog.

Dateiname   getweblogfiles.pl.bz2  [Signatur]  [ChangeLog]
Größe   15 KByte
Version   2.3
Dokumentation   HTML
Sprache   Perl

mkfloppyimg.sh - Vergößert das Abbild einer Diskette

Vergrößert das bootfähige Abbild einer Diskette auf eine frei wählbare Größe. Dabei bleibt der Inhalt erhalten und das neu erzeugte Abbild ist ebenfalls bootfähig.

Dateiname   mkfloppyimg.sh  [Signatur]  [ChangeLog]
Größe   3 KByte
Version   Revision 1.3
Sprache   Shell

sortCLF.pl - Sortiert eine Logdatei im CLF-Format

Sortiert eine Logdatei nach dem Datum der Einträge. Dabei können die Daten entweder von der Standardeingabe oder aus Dateien gelesen werden. Die Ausgabe erfolgt auf die Standardausgabe.

Dateiname   sortCLF.pl.bz2  [Signatur]
Größe   652 Byte
Version   0.1
Sprache   Perl

sort_passwd.pl - Sortiert etc/passwd und /etc/shadow

sortpasswd.pl sortiert die beiden Dateien /etc/passwd und /etc/shadow nach der Benutzer-ID (uid). Desweiteren wird die Stimmigkeit der beiden Dateien überprüft und nicht korrespondierende Einträge gemeldet.

Dateiname   sort_passwd.pl.bz2  [Signatur]
Größe   1 KByte
Version   0.1
Sprache   Perl

supernetting.py - Faßt Subnet-Adressen zusammen

supernetting.py faßt Subnet-Adressen zusammen. Dabei werden spezifischere Adressen aus der Liste entfernt, wenn sie schon in einer allgemeineren Subnet-Adresse enthalten sind.

Weiterhin werden zwei aufeinander folgende Subnet-Adressen unter bestimmten Umständen zu einer Allgemeineren zusammengefaßt.

Man kann dieses Skript nutzen, um kleinere Routing-Tabellen oder kompaktere Firewall-Regelsätze zu erhalten.

Dateiname   supernetting.py  [Signatur]  [ChangeLog]
Größe   28 KByte
Version   1.0
Dokumentation   HTML
Sprache   Python

weekly.py - Verschickt die Tagebucheinträge einer Woche per Email

Mit weekly.py lassen sich die Einträge eines persönlichen Tagebuchs oder einer Logdatei wochenweise per Mail versenden. Dies kann sehr nützlich sein, um wöchentliche Arbeitsberichte zu versenden. Die lästige Suche nach den richtigen Einträgen vergangener Wochen übernimmt das Skript.

Die passenden Logeinträge lassen sich zum Beispiel gut mit dem Shell-Skript today.sh von Axel Wachtler erstellen.

Dateiname   weekly.py  [Signatur]  [ChangeLog]
Größe   20 KByte
Version   0.5
Dokumentation   HTML
Sprache   Python

writeCD - Ein Shellskript um CDs komfortabel zu brennen

Ein Bash-Skript zum Erzeugen von Multisession-CDs mit 'mkisofs`, cdrecord und sudo (falls die Rechte fehlen). Es kann auch CDRWs handhaben. Als Einschränkung gilt nur, daß der Benutzer ohne root-Rechte und ohne Lese- und Schreibrechte auf die SCSI-Devices nur die erste Session mit sudo erstellen kann. Mit den entsprechenden Rechten funktioniert es problemlos. Mit sudo natürlich auch.

Das ChangeLog bietet eine detaillierte Liste der Änderungen. Die beiden wichtigsten Änderungen sind:

  • Automatische Erkennung von Brennern hinzugefügt
  • Option zum Schreiben eines ISO-Abbildes hinzugefügt
Dateiname   writeCD  [Signatur]  [ChangeLog]
Größe   36 KByte
Version   0.7g
Sprache   Shell (Bash)