2017-03-08 6 views
0

Hier ist mein aktueller Code, der funktioniert, aber langsam istAusschalten der Windows-Netzwerk Bash Mit

for i in {1..255..1}; do 
    for j in {1..255..1}; do 
    ip="10.8.$i.$j" 
    sudo net rpc shutdown -I $ip -U Username%Password -t 1 -f 
    echo $ip 
    done 
done 

Ich möchte durch diese IP-Adressen gehen zu können und versuchen, sie zu schließen. Wenn jedoch kein PC an dieser IP-Adresse ist, muss er warten, bis die Zeit abgelaufen ist, bevor er die nächste versucht. Wie kann ich alle Windows PCs in einem Netzwerk finden und herunterfahren? (Sie haben alle die gleichen Anmeldeinformationen)

Antwort

0

Eine triviale Lösung ist nur ein Haufen von ihnen parallel laufen:

for i in {1..255..1}; do 
    for j in {1..255..1}; do 
    ip="10.8.$i.$j" 
    sudo net rpc shutdown -I $ip -U Username%Password -t 1 -f & 
    echo $ip 
    done 
    wait 
done 

Dies läuft 255 zu einem Zeitpunkt, und wartet darauf, sie alle zu beenden. Eine intelligentere und flexiblere Parallelisierung kann über xargs, sem oder parallel erreicht werden, wenn Windows dies unterstützt.

+0

Danke, das hat gut funktioniert. Ich habe mich nur bewegt, warte unter dem letzten, damit sie alle gleichzeitig rennen würden. Obwohl ich für eine bessere Lösung offen bin, sollte dies funktionieren, wenn ich es teste. – will