Warum läuft dieses Skript nicht unter cygwin, wohl aber unter normalem Linux?

M

mwebtopac

Grünschnabel
Hallo,
es ist sicherlich nicht die feinste Art in seinem ersten Post gleich eine Frage zu stellen, aber ich weiß einfach nicht mehr weiter und hoffe inständig, dass ihr mir bei folgendem Problem helfen könnt.

Warum läuft das folgende Skript, das ich von hier http://www.wer-weiss-was.de/theme13/article2034244.html habe und nur leicht modifiziert habe, zwar wunderbar unter Knoppix, aber nicht unter cygwin ?

Code:
#!/bin/sh

for hostpart in `seq 1 5`
do
        ping -c1 192.168.1.$hostpart >/dev/null 2>&1 &&
        echo -en '\e[32;01malive' ||
        echo -en '\e[31;01mdead'
        echo -e "\e[0m\t192.168.1.$hostpart"
done


Da cygwin ein anderes ping-Kommando nutzt, das den Parameter -c nicht anbietet, habe ich

Code:
ping -c1 192.168.1.$hostpart >/dev/null 2>&1 &&

schon durch

Code:
ping 192.168.1.$hostpart [count 1] >/dev/null 2>&1 &&

ersetzt. Jetzt läuft das Skript wenigstens ab. Es ist aber egal, ob die angepingten Computer online sind oder nicht. Das Skript meldet immer alive.
Es sollte aber bei PCs, die eigentlich offline sind, dead anzeigen.
Hilfe, ich habe alles probiert. Ich komme nicht mehr weiter. Für Hilfe wäre
ich überaus dankbar.
 
Hallo,

ich bin da kein Shell-Freak. Aber teste doch mal den Ping befehl so ohne Skript und schaue ob es funzt.

Wenn ja liegt es wohl an der Ausführung des Skripts. Wenn nicht dann eher am Befehl oder am System das der Befehl anderes sein muss..

sonst nutze doch ne if anweisung..

echo -en '\e[32;01malive' ||
echo -en '\e[31;01mdead'


vielleicht liegt das problem auch einfach nur an der anzeige..

bye bye
 
Erstmal danke für deine Antwort

Der Ping-Befehl an sich in der Form (Beispiel)
Code:
ping 192.168.1.1 [count 1]
funktioniert prima.

Ich glaube nicht, dass es an der Anzeige liegt, da
ein simples Skript der Art
Code:
#!/bin/sh
if ping 192.168.1.1 [count 1] > /dev/null 2>&1
(unter normalem Linux: if ping -c1 192.168.1.1 > /dev/null 2>&1)
then
  echo "Der Zielrechner ist online"
else
  echo "Der Zielrechner ist offline"
fi
auch immer sagt, dass der Zielrechner online ist, egal ob er es nun wirklich ist oder nicht. Unter Knoppix hingegen funktioniert das Skript völlig normal.

Sind vielleicht die Standardfehlerausgaben oder so anders?
Liegt es an 2>&1 ?
 
Hallo

Vorab: Cygwin hat mit der Shell - um die es in diesem Board geht - nix zu tun.
Cygwin simuliert nur eine Shellumgebung, und unterscheidet sich wesentlich von einer echten Shell auf *nixuiden Systemen.

Wie die Rückgabewerte unter Cygwin ausschauen weiss ich nicht.
Dazu befragst du wohl besser eine entsprechende Community die sich mit Windows und Cygwin beschäftigt.

2>&1 bedeutet unter einer echten shell, dass der Fehlerkanal zur Standardausgabe umgeleitet wird.
Der Rückgabewert eines Befehl hat aber damit nix zu tun.
In der echten Shell steht diese in der Variablen $?.
Wie diese Werte auf entsprechende Fehler abgebildet sind, sagt dann die jeweilige Manpage des Befehles.

Ob und wie das unter Windows geregelt ist, musst du eben deiner Hilfe entnehmen. Wie gesagt, ist hier wirklich OT.

Gruß Wolfgang
PS Das erste Posting mit einer Frage zu beginnen ist nicht schlimm, sondern sogar alltäglich und nich unerwünscht.
Aber dabei solltest du schon darauf achten, ob die Frage auch zr Community passt, wenn du echte Hilfe erwartest.
Zu Cygwin gibt es IMHO etliche Anlaufstellen im Internet.
 

Ähnliche Themen

Queue für copy Script

Shell-Skript nicht doppelt starten

Löschroutine mit Überprüfung

iptables weiterleitung port vom internen Netzwerk zum internet Port

Bash - Problem mit verschachtelten Schleifen

Zurück
Oben