Eintr├Ąge zu Tag: Tools

Markdown-Files unter Linux im Terminal darstellen

Erstellt: 13.03.2018 09:16

Des Oefteren liegen bei Sourcecode Markdown-Files bei, zum Beispiel für das traditionelle README (readme.md). Da diese Dateien unformatiert nicht unbedingt lesefreundlich sind hilft ein Converter weiter. pandoc ist ein solcher Converter welcher ohne weitere Optionen HTML ausgibt. Dies kann nun an einen Text-Browser übergeben werden welcher aus stdin Daten entgegen nehmen kann.
Es eignen sich dafür unter anderem w3m und lynx.

$ pandoc readme.md | lynx -stdin

Das ganze kann jetzt noch als Funktion in der ~/.bashrc hinterlegt werden:

function readmd { pandoc "$1" | lynx -stdin; }
export -f readmd

Dies ermöglicht einen schnellen Zugriff:

$ readmd readme.md



Tagged: Bash HTML/CSS Linux Tools

Kommentar verfassen | Nach oben

Failed to get lockfile: /var/lock/logcheck/logcheck.lock

Erstellt: 29.03.2012 16:23

Nach der Neuinstallation von Logcheck in Debian Lenny mit aptitude kam folgende Fehlermeldung per Email:

Subject: Logcheck: <hostname> <date> 2012-03-29 16:25 exiting due to errors

Warning: If you are seeing this message, your log files may not have been
checked!

Details:
Failed to get lockfile: /var/lock/logcheck/logcheck.lock


Also verify that the logcheck user can read all files referenced in
/etc/logcheck/logcheck.logfiles!

declare -x HOME="/var/lib/logcheck"
declare -x LANG="de_CH.UTF-8"
declare -x LOGNAME="logcheck"
declare -x MAIL="/var/mail/logcheck"
declare -x OLDPWD
declare -x PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="3"
declare -x TERM="xterm"
declare -x USER="logcheck"

Scheinbar konnte Logcheck das Lock-File, wegen unpassender Dateirechte nach der Neuinstallation, nichtmehr anlegen im Lock-Verzeichnis.

Wieso das Verzeichnis falsch angelegt wurde, weiss ich nicht. (Gibt bestimmt einen Bug-Report.)

# ls -lha  /var/lock/
[...]
drwxr-xr-x  2 root     root 4.0K 11. Feb 2009  logcheck

Die Lösung war simpel:

# chown logcheck:logcheck /var/lock/logcheck

Nun sieht das ganze wie folgt aus:

# ls -lha  /var/lock
[...]
drwxr-xr-x  2 logcheck logcheck 4.0K 11. Feb 2009  logcheck

Ein kleiner Test zeigt:

# su -s /bin/bash -c "/usr/sbin/logcheck" logcheck

...im darauf versendeten Email:

Subject: DenyHosts Report

Es funktioniert!



Tagged: Debian Lenny Linux Tools

Kommentar verfassen | Nach oben

SMTP mit STARTTLS einfach und schnell testen

Erstellt: 26.02.2012 10:53

Sysadmins gehören wohl zu einer eher (Tipp-)faulen Berufsgattung. So ist es zwar möglich SMTP mit telnet zu überprüfen, aber spätestens nach dem 20. Test hat man davon die Nase voll.

Linux wäre nicht Linux, wenn es nicht für jede Tätigkeit kleine Helfer gäbe, die sich auf eine Aufgabe spezialisiert haben.

Das kleine Tool was ich in diesem Fall meine ist "swaks", die Entwickler selbst dazu: "swaks - Swiss Army Knife SMTP, the all-purpose smtp transaction tester". Es befindet sich im Debian-Repository unter "swaks".

Es lassen sich beliebige Optionen einstellen, als Ausgabe bekommt man das "Gespräch" mit dem Server und bei Erfolg wird eine Testmail verschickt.

Aber nun zum kleinen Beispiel, wie man eine SMTP-Verbindung mit STARTTLS testet:

$ swaks -s mailserver.domain.tld -p 25 –ehlo ich.domain.tld -au empfaenger@domain.tld -t sender@domain2.tld -f empfaenger@domain.tld -tls
Password: ToLlEsPaSsWoRt
=== Trying mailserver.domain.tld:25...
=== Connected to mailserver.domain.tld.
<-  220 mailserver.domain.tld ESMTP Postfix (Debian/GNU)
 -> EHLO ich.domain.tld
<-  250-mailserver.domain.tld
<-  250-PIPELINING
<-  250-SIZE 10240000
<-  250-VRFY
<-  250-ETRN
<-  250-STARTTLS
<-  250-AUTH PLAIN
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250 DSN
 -> STARTTLS
<-  220 2.0.0 Ready to start TLS
=== TLS started w/ cipher DHE-RSA-AES256-SHA
 ~> EHLO ich.domain.tld
<~  250-mailserver.domain.tld
<~  250-PIPELINING
<~  250-SIZE 10240000
<~  250-VRFY
<~  250-ETRN
<~  250-AUTH PLAIN
<~  250-ENHANCEDSTATUSCODES
<~  250-8BITMIME
<~  250 DSN
 ~> AUTH PLAIN BGXF[...]meWlwMg==
