Wie führe ich viele SSH remote-Befehle, die auf mehreren Maschinen, in batch?

Ich SSH verwenden, um einige Befehle auf mehreren remote-Rechnern in ein for Schleife. Es führt der gleiche Befehl(en) für eine Liste der IP-Adressen. Einige der IP-Adressen möglicherweise nicht erreichbar sein, so habe ich das ConnectTimeout option.

Allerdings, mein script hat nicht funktioniert, wie ich wollte. Eigentlich ist es geklebt an den ersten nicht-erreichbar-IP anstatt aufzugeben und zu versuchen mit der nächsten IP-Adresse auf meiner Liste.

Hier ist der relevante Teil meines scripts:

for ip in ${IP} ; do
    ssh  -o BatchMode=yes \
         -o StrictHostKeyChecking=no \
         -o ConnectTimeout=10 \
         -l ${USERNAME} \
         ${SCRIPT_HOST} \
         "${COMMAND} -i $ip || echo timeout" \
         >> ./myscript.out
done

Es ist in Ordnung, die für die IPs erreichbar, aber wenn eine bestimmte IP-down ist, wartet er eine Weile (viel mehr als 10s, vielleicht 35-40 Sekunden) und zeigt eine Fehlermeldung an meinem terminal:

ERROR connecting : Connection timed out

So Frage ich mich, welche option habe ich nicht richtig verwenden.

kann es nicht im hintergrund laufen ?? und ignorieren Sie Fehler, indem Sie tun <your command> 2>/dev/null
Haben Sie versucht, die Ausführung des ssh im debug-Modus (also verbose-Modus)?

InformationsquelleAutor JavaRed | 2013-11-22

Schreibe einen Kommentar