BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

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

Befehl regelmässig ausführen und Ausgabe beobachten

Möchte man einen Befehl regelmässig ausführen und dessen Ausgabe beobachten, kann man dazu cmdwatch verwenden. Ist die Ausgabe des Befehles jedoch länger als das verwendete Terminal, kann vii benutzt werden, da sich damit durch die abgeschnittenen Zeilen scrollen lässt. Im FreeBSD Portsbaum findet man vii unter sysutils/vii:

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

Der auszuführende Befehl kann mit der -e Option angegeben werden. Der Befehl wird alle 10 Sekunden ausgeführt und dessen Ausgabe angezeigt.

# vii -e "ps wwaux"

Mit der -i Option kann die Anzahl Sekunden angegeben werden, nach welcher der Befehl ausgeführt werden soll:

# vii -e "ps wwaux" -i 2

Läuft vii, so kann durch Drücken der c Taste das Datum und die Zeit in der oberen rechten Ecke angezeigt werden. Durch Drücken der p Taste wird angezeigt, welche Zeilen der Ausgabe gerade dargestellt werden. Mit der j Taste wird die Ausgabe um eine Zeile nach unten, mit der k Taste eine Zeile nach oben verschoben:

# vii -e "ps wwaux" -i 2
root           2  0,0  0,0     0     8  ??  DL    7:40pm   0:00,43 [g_event]                   Sat Mar 28 22:03:35 2009
root           3  0,0  0,0     0     8  ??  DL    7:40pm   0:00,37 [g_up]                              Lines 6-37 of 86
root           4  0,0  0,0     0     8  ??  DL    7:40pm   0:00,32 [g_down]
root           5  0,0  0,0     0     8  ??  DL    7:40pm   0:00,00 [xpt_thrd]
root           6  0,0  0,0     0     8  ??  DL    7:40pm   0:00,00 [cbb0 event thread]
root           7  0,0  0,0     0     8  ??  IL    7:40pm   0:00,00 [fw0_probe]
root           8  0,0  0,0     0    16  ??  DL    7:40pm   0:00,00 [sctp_iterator]
root           9  0,0  0,0     0     8  ??  DL    7:40pm   0:00,00 [pagedaemon]
root          11  0,0  0,0     0   160  ??  WL    7:40pm   0:15,06 [intr]
root          12  0,0  0,0     0     8  ??  DL    7:40pm   0:00,22 [yarrow]
root          13  0,0  0,0     0     8  ??  DL    7:40pm   0:00,00 [usb0]
root          14  0,0  0,0     0     8  ??  DL    7:40pm   0:00,00 [usbtask-hc]
[...]

Mehr Informationen zu vii findet man in der Manpage vii(1).

 Permalink

C-Style Kommentare aus einer Textdatei entfernen

Möchte man aus einer Datei Kommentare im C-Style (/* */) entfernen, so kann dazu decomment verwendet werden. Im FreeBSD Portbaum findet man decomment unter sysutils/decomment:

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

Die Datei, welche die Kommentare enthält, kann an decomment übergeben werden. Die Datei wird ohne Kommentare auf der Standardausgabe ausgegeben:

# cat testdatei
Text 1
/* Kommentar 1 */
Text 2
/*
 * Kommentar 2
 */
Text 3
/*
   Kommentar 3
*/
# decomment testdatei
Text 1

Text 2

Text 3

Wird nach dem Dateinamen noch die r-Option angegeben, werden zu den Kommentaren auch noch alle Leerzeichen entfernt.

# decomment testdatei r
Text1Text2Text3
 Permalink

Paket eines installierten Ports erstellen

Mit Hilfe von bpkg kann von einem installierten Port ein Paket erstellt werden. Im FreeBSD Portbaum findet man bpkg unter ports-mgmt/bpkg:

# cd /usr/ports/ports-mgmt/bpkg && make install clean

