Datei != Datei

Vor einigen Tage wollte ich, wie auch mal in Arbeit auf vielen Servern beschrieben, einige Server auf einen aktuellen Stand bringen. Also eine neue lokale Konsole auf und ein beherztes ramon@zak:~$ for i in $(< server); do ssh $i „sudo aptitude update && sudo aptitude safe-upgrade“; done abgesetzt. Was erhalte ich als Meldung?

: Name or service not knownname srv-cgn-01

Ich gebe zu, ich war etwas verwundert, da in meiner ~/.ssh/config ein Eintrag fuer eben diesen und acht andere Server zu finden ist. Um sicher zu gehen, dass alles klappt, versuche ich mich haendisch mit dem Server zu verbinden.

ramon@zak ~ $ ssh srv-cgn-01
Linux srv-cgn-01 2.6.32-30-server #59-Ubuntu SMP Tue Mar 1 22:46:09 UTC 2011 x86_64 GNU/Linux
Ubuntu 10.04.2 LTS

Welcome to the Ubuntu Server!
 * Documentation:  http://www.ubuntu.com/server/doc

  System information as of Wed Mar 23 10:14:58 CET 2011

  System load:  0.21               Processes:           143
  Usage of /:   2.4% of 128.80GB   Users logged in:     0
  Memory usage: 7%                 IP address for eth0: 87.79.26.35
  Swap usage:   0%                 IP address for eth1: 192.168.100.1
  Temperature:  8 C

  Graph this data and manage this system at https://landscape.canonical.com/

0 packages can be updated.
0 updates are security updates.

Last login: Tue Mar 22 07:54:16 2011 from foo.ptlx.de
ramon@zak

Klappte soweit. Jetzt wollte ich doch mal schauen, was mir hier mit einem echo angezeigt wird.

ramon@zak ~ $ for i in $(cat server_ptlx); do echo ssh $i ls; done
 ls srv-cgn-01
 ls srv-cgn-02
 ls srv-cgn-03
 ls srv-cgn-04
 ls srv-cgn-05
 ls srv-cgn-06
 ls srv-cgn-07
 ls srv-cgn-08
 ls srv-cgn-09
ramon@zak

Das war definitiv nicht die Ausgabe, die ich erwartet hatte. Viel mehr waere etwas wie ssh srv-cgn-01 ls zu erwarten gewesen. Ich werde es nicht zu Spannend machen, moechte aber sagen, dass ich bei dem Problem sogar angefangen hatte strace in die Loesungssuche mit einzubeziehen. Nach einigen Mails zwischen Dirk und mir kam dann die entscheidende Frage „Deine .ssh/config ist eine Unix-Datei, oder?“.

ramon@zak:~$ file .ssh/config
.ssh/config: ASCII text

Ja, offensichtlich war die Datei „in Ordnung“. Aber was war mit meiner Datei, in der alle Server eingetragen sind?

ramon@zak ~ $ file server
server: ASCII text, with CRLF line terminators

Ja, da muss man erst mal drauf kommen. In der Datei war nicht, wie bei Linux-Dateien typisch, nur ein Line Feed, sondern ein Carriage Return mit anschliessendem Line Feed zu finden. In der Regel kommen Dateien mit einem CRLF aus dem Windows-Umfeld.

Als ich die Datei bereinigt hatte, hat auch mein oben genannte Aufruf endlich funktioniert. Viele Beispiele, wie so eine Bereinigung aussehen kann, finden sich unter HowTo: UNIX / Linux Convert DOS Newlines CR-LF to Unix/Linux Format. Unklar ist mir weiterhin, wieso die Datei bei mir auf einmal mit einem CRLF auftaucht :)

Zurück zur Uebersicht