PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Steuerzeichen die nicht dahin gehören


erin
27.12.2003, 08:47
Hi und *argh* :(

hab da ein Problem was ich mir nicht erklären kann ...

Ich hab ne Textfile, in der stehn ein paar Hostnames drin. Schön untereinander. Dann hab ich ein Skript, welches diese Datei auswerten soll und sich schön nacheinander mit den Hosts connecten soll und irgendwas machen soll.

Textfile:

host1
host2
host3
...


Skript:

#!/bin/bash

count="1"
max="31"

while [ $count != $max ]; do count=`expr $count + 1`
ssh `cat -b textfile |grep -n $count -m 1|awk '{print $(NF)}'`
done
exit 0


Sollte eigentlich funktionieren, tuts aber nicht. Dem wollte ich aufgrundgehn und hab das was das Programm ausführen soll in eine TXTfile geschieben. In dieser steht jetzt folgendes:


ssh host1^M
ssh host2^M
ssh host3^M


Im Anhang ist ein Bild, da wird das ganze nochmal deutlicher. Weiss irgendjemand wo diese Steuerzeichen herkommen? Die tauchen nirgendwo sonst auf, nur wenn der sich dann per ssh verbinden soll ... Kann mir jemand weiterhelfen?


Jan Krüger
28.12.2003, 13:44
Ich würde sagen, der hat vom Ende der Ursprungszeilen die Zeilensprünge (CR) übernommen, die nur in der Windows- und Mac-Welt benutzt werden. Du kannst das Problem z.B. beheben, indem du die fertige Datei noch einmal durch dos2unix (wenn installiert) durchziehst.

Schaf
28.12.2003, 22:16
falls nicht, lösche das vorletzte zeichen (vor dem cr) jeder zeile, per regex oder so ;)

erin
30.12.2003, 07:11
Danke für die Tips, aber die haben leider nicht weitergeholfen.

so siehts jetzt aus:


#!/bin/bash
file="/home/user/hostfile"
min="0"
max=`cat $file | wc -l`

if [ "$1" = "" ]; then
echo "Usage: $0 <do that>"
exit -1
fi

while [ "$min" != "$max" ]; do min=`expr $min + 1`
curline=`head -$min $file | tail -1`
echo ------- >> nirgendwo
echo "Ohne Steuerzeichen" >> nirgendwo
echo $curline >> nirgendwo
echo -------- >> nirgendwo
echo "Mit Steuerzeichen" >> nirgendwo
echo "ssh $curline exit" >> nirgendwo

test $min -eq $max && less nirgendwo && rm nirgendwo && exit 0
done




Nach bissl rumprobieren hab ich jetzt rausgefunden, dass dem nur auftritt wenn nach der Hostvariable($curline) noch etwas kommt .. aber wieso? Und wie kann man dem umgehen?

EDIT: *hmpfh* scheint wohl nur bei Echo so zu sein, wenn der sich dann
normaler per ssh verbinden soll kommt weiterhin "Name or service not known"

Jan Krüger
30.12.2003, 11:24
Die Steuerzeichen sind wahrscheinlich so oder so da, werden aber nur auf dem Bildschirm angezeigt, wenn danach noch was kommt, oder so ähnlich...