BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Dateien mit unbekannten UIDs/GIDs suchen

Möchte man wöchentlich nach Dateien suchen welche unbekannte User-IDs oder Group-IDs besitzen, kann folgende Zeile in der /etc/periodic.conf eingefügt werden:

weekly_noid_enable="YES"

Danach werden die entsprechenden Dateien im wöchentlichen Statusmail aufgeführt, können danach überprüft werden:

[...]

Check for files with an unknown user or group:
  /tmp/smstools
  /tmp/smstools/doc
  /usr/local/tinderbox/8.0-FreeBSD/var/mail/messagebus
  /usr/local/tinderbox/8.0-FreeBSD/var/mail/polkit
  /usr/local/tinderbox/8.0-FreeBSD/var/mail/avahi
  /usr/local/tinderbox/8.0-FreeBSD/var/mail/haldaemon
  /usr/local/tinderbox/8.0-FreeBSD/var/lib/hal

[...]
 Permalink

NTP-Status in den täglichen Servermails anzeigen

Synchronisiert man die Zeit eines FreeBSD -Servers mit NTP, so kann man den NTP Status in den täglichen Servermails anzeigen lassen. Dazu kann folgender Eintrag in der /etc/periodic.conf gemacht werden:

daily_status_ntpd_enable="YES"

Danach findet man die entsprechende Ausgabe in den täglichen Statusmails:

[...]

NTP status:
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*mein.ntp.ch          1.1.3.220    2 u  254  512  377   1.666   -1.197   0.469

[...]
 Permalink

Informationen zu einer FreeBSD-Installation auslesen

Mit Hilfe von sysinfo können Informationen zu einem FreeBSD-System ausgelesen werden. Im FreeBSD Portbaum findet man sysinfo unter sysutils/sysinfo:

# cd /usr/ports/sysutils/sysinfo && make install clean

Führt man sysinfo mit der -a Option aus, werden verschiedene Informationen zum Rechner und der FreeBSD-Installation angezeigt:

# sysinfo -a

Sollen zusätzliche Informationen angezeigt werden, kann die Option -v 1 verwendet werden:

# sysinfo -a -v 1

Soll die Ausgabe nicht farbig dargestellt werden, kann -c verwendet werden. So lässt sich die Ausgabe auch ohne Probleme in eine Textdatei umleiten:

# sysinfo -a -c -v 1 > /tmp/sysinfo

Das Verhalten von sysinfo lässt sich auch in der Datei /usr/local/etc/sysinfo.conf konfigurieren. Eine Beispielausgabe von sysinfo findet man hier.

 Permalink

Verfügbarkeit eines TCP-Ports testen

Möchte man zum Beispiel in einem Shell-Skript die Verfügbarkeit eines TCP-Ports prüfen, so kann dazu tcping verwendet werden, welches man im FreeBSD Portbaum unter net/tcping findet:

# cd /usr/ports/net/tcping && make install clean

Nun können die IP-Adresse und der TCP-Port angegeben werden, zu welchen eine Verbindung aufgebaut werden soll. Kann die Verbindung erfolgreich hergestellt werden, wird der Rückgabewert 0 zurückgegeben:

# tcping 217.150.245.53 80
217.150.245.53 port 80 open.
# echo $?
0

Wird die Verbindung zurückgewiesen, wird der Rückgabewert 1 zurückgegeben:

# tcping 127.0.0.1 81
127.0.0.1 port 81 closed.
# echo $?
1

Wird der Verbindungsversuch nicht zurückgewiesen, jedoch die Pakete von z.B. einem Paketfilter verworfen, so kann die Verbindung nicht aufgebaut werden. Bei solch einer Zeitüberschreitung des Verbindungsversuchs wird der Rückgabewert 2 zurückgegeben. Mit der -t Option kann die Anzahl Sekunden angegeben werden, ab wann eine Zeitüberschreitung angegeben wird:

# tcping -t 2 217.150.245.53 81
217.150.245.53 port 81 user timeout.
# echo $?
2
Comments (1)  Permalink

Verschlüsselte Backups erzeugen

