Dateien mit netcat übertragen

Netcat ist das Schweizer Messer für Administratoren und DevOps aus der Kategorie Netzwerktools. Es ist auf fast jeder Distribution über die Paketverwaltung zu erhalten oder bereits vorinstalliert und bietet eine Vielzahl von Möglichkeiten um über das Netzwerk zu interagieren. Eine davon ist das übertragen von Dateien von einem Server auf dem die Dateien liegen und einem Server auf den sie sollen, im folgenden Quell- und Zielserver genannt.

Überträgt man einzelne Konfigurationsdateien so ist es meist unerheblich wie man netcat einsetzt. Bei mehreren hundert oder sogar tausenden von Dateien lässt sich mit richtigen Einsatz die Effizienz deutlich steigern wobei Effizienz hier benötigte Zeit, übertragene Datenmenge und Systemauslastung bzw. benötige Ressourcen bedeutet.

Continue reading →

Berechtigungen Kopieren

Es kommt häufig vor das man neue Dateien wie zum Beispiel Logdateien für Programme initial anlegen muss bei denen die Berechtigungen einer bestehenden Datei entsprechen. Um sich hier einerseits die Arbeit zu sparen von Hand nach schauen zu müssen welche Berechtigung die bestehende Datei hat sowie Übertragungsfehler zu vermeiden kann man chmod mit dem Parameter –reference aufrufen und als ersten Parameter die bestehende Datei angeben und als zweiten Parameter die neue Datei. Dann werden die Berechtigungen von der bestehenden Datei auf die neue kopiert bzw. angewendet.

chmod --reference /var/log/existing-file.log /var/log/new-file.log

Finden und Ersetzen

Manchmal kopiert man ein bestehendes System um ein Testsystem aufzubauen oder passt ein bestehendes an. Dann muss man häufig in einem kompletten Verzeichnis mit Unterordner in bestehende Dateien schauen und Konfigurationen anpassen. Zum Beispiel wenn sich die URL von einem System geändert hat und man rekursiv in allen Dateien diese neue URL eintragen muss. Das kann mühsam und zeitraubend sein, aber nicht wenn man die Bash benutzt. Hier ein Beispiel in dem alle Vorkommen von www.example.de in www.new-example.de geändert werden.

grep -rl 'www.example.de' . | xargs sed -i 's/www.example.de/www.new-example.de/g'

grep sucht dabei mit -r im aktuellen Verzeichnis rekursiv abwärts welches durch . angegeben wird und listet die Dateinamen mit l auf in denen es den Suchbegriff ‘www.example.de’ gefunden hat. Diese werden dann mittels Pipe | an das xargs Programm übergeben. Dieses wiederum führt für jede Datei sofort (inplace) -i eine Substitution (deutsch: Ersetzung) von www.example.de zu www.new-example.de durch und das für jedes Vorkommen g und nicht nur den ersten Treffer innerhalb einer Datei.