Einträge zu Tag: Bash
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!
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.
Standardeditor in Debian ändern
Erstellt: 09.07.2011 11:20
Den Standardeditor in Debian zu ändern ist keine Hexerei:
Wie für viele andere Grundeinstellungen ist "update-alternatives" dein Freund. Mit der Option "--config editor" werden alle installierten Editoren zur Auswahl gestellt:
# update-alternatives --config editor
Es gibt 3 Auswahlmöglichkeiten für die Alternative editor (welche /usr/bin/editor bereitstellen).
Auswahl Pfad Priorität Status
------------------------------------------------------------
* 0 /bin/nano 40 Auto-Modus
1 /bin/nano 40 manueller Modus
2 /usr/bin/vim.basic 30 manueller Modus
3 /usr/bin/vim.tiny 10 manueller Modus
Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 2 <Enter>
update-alternatives: /usr/bin/vim.basic wird verwendet, um /usr/bin/editor (editor) im manueller Modus bereitzustellen.
...das wäre es schon gewesen.
Zeilen mir mehr als ... Zeichen finden
Erstellt: 19.04.2011 13:29
Zwischendurch kann es nötig sein in einem File überlange Zeilen zu finden.
Nach längerem Basteln mit "read" und "wc" blieb es dann doch bei "grep":
$ grep -vnE '^.{0,80}$' file
In diesem Beispiel werden alle Zeilen ausgegeben mit mehr als 80 Zeichen.
Bearbeitungsdatum einer Datei manipulieren
Erstellt: 18.04.2011 08:25
Manchmal kann es nötig sein, zum Beispiel für irgendwelche Tests, dass man das Bearbeitungsdatum einer Datei manipuliert.
Hier eine ganz normale Datei, montags Morgen erstellt:
$ ls -lh zeitreise
-rw-r--r-- 1 usr grp 1.1M 2011-04-18 08:06 zeitreise
Und nun schicken wir sie auf die Zeitreise mit Hilfe von "touch":
$ touch -t 190212242355 zeitreise
Et voilà, die Datei befindet sich auf einmal im Jahre 1902, kurz vor der Geisterstunde an Heilighabend:
$ ls -lh zeitreise
-rw-r--r-- 1 usr grp 1.1M 1902-12-24 23:55 zeitreise
...wenn das mal kein Historisches Dokument ist.
Das Format:
$ touch -t [CC]YYMMDDhhmm[.ss] file
CC - Das Jahrhundert, kann weggelassen werden
YY - Das Jahrzehnt, zweistellig
MM - Der Monat, zweistellig
DD - Der Tag, zweistellig
hh - Die Stunde, zweistellig
mm - Die Minute, zweistellig
.ss - Die Sekunden, zweistellig, mit einem Punkt getrennt, kann weggelassen werden.

RSS