Mit Hilfe von duplicity lassen sich durch GnuPG verschlüsselte inkrementelle Backups erzeugen, welche sich nach dem Erzeugen auf einen anderen Rechner kopieren lassen. Im FreeBSD Portbaum findet man duplicity unter sysutils/duplicity:

# cd /usr/ports/sysutils/duplicity && make install clean

Im folgenden Beispiel wird /home in den Ordner backup gesichert. Ist noch kein Backup in diesem Ordner vorhanden, wird ein vollständiges Backup erstellt. Als erstes muss ein Passwort gewählt werden, welches für die Verschlüsselung des Backups verwendet wird:

# duplicity /home/ file://backup
Last full backup date: none
GnuPG passphrase:
No signatures found, switching to full backup.
Retype passphrase to confirm:
--------------[ Backup Statistics ]--------------
StartTime 1240000061.53 (Fri Apr 17 22:27:41 2009)
EndTime 1240000065.80 (Fri Apr 17 22:27:45 2009)
ElapsedTime 4.27 (4.27 seconds)
SourceFiles 0
SourceFileSize 23232967 (22.2 MB)
NewFiles 0
NewFileSize 0 (0 bytes)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 0
RawDeltaSize 23158201 (22.1 MB)
TotalDestinationSizeChange 13929125 (13.3 MB)
Errors 0

Wird das Backup nochmals ausgeführt, werden nur noch die Änderungen gesichert:

# duplicity /home/ file://backup
Last full backup date: Fri Apr 17 22:27:37 2009
GnuPG passphrase:
--------------[ Backup Statistics ]--------------
StartTime 1240000195.98 (Fri Apr 17 22:29:55 2009)
EndTime 1240000200.50 (Fri Apr 17 22:30:00 2009)
ElapsedTime 4.53 (4.53 seconds)
SourceFiles 884
SourceFileSize 28935728 (27.6 MB)
NewFiles 0
NewFileSize 0 (0 bytes)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 0
RawDeltaSize 4983670 (4.75 MB)
TotalDestinationSizeChange 1738528 (1.66 MB)
Errors 0

Möchte man das Backup gleich per scp auf einen anderen Rechner kopieren, so kann dies wie folgt angegeben werden:

# duplicity /home scp://<Benutzer>@<Rechner>/<Verzeichnis>

Möchte man überprüfen, welche Backups vorhanden sind, kann dazu die collection-status Option von duplicity verwendet werden:

# duplicity collection-status file://backup
Last full backup date: Fri Apr 17 22:27:37 2009
Collection Status
-----------------
Connecting with backend: LocalBackend
Archive dir: None
 
Found 0 backup chains without signatures.
 
Found a complete backup chain with matching signature chain:
-------------------------
Chain start time: Fri Apr 17 22:27:37 2009
Chain end time: Fri Apr 17 22:29:53 2009
Number of contained backup sets: 2
Total number of contained volumes: 2
 Type of backup set:                            Time:      Num volumes:
                Full         Fri Apr 17 22:27:37 2009                 1
         Incremental         Fri Apr 17 22:29:53 2009                 1
-------------------------
No orphaned or incomplete backup sets found.

Mit list-current-files werden alle Dateien, welche im Backup vorhanden sind, aufgelistet:

#  duplicity list-current-files file://backup
Last full backup date: Fri Apr 17 22:27:37 2009
GnuPG passphrase:
Fri Apr 17 22:29:38 2009 .
[..]

Durch verify kann der Inhalt des Backups mir dem Quellordner verglichen werden:

# duplicity verify file://backup /home
Last full backup date: Fri Apr 17 22:27:37 2009
GnuPG passphrase:
Difference found: File . has mtime Fri Apr 17 22:35:34 2009, expected Fri Apr 17 22:29:38 2009
Error accessing possibly locked file /home/test/.qt/.qt_plugins_3.3rc.lock
Difference found: File test is missing
Difference found: File test/bla is missing
[...]

Mit der Zeit können ältere Backups entfernt werden, dazu kann ein Datum mit remove-older-than angegeben werden und alle ältere Backups werden gelöscht:

# duplicity remove-older-than 2009-04-18 file://backup

Soll der Inhalt des Backups wiederhergestellt werden, so kann dies wie folgt gemacht werden:

# duplicity file://backup /tmp/restore
Last full backup date: Fri Apr 17 22:27:37 2009
GnuPG passphrase: 
[...]

Mehr Informationen und alle Optionen von duplicity findet man in der Manpage duplicity(1).

Comments (1)  Permalink

Leerzeichen in Tablulatoren umwandeln

Mit Hilfe von unexpand lassen sich mehrere Leerzeichen in einen Tablulator umwandeln, mit expand werden Tabulatoren in Leerzeichen zurückgewandelt. Im folgenden Beispiel wird eine Textdatei verwendet die mehrere Spalten enthält, welche jeweils durch acht Leerzeichen voneinander getrennt werden:

# cat -t /tmp/test
        1
        1        2
        1        2        3

Durch die Verwendung von unexpand werden nun die acht Leerzeichen am Anfang jeder Zeile durch einen Tabulator ersetzt:

# unexpand /tmp/test | cat -t
^I1
^I1        2
^I1        2        3

Verwendet man die -a Option, werden alle möglichen Leerzeichen-Gruppen in Tabulatoren umgewandelt:

# unexpand -a /tmp/test | cat -t
^I1
^I1^I2
^I1^I2^I3

Mit der -t Optionen werden die Anzahl Leerzeichen angegeben, die zu einem Tabulator zusammengefasst werden.

# unexpand -a -t 4 /tmp/test | cat -t
^I^I1
^I^I1^I^I2
^I^I1^I^I2^I^I3

Mit Hilfe von expand werden Tabulatoren in je acht Leerzeichen zurückgewandelt.

# unexpand -a /tmp/test | expand | cat -t 
        1
        1        2
        1        2        3 

Im FreeBSD und OpenBSD Basissystem ist expand/unexpand bereits vorhanden. Mehr Informationen findet man in der Manpage expand(1).

 Permalink

tail -f auf mehreren Dateien gleichzeitig anwenden

Möchte man auf verschiedenen Dateien gleichzeitig ein tail -f anwenden, so kann man dazu xtail verwenden. Im FreeBSD Portbaum findet man xtail unter misc/xtail:

# cd /usr/ports/misc/xtail && make install

Im folgenden Beispiel werden alle Dateien unter /var/log beobachtet. Drückt man Ctrl + c, werden die Dateien angezeigt, welche als letztes geändert wurden. Um xtail zu beenden drückt man Ctrl + \:

# xtail /var/log/*

*** /var/log/debug.log ***
Apr  4 21:06:04 test last message repeated 2 times
Apr  4 21:06:19 test xterm: NSSWITCH(_nsdispatch): nis, group_compat, endgrent, not found, and no fallback provided

*** /var/log/wtmp ***
pts/2beat:0.0«¯×I
*** /var/log/debug.log ***
Apr  4 21:06:24 test -sh: NSSWITCH(_nsdispatch): nis, passwd_compat, endpwent, not found, and no fallback provided

*** /var/log/maillog ***
Apr  4 21:06:31 test sSMTP[3463]: Creating SSL connection to host
Apr  4 21:06:31 test sSMTP[3463]: SSL connection using DHE-DSS-AES256-SHA
Apr  4 21:06:31 test sSMTP[3463]: Sent mail for beat AT chruetertee.ch (221 2.0.0 mailserver.chruetertee.ch closing connection)

*** /var/log/messages ***
Apr  4 21:06:39 test beat: test
^C
*** recently changed files ***
   1   4-Apr-09 21:06:39  /var/log/messages
   2   4-Apr-09 21:06:31  /var/log/maillog
   3   4-Apr-09 21:06:25  /var/log/debug.log
   4   4-Apr-09 21:06:19  /var/log/wtmp
   5   4-Apr-09 21:05:28  /var/log/cron
   6   4-Apr-09 21:00:00  /var/log/sendmail.st
   7   4-Apr-09 20:40:02  /var/log/auth.log
   8   4-Apr-09 20:30:10  /var/log/ConsoleKit/history
currently watching:  66 files  2 dirs  0 unknown entries
^\

Mehr Informationen zu xtail findet man in der Manpage xtail(1). Sollten mehr Einsatzmöglichkeiten benötigt werden, kann multitail verwendet werden.

 Permalink
1-7/7