Schleife in einer Schleife

R

ramann

Eroberer
Hallo Zusammen,

ich möchte in einer Schleife eine neue Schleife starten lassen.

Folgendes Konstrukt:

while read hosts
do
while read adressen
do
echo $hosts $adressen
./sshgrep.sh $hosts $adressen
done < ./adressen
done < ./hosts

Leider wird aber nur die erste Zeile aus der Datei Adressen ausgewertet.

Hat jemand eine Idee woran das liegen kann?

Thanks
bjoern
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Das Subscript ./sshgrep.sh sieht folgendermaßen aus:

#!/bin/bash
HOSTS="$1"
SUCHE="$2"
ssh $HOSTS grep $SUCHE /var/log/mail >> ./mailgrep.log
~


Wenn ich z.B. das Subscript aus dem Hauptscript auskommentiere, laufen die Schleifen korrekt durch...
 
Zuletzt bearbeitet:
Eine kurze beschreibung was dieses Script machen soll wäre nicht schlecht um vieleicht eine bessere Lösung zu finden :)
 
Das Script soll aus einer Datei die Namen der Mailserver entnehmen und aus einer anderen die zu suchenden Mailadressen.

Ohne das SSH Script läuft alles einwandfrei (durch echo getestet) durch. Mit SSH Script werden alle Server aber nur nach der in Zeile 1 angegebenen Adressen durchsucht.
 
In welchem Format sind die Hosts/Addressen? Sonst gehts vielleicht einfacher mit einer for-Schleife:

for host in `cat hosts`; do
for addresse in `cat addresse`; do
ssh $host grep $addresse /var/log/mail >> ./mailgrep.log
done
done
 
Jo, so läuft es auch :-)

Frage mich allerdings warum der "while" weg nicht läuft???
 
Naja ich kanns dir so direkt nicht sagen, aber das mit der STDIN-Umleitung in das Programm rein finde ich IMHO sowieso nicht sooo sauber. Ich _vermute_ die erste Schleife behält den STDIN-Kanal offen und die zweite Schleife versucht diesen nochmals zu öffnen mit neuem Input. Irgendwas in der Richtung..
 

Ähnliche Themen

Skript soll nicht doppelt laufen... kill pkill pid cron

script sshpass

Verschlüsseltes Backup-Script mit rsync

Grafische Anzeige der Temperatur

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

Zurück
Oben