Port auf entfernten Server mit netcat prüfen

Heute wollte ich ein E-Mail Konto auf meinem Laptop einrichten. Bekam aber immer wieder die Meldung, das keine Verbindung zum Server besteht. Meine erste Vermutung war die Firewall auf dem Server. Also wollte ich wissen ob der Port überhaupt offen ist.

necat lieferte die Antwort. POP3_SSL ist nicht offen für meine IP.

$ nc -zv www.domainname.de 995
nc: connect to www.domainname.de port 995 (tcp) failed: Connection timed out

Nützlich: mit netcat lassen sich auch Portbereiche definieren und testen.

$ nc -zv www.domainname.de 80-83
Connection to www.domainname.de 80 port [tcp/http] succeeded!
nc: connect to www.domainname.de port 81 (tcp) failed: Connection timed out
nc: connect to www.domainname.de port 82 (tcp) failed: Connection timed out
nc: connect to www.domainname.de port 83 (tcp) failed: Connection refused

Dateien und Ordner Rekursiv per FTP mittels Shell Script hochladen

Eine Bemerkung zum Beginn: Rein aus Sicherheitsgründen verwende ich FTP nicht gern. Aber bei einigen Projekten kommt man nicht herum sich damit auseinanderzusetzen, da der Hoster dies als einzige Datenübertragungsmethode anbietet.

Nun aber zum Problem. Der Standard FTP Client „ftp“ kann mehrere Dateien mit mput verarbeiten. Leider ist diese Funktion nicht rekursiv. Gerade beim Upload von mehreren Dateien und Ordnern via Script wird es schnell aufwändig. Einen ganz charmanten Ansatz bietet ncftp. Dort kann ich mput mit dem Paramater -R verwenden und Rekursiv hochladen.

Wenn das Paket noch nicht auf der Maschine installiert ist, kann das mit folgendem Befehl nachgeholt werden.

sudo apt-get install ncftp

Nun das Script zum Upload:

#!/bin/bash
HOST='ftp.domain.de'
USER='ftpusername'
PASSWD='ftppassword'

ncftp -u $USER -p $PASSWD $HOST << EOT
passive
ascii
cd /remote_directory
lcd /local/upload/directory/
mput -R *
bye
EOT

Weitere Informationen zum Thema:
http://www.ncftp.com/

Inhalt mehrerer Dateien in einer Datei Zusammenführen

Heute mal ein kleiner Schnipsel der sicherlich für den ein oder anderen hilfreich sein kann. Es geht um das Zusammenführen des Inhalts von zwei oder mehr Dateien. Hierfür kann z.B. der Befehl cat verwendet werden.

$ cat datei1.txt datei2.txt > datei12.txt

Selbstverständlich lässt sich der Befehl auch prima mit einem find oder ls kombinieren. Damit lassen sich dann auch ganze Order oder nur bestimmte Dateien in einem Verzeichnis zusammenführen.

Befehl im Hintergrund ausführen

Häufig habe ich einen Befehl ausgeführt, ohne auf die Laufzeit zu achten. Solange ein Programm aktiv läuft, ist das Terminal nicht zu verwenden. Mit der Tastenkombination Strg + Z kann man den Befehl einfrieren und ihn anschließend mit bg in den Hintergrund verfrachten. Schon kann man das Terminal weiter verwenden.

$ bg

Um einen Befehl wieder in den Vordergrund zu holen, benutzt man fg.

$ fg %1

Wenn man im vorherein weiss, das die Ausführung länger dauert, kann man den Befehl auch direkt in den Hintergrund verfrachten indem man ein & (Kaufmanns-Und) anhängt.

$ befehl &

Um zu erfahren welche Prozesse im hintergrund gerade laufen – oder auch nicht – gibt der Befehl jobs Auskunft.

$ jobs

Weitere Informationen zum Thema:
http://wiki.ubuntuusers.de/shell/prozesssteuerung

Anzahl der Zeilen in einer Datei ermitteln

Immer wieder kommt es vor, das man wissen möchte wieviele Zeilen eine Datei hat. Zwar kann man sich mit Editoren wie nano die Zeilen anzeigen lassen, aber gerade bei größeren Dateien kommt man schnell seine Grenzen. Folgender Befehl kann genutzt werden, um herauszufinden wie viele Zeilen eine oder mehrere Textdatei hat.

$ find /var/log/apache2/*.log -print0 | xargs -0 wc -l
5232 /var/log/apache2/access.log
  58 /var/log/apache2/error.log
5290 insgesamt

Hinweis: Man kann auch nur eine einzelne Datei abfragen, indem man das *.log mit einem Dateinamen z.B. access.log ersetzt.