Nun kann mit der -b Option der installierte Port gewählt werden, von welchem ein Paket unter /var/tmp/bpkg erstellt werden soll:

# bpkg -b rsync
Creating backup package(s) rsync-3.0.3 in /var/tmp/bpkg/
Done.
# ls /var/tmp/bpkg/
rsync-3.0.3.tbz

Mehr Informationen zu bpkg findet man in der Manpage bpkg(8).

Comments (2)  Permalink

.svn-Verzeichnis und dessen Inhalt verbergen

Arbeitet man zum Beispiel mit ls oder find in einem Verzeichnisbaum, welcher mit subversion ausgecheckt wurde, so wird neben den eigentlichen Daten auch der Inhalt der .svn-Verzeichnisse dargestellt:

# ls -R
Makefile        main.c          pathnames.h     pkg_updating.1

./.svn/prop-base:
Makefile.svn-base        main.c.svn-base          pathnames.h.svn-base     pkg_u
pdating.1.svn-base

./.svn/props:

./.svn/text-base:
Makefile.svn-base        main.c.svn-base          pathnames.h.svn-base     pkg_u
pdating.1.svn-base

./.svn/tmp:
prop-base/ props/     text-base/

./.svn/tmp/prop-base:

./.svn/tmp/props:

./.svn/tmp/text-base:
# find . -name "*updating*"
./updating
./updating/.svn/text-base/pkg_updating.1.svn-base
./updating/.svn/prop-base/pkg_updating.1.svn-base
./updating/pkg_updating.

Möchte man dies verhindern, kann hidesvn verwendet werden. Im FreeBSD Portbaum findet man hidesvn unter sysutils/hidesvn:

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

Jetzt wird vor dem eigentlichen Befehl hidesvn aufgerufen, wobei die .svn-Verzeichnisse nicht mehr berücksichtigt werden:

# hidesvn ls -R
Makefile        main.c          pathnames.h     pkg_updating.1
# hidesvn find . -name "*updating*"
./updating
./updating/pkg_updating.1

Mehr Informationen zu hidesvn findet man in der Manpage hidesvn(1).

Comments (1)  Permalink

BIND-Konfiguration auf Fehler überprüfen

Möchte man seine Änderungen an der BIND-Konfiguration oder den Zonendateien auf Fehler überprüfen, kann dazu nslint verwendet werden. Im FreeBSD Portbaum findet man nslint unter dns/nslint:

# cd /usr/ports/dns/nslint && make install clean

Wird nslint aufgerufen, wird standardmässig die Konfiguration unter /etc/namedb/named.conf auf Fehler überprüft. Möchte man eine andere Datei überprüfen, so kann mit der -c Option der Pfad zur Datei angegeben werden:

# nslint
nslint: name referenced without other records: mail6.chruetertee.ch.
nslint: name referenced without other records: mail5.chruetertee.ch.
nslint: missing "ptr": www.chruetertee.ch. -> 217.150.245.53
nslint: 217.150.245.53 in use by chruetertee.ch. and www.chruetertee.ch.

Sind alle Fehler korrigiert, wird nslint keine Meldung ausgeben.

# nslint

Mehr Informationen zu nslint findet man in der Manpage nslint(8).

Comments (2)  Permalink

Inhalt einer .doc-Datei auf der Kommandozeile ausgeben

Mit Hilfe von catdoc lässt sich eine .doc-Datei auf der Kommandozeile anzeigen, wie entsprechend normale Textdateien mit cat(1) angezeigt werden können. Im FreeBSD Portbaum findet man catdoc unter textproc/catdoc:

# cd /usr/ports/textproc/catdoc && make install clean

Nun kann die .doc-Datei mit catdoc angezeigt werden. Zeilen werden dabei automatisch nach 72 Zeichen umgebrochen:

# catdoc <Datei>.doc
Das ist ein Titel