<~  235 2.7.0 Authentication successful
 ~> MAIL FROM:<empfaenger@domain.tld>
<~  250 2.1.0 Ok
 ~> RCPT TO:<sender@domain2.tld>
<~  250 2.1.5 Ok
 ~> DATA
<~  354 End data with <CR><LF>.<CR><LF>
 ~> Date: Sun, 26 Feb 2012 10:29:22 +0100
 ~> To: sender@domain2.tld
 ~> From: empfaenger@domain.tld
 ~> Subject: test Sun, 26 Feb 2012 10:29:22 +0100
 ~> X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
 ~>
 ~> This is a test mailing
 ~>
 ~> .
<~  250 2.0.0 Ok: queued as 107C6DF27E
 ~> QUIT
<~  221 2.0.0 Bye
=== Connection closed with remote host.

Ich denke das Beispiel ist weitesgehend selbsterklärend. Es wird eine Verbindung von "ich.domain.tld" nach "mailserver.domain.tld" auf Port 25 aufgebaut. Der Empfänger der Email ist "empfaenger@domain.tld" der Absender "sender@domain2.tld", "-tls" verlangt das STARTTLS. Mit dem Parameter "-ap" könnte man das Passwort noch vorrangig angeben.

Kurz darauf ist das Email schon im zu testenden Postfach,.. sofern es natürlich geklappt hat. ;)

Viele weitere nützliche Informationen zu diesem Werkzeug wie immer in der man-Page!



Tagged: Bash Netzwerk Postfix SMTP Tools

Kommentar verfassen | Nach oben

Zwei csv-Files zusammenf├╝hren

Erstellt: 30.01.2012 21:58

Will man zwei Tabellen miteinander verbinden ist dies zum Beispiel unter MySQL mit "join" kein Problem.

Hat man zwei CSV-Files ist dies fast genauso einfach, wenn nicht sogar ein wenig leichter!
Dazu gibt es den Befehl "join" aus den GNU-Utils.

Hier ein einfaches und kleines Beispiel. Vorhanden sind zwei Dateien, die eine enthält Orchideen-Genus, die andere Orchideen-Species:

Die 1. Spalte enthält die ID, die 2. Spalte den Genus.

$ cat genus.csv
1;"Orchis"
2;"Epipactis"
3;"Gomphichis"

Die 1. Spalte enthält die ID, 2. Spalte die ID des Genus, 3. Spalte die Species

$ cat species.csv
1;1;"militaris"
2;1;"galilaea"
3;3;"traceyae"
4;3;"macbridei"
5;2;"helleborine"
6;3;"goodyeroides"
7;3;"foliosa"
8;3;"caucana"
9;2;"latifolia"
10;1;"stevenii"

Wichtig für "join" ist, dass die Spalten auf welche die Dateien zusammengesetzt werden sollen sortiert sind, ansonsten gibt es eine Fehlermeldung wie "join: Datei 2 ist nicht sortiert". Deshalb muss die Datei "species.csv" nun zuerst noch nach der 2. Spalte sortiert werden. Um das Beispiel zu vervollständigen wird die erste Datei auch gleich sortiert:

$ join -t";" -1 1 -2 2 <(sort genus.csv -t";" -n -k1 )   <(sort species.csv -t";" -n -k2)
1;"Orchis";10;"stevenii"
1;"Orchis";1;"militaris"
1;"Orchis";2;"galilaea"
2;"Epipactis";5;"helleborine"
2;"Epipactis";9;"latifolia"
3;"Gomphichis";3;"traceyae"
3;"Gomphichis";4;"macbridei"
3;"Gomphichis";6;"goodyeroides"
3;"Gomphichis";7;"foliosa"
3;"Gomphichis";8;"caucana"

Join:
-t";" gibt das Semilikon als Delemiterzeichen an.
-1 1 bedeutet, dass von der ersten Datei die erste Spalte benutzt wird.
-2 2 bedeutet, dass von der zweiten Datei die zweite Spalte benutzt wird.

Sort:
-t"; gibt das Semilikon als wiederum das Delemiterzeichen an.
-n steht für nummerische Sortierung.
-kN sortiert nach der Spalte N.

Es ist auch möglich einzelne Spalten auszuwählen:

$ join -t";" -1 1 -2 2 <(sort genus.csv -t";" -n -k1 )   <(sort species.csv -t";" -n -k2) -o 1.2,2.3
"Orchis";"stevenii"
"Orchis";"militaris"
"Orchis";"galilaea"
"Epipactis";"helleborine"
"Epipactis";"latifolia"
"Gomphichis";"traceyae"
"Gomphichis";"macbridei"
"Gomphichis";"goodyeroides"
"Gomphichis";"foliosa"
"Gomphichis";"caucana"

-o ermöglicht die Ausgabe zu definieren im Format F.N (F steht hier für die Dateinummer, N für die Spaltennummer), getrennt durch Kommas.

Andere nützliche Optionen zum Verhalten bei fehlenden Feldern oder nicht passenden Zeilen kann man natürlich der man-Page entnehmen.



Tagged: Bash Linux Tools

Kommentar verfassen | Nach oben