Shell Skript für Netzwerdurchlauf

naja fals sie aber son ober-genialen admin haben wie ich hier :brav: dann wird er mit cygwin nichts anfangen können :devil: weil ihm die rechte dafür fehlen :D
 
Hallo

Weisst du was?
Nimm dir einfach eine Livecd, und arbeite in der dortigen shell.
Den ganzen Grafikkrempel brauchst du für die Erstellung dieses Scriptes nicht.
Und vim ist dafür völlig ausreichend.
Um deine Ziffernreihe zu generieren:
Code:
for ((A=0;A<=256;A++));
 do
 echo 123.456.789.$A;
done

Wenn du nur runterfahren willst, wenn kein PC mehr erreichbar ist, kannst du ja beim ersten erfolgreichen Ping deinen Test abbrechen.

Gruß Wolfgang
 
Wolfgang schrieb:
...
Code:
for ((A=0;A<=256;A++));
 do
 echo 123.456.789.$A;
done
Doh, was hat mich geritten, dass ich die ips mit 0 aufgefüllt habe? ?(
Ich seh mal wieder den Baum vor lauter Wäldern nicht. ;)

Wolfgang schrieb:
Wenn du nur runterfahren willst, wenn kein PC mehr erreichbar ist, kannst du ja beim ersten erfolgreichen Ping deinen Test abbrechen.

Gruß Wolfgang

Yep, das ist sicher die einfachste Lösung.

Gruss, Xanti
 
Yeah.
Ich hab das Skript.
Schaut es euch bitte mal an und gebt mir ein Feedback.(Verbesserungen,Optimierung,...)
Code:
#!/bin/sh

nMINPl=1
nMAXPl=254
nMIN=1
nMAX=254
nN=0				#2x soll der gesammte scan durchgefuehrt werden
#Flagvariable zum Überprüfen ob alle PCs aus sind, wenn kein PC im Netzwerk 1 ansonsten 0
nFlag=1

function check_host
{
   if [ $1 -gt $nMINPl -a $1 -lt $nMAXPl ]; then
      if ping -n 1 192.168.100.$1 | grep "100% Verlust" > /dev/null; then
         return 1
      else
         return 0
      fi
   else 
      return -1
   fi
}

echo "Scanne Netzwerk"

while [ $nN -le 1 ]; do
   while [ $nMIN -le $nMAX ]; do
      if check_host $nMIN; then
         nFlag=0
      fi
      let nMIN+=1
   done
   let nN+=1
   nMIN=nMINPl
done

if [ $nFlag -eq 1 ]; then
   echo "Server darf heruntergefahren werden"
else 
   echo "Server darf nicht heruntergefahren werden"
fi

Gruß Alex
 
du wirst trotzalledem ein problem haben ...
schau dir einfach mal die ip der server an etc ...
eventuell kommst du ja drauf
PS.: schau dir mal "man ping" an ...
ich vermute du wilst die rechner 1mal anpingen
PSS.: und mach mal einen ping vom server aus und schau dir an welche sprache es ist (ich vermute mal nicht deutsch)
 
Zuletzt bearbeitet:
@moped: Dafür, dass Du das erste Mal in der Shell skriptest, siehts doch schon ganz gut aus. Was ich aber nicht verstehe, warum Du mit dem ping-grep arbeitest, weil

man ping
Code:
     The ping utility returns an exit status of zero if at least one response
     was heard from the specified host; a status of two if the transmission
     was successful but no responses were received; or another value (from
     <sysexits.h>) if an error occurred.

Also müsste eigentlich ein

Code:
if ping -c 1 -t 1 $ip; then
...

ausreichen. -c 1 heisst, dass nur ein ping gesendet wird, -t 1 bedeutet, das ping 1 Sekunde auf die Antwort wartet.

Noch ein kleiner Fehler:

Code:
  ...
  nMIN=nMINPl
  ...

sollte

Code:
  ...
  nMIN=$nMINPl
  ...

sein.

Gruss, Xanti
 
Hallo,

der Freitag ist zwar schon vorbei, aber ich war letzte Woche nicht da und hätte da noch einen recht einfachen Vorschlag mit nmap (falls es installiert ist und benutzt werden darf):

Code:
#! /bin/bash
PATH=/usr/bin
NETWORK="192.168.20.0/24"
SERVERIP="192.168.20.1"

RETSTRING=`nmap -sP -n ${NETWORK} | grep -v "Starting" | grep -v "MAC Address" | grep -v "finished" | grep -v "$SERVERIP"`;
test "$RETSTRING" = "" && echo "DHCP-Server runterfahren"

# end of script

Man spart sich dabei so manche Schleife...

[EDIT] MAC Address auch filtern bei neuen nmap-Versionen. Es ist wohl wesentlich schneller und effizienter als mit Schleifen.[/EDIT]

Gruß
 
Zuletzt bearbeitet:
@moped: Dafür, dass Du das erste Mal in der Shell skriptest, siehts doch schon ganz gut aus.

Lol.

Das könnte daran liegen, dass er es vermutlich nicht selber geschrieben hat.
 
Zurück
Oben