Das ist ein Text der in einer .doc-Datei gespeichert wurde und nun auf
der Kommandozeile angezeigt wird.

Möchte man den automatischen Zeilenumbruch nach 72 Zeichen verhindern, so kann die -w Option verwendet werden:

# catdoc -w <Datei>.doc
Das ist ein Titel


Das ist ein Text der in einer .doc-Datei gespeichert wurde und nun auf der Kommandozeile angezeigt wird.

Mehr Informationen zu catdoc findet man in der Manpage catdoc(1).

Comments (3)  Permalink

Pastebin Service aus der Kommandozeile nutzen

Mit Hilfe von Pastebin-Services können auf einfache Art und Weise Fehlermeldungen oder Codefragmente ausgetauscht werden. Möchte man so einen Service aus der Kommandozeile nutzen, kann man dazu pastebinit benutzen, welches man unter misc/pastebinit im FreeBSD Portbaum findet:

# cd /usr/ports/misc/pastebinit && make install clean

Möchte man nun eine neue Meldung erstellen, kann pastebinit mit den entsprechenden Argumenten aufgerufen werden. Mit der -b Option kann ein Pastebin-Service angegeben werden, welcher verwendet werden soll. Mit der -i Option kann eine Datei angegeben werden, deren Inhalt hochgeladen werden soll. Ohne die -i Option wird die Eingabe der Standardeingabe hochgeladen. Ausgegeben wird die URL, unter welcher der hochgeladene Text erreichbar ist:

# pastebinit -i /tmp/pastebin.msg -b http://chruetertee.pastebin.com
http://chruetertee.pastebin.com/f44c5cb5d

Ausserdem kann, falls gewünscht, mit der -a Option ein alternativer Benutzername angegeben werden. Werden Codefragmente hochgeladen, kann mit der -f Option die Sprache angegeben werden, wodurch der Code entsprechend farbig dargestellt wird. Ruft man pastebinit ohne Optionen auf, werden alle verfügbaren Optionen angezeigt.

Comments (1)  Permalink

Apache Logdateien auf der Kommandozeile auswerten

Mit Hilfe von snowlog können Zugriffslogdateien des Apache Webservers auf der Kommandozeile ausgewertet werden. Im FreeBSD Portbaum findet man snowlog unter sysutils/snowlog:

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

Damit eine Logdatei ausgewertet werden kann, muss zuerst in der httpd.conf ein neues Logformat definiert und eine zusätzliche Logdatei konfiguriert werden. Für eine Standard-Apache 2 Konfiguration fügt man folgende zwei Zeilen zum Beispiel in eine vhost Konfiguration in /usr/local/etc/apache2/httpd.conf ein:

LogFormat "%a\t%l\t%u\t%{%s}t\t%r\t%>s\t%X\t%{Content-Type}o\t%b\t%{Referer}i\t%{User-Agent}i\t%V\t%{LogHint}e" parsable
CustomLog /var/log/httpd-access-parsable-vhost.log  parsable

Danach muss die Konfiguration neu eingelesen werden:

# /usr/local/etc/rc.d/apache2 configtest
Performing sanity check on apache2 configuration:
Syntax OK
# /usr/local/etc/rc.d/apache2 graceful

Mit der -f Option kann snowlog die Logdatei übergeben werden. Die in der Logdatei enthaltenen Anfragen werden nun nach IP-Adresse sortiert. Mit der Pfeil nach unten und der Pfeil nach oben Taste kann durch die einzelnen Anfragen navigiert werden. Dabei werden im unteren Teil des Terminals verschiedene Informationen zur Anfrage angezeigt:

# snowlog -f /var/log/httpd-access-parsable-vhost.log
* Snowlog 1.1.1
 xx.xx.102.187  -                                                                                                                      
   /                                                                                                                                   304
   /files/images/blog/kde4.png                                                                                                         200
   /                                                                                                                                   200
   /links/                                                                                                                             200
   /themes/2-cols/buttons/rss.png                                                                                                      200
   /themes/chrueterng/buttons/rss.png                                                                                                  200
   /files/images/chrueterteeBSD_hellgruen.png                                                                                          200
   /links/maintainer/                                                                                                                  200
   /freebsd/                                                                                                                           200
 xx.xx.144.157   http://www.google.com/reader/view/
   /files/images/blog/kde4_thumb.png                                                                                                   200
 xx.xx.231.88   Google: freebsd dbus_enable xorg 2009
   /blog/archive/2009/01/25/tastaturlayout-nach-aktualisieren-des-xorg-servers-auf-1-5-3-konfiguieren.html                             200
   /themes/chrueterng/css/mobile.css                                                                                                   200
   /themes/chrueterng/css/main_chrueter.css                                                                                            200
   /favicon.ico                                                                                                                        200
   //themes/chrueterng/buttons/freebsd.png                                                                                             200
   //themes/chrueterng/buttons/chruetertee.png                                                                                         200
   //themes/chrueterng/buttons/rss.png                                                                                                 200
   /themes/chrueterng/buttons/comments.png                                                                                             200
   /files/images/logo.jpg                                                                                                              200
   //themes/chrueterng/buttons/xhtml10.png                                                                                             200
   /dynimages/gravatar/5a3fde99fe127a44bec6d05cb9190975?gravatar_id=5edbb08fd0cd2ea894f67f801725b4c6&border=aaaaaa&rating=X&size=40    200
   /dynimages/gravatar/2b2e73a0b373fd724b7d9d726b4f052f?gravatar_id=a66a582a1fcacd1032b43ad670088e24&border=aaaaaa&rating=X&size=40    200
   /blog/freebsd/                                                                                                                      200
   /files/images/blog/kde4_thumb.png                                                                                                   200
   /blog/archive/2009/01/25/tastaturlayout-nach-aktualisieren-des-xorg-servers-auf-1-5-3-konfiguieren.html                             304
----------------------------------------------------------------------------------------------------------------------------------------------
 Line 423/646
 GET     /blog/archive/2009/01/25/tastaturlayout-nach-aktualisieren-des-xorg-servers-auf-1-5-3-konfiguieren.html                       200
 Sat Feb  7 16:20:09 2009                                                                                                  text/html, 5 KB
 Firefox/3.0.6 (Windows)
 www.chruetertee.ch
 http://www.google.de/search?hl=de&client=firefox-a&rls=org.mozilla%3Aen-GB%3Aofficial&hs=gs9&q=freebsd+dbus_enable+xorg+2009&btnG=Suche&meta=
----------------------------------------------------------------------------------------------------------------------------------------------
 557 requests from 89 hosts (11.16 MB). (H)elp.   

In der Datei ~/.snowlog/filters können verschiedene Filter definiert werden. Der Name des Filters wird dabei in eckigen Klammern angegeben. Folgendes Beispiel definiert einen Filter, der alle Anfragen bis auf Anfragen von XML-Dateien anzeigt und einen weiteren Filter, der alle Anfragen anzeigt, welche den HTTP-Statuscode 404 hatten. Drückt man nun in snowlog die Taste f, werden alle Filter angezeigt. Durch Auswählen der entsprechenden Filternummer wird der Filter angewendet:

[without RSS feeds]
request     !xml

[404]
httpstatus  =404

Befinden sich zum Beispiel Refferer-Spamer unter den Anfragen, navigiert man mit den Pfeiltasten zu der entsprechenden Anfrage und drückt die s-Taste. Dadurch werden alle Anfragen der Absender-IP-Adresse und des Refferers nicht mehr angezeigt. Durch das Drücken der q Taste verlässt man snowlog wieder. Mehr Informationen zu snowlog und den Filtermöglichkeiten findet man in der Manpage snowlog(1).

 Permalink
Prev Next141-150/325