OpenBox Tools ; Netzwerk applet if überprüfung?

G

Guest

Hey,

ich bin schon lange dabei mein Openbox mit selbstgeschriebenden Applets bzw Scripten zu füttern.

Z.b Lautstärkeregelung, ftp uploader, Dateimanager usw usw usw....

Diese bin ich auch nach und nach auf mein Wiki am veröffentlichen (immer dann wenn zeit dazu finde).

Wenn die ein angemessenen Umfang haben, pack ich die in ein archiv und nenne sie einfach Openbox tools ;)

Naja, kommen wir mal endlich zu sache.

Und zwar bin ich grad bei, ein Netzwerkapplet zu scripten. Soweit hab ich es schon, würd nur gern eine If schleife hinzufügen in verbindung mit ping. Und zwar verbindet sich ja mein Arch am anfang schon und ich hab eine verbindung schon stehen. Doch wenn ich das Applet dann starte zeigt er mir unten ein X an das ich off sein soll obwohl das nicht stimmt.

Weswegen ich eine If frage machen will.

Und zwar, soll er alle 60 sekunden 2 mal google anpingen. Wenn fehlgeschlagen soll er zuerst das X zeigen, so wenn ich drauf klicke er eine verbindung aufbaut und ein grüner haken kommt.

Aber (was ja bei start üblich ist) wenn die verbindung schon steht soll er zuerst den grünen haken zeigen.

Hier mein script
Code:
#!/bin/sh
while(true)
do
   zenity --notification --window-icon=/home/tomekk/off.png
   /etc/rc.d/network start
   zenity --notification --window-icon=/home/tomekk/on.png
   /etc/rc.d/network stop
done
Hab an sowas gedacht >
Code:
#!/bin/sh
while(true)
do
   if ping -c 2 www.google.de = 1 then go $1 else go $2
   $1 zenity --notification --window-icon=/home/tomekk/off.png
   /etc/rc.d/network start
   $2 zenity --notification --window-icon=/home/tomekk/on.png
   /etc/rc.d/network stop
done
Ich weiß das es völlig falsch ist :D Ich denke halt an sowas. und habs so geschrieben damit ich verständlicher ausdrücken kann was ich meine.

Danke schonmal für eure hilfe.

Edit:
Ich weiß auch das ich es auch so machen kann >
Code:
#!/bin/sh
while(true)
do
   if ping -c 2 www.google.de = 1 then go $1 else go $2
   $1 zenity --notification --window-icon=/home/tomekk/on.png
   /etc/rc.d/network stop
   $2 zenity --notification --window-icon=/home/tomekk/off.png
   /etc/rc.d/network start
done
Aber so wärs nicht gelöst ;) Ich will es eleganter haben :)
 
Zuletzt bearbeitet von einem Moderator:
ich kann zwar nix zum thema beitragen aber zenity ist genau das was ich schon seit einiger zeit suche :)
das eröffnet mir ja ganz neue möglichkeiten


kennst schon das ->
in der konsole zenity --about eingeben (dann öffnet sich das about fenster)
fentser offen lassen und "zen" eingeben :)
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

ich weiss nich 100%ig was du vor hast aber vielleicht meinst du so in etwa?

Code:
#!/bin/sh
while(true)
do
ping -c 2 www.google.de  || PING=no

if [ "$PING" != "no" ];then
   zenity --notification --window-icon=/home/tomekk/on.png
   /etc/rc.d/network stop
else
   zenity --notification --window-icon=/home/tomekk/off.png
  /etc/rc.d/network start
fi
PING=yes
done

Edit 2: aber die schleife läuft gar nicht weiter erst wenn man drauf klickt
so gehts vielleicht, nich schön aber geht
das script läuft in schleife solange die verbindung steht
und wenn die verbindung weg ist bleibt es stehn und verbindet sich mit einem klick neu????????

Code:
#!/bin/sh -x
while sleep 5
do
ping -c 2 www.google.de  || PING=no
killall zenity
if [ "$PING" != "no" ];then
   zenity --notification --window-icon=/home/alex/zenity/on2.png  &
else
   zenity --notification --window-icon=/home/alex/zenity/off2.png
   /etc/rc.d/network start
fi
PING=yes
done

ist natürlich doof wenn noch andere scripte mit zenity laufen, also das kanns noch nicht sein :)
 
Zuletzt bearbeitet:
ich kann zwar nix zum thema beitragen aber zenity ist genau das was ich schon seit einiger zeit suche :)
das eröffnet mir ja ganz neue möglichkeiten


kennst schon das ->
in der konsole zenity --about eingeben (dann öffnet sich das about fenster)
fentser offen lassen und "zen" eingeben :)
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

ich weiss nich 100%ig was du vor hast aber vielleicht meinst du so in etwa?

Code:
#!/bin/sh
while(true)
do
ping -c 2 www.google.de  || PING=no

if [ "$PING" != "no" ];then
   zenity --notification --window-icon=/home/tomekk/on.png
   /etc/rc.d/network stop
else
   zenity --notification --window-icon=/home/tomekk/off.png
  /etc/rc.d/network start
fi
PING=yes
done
Edit 2: aber die schleife läuft gar nicht weiter erst wenn man drauf klickt
so gehts vielleicht, nich schön aber geht
das script läuft in schleife solange die verbindung steht
und wenn die verbindung weg ist bleibt es stehn und verbindet sich mit einem klick neu????????

Code:
#!/bin/sh -x
while sleep 5
do
ping -c 2 www.google.de  || PING=no
killall zenity
if [ "$PING" != "no" ];then
   zenity --notification --window-icon=/home/alex/zenity/on2.png  &
else
   zenity --notification --window-icon=/home/alex/zenity/off2.png
   /etc/rc.d/network start
fi
PING=yes
done
ist natürlich doof wenn noch andere scripte mit zenity laufen, also das kanns noch nicht sein :)

genau so meinte ich es. Ich hab es noch nicht getestet da ich grad unter Windows bin. Aber das scheint das richtige zu sein. Laut Code aufbau deute ich es so, das wenn man das script startet, er überprüft ob eine inet verbindung da ist, und wenn nicht geht er zum Off symbol und wenn ja zum On symbol right?.

Was aber da nicht verstehe, wieso hast du killall zenity da rein gesetzt?

edit: Das mit dem About ist ja geil :D wie hast du das den rausgefunden.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Ich hab es ein wenig verändert wie ich es mir eher vorgestellt habe >
Code:
#!/bin/sh -x
while sleep 1
do
ping -c 1 www.google.de  || PING=no
killall zenity
if [ "$PING" != "no" ];then
   zenity --notification --text "Sie sind Online!" --window-icon=on.png
   /etc/rc.d/network stop
else
   zenity --notification --text "Sie sind Offline!" --window-icon=off.png
   /etc/rc.d/network start
fi
PING=yes
done
Nur, ein Problem hab ich. Und zwar, wie kann ich Ping sagen das er auf ein Paket (speziell wenn man offline ist) nicht warten soll sondern sofort ausspucken soll ob das Paket ankam oder nicht. Den wenn ich wirklich online bin und ich starte das Script kommt sofort unten die grüne kugel, also sagt mir das ich on bin. Wenn ich aber das kabel ziehe, und dann das Script starte, dauert es erst mal ca eine Minute bis unten die rote Kugel kommt. Ich hab schon mit den parametern "-w" und "-l" und "-i" und was weiß ich schon probiert die in der Man pages stehen. Aber keins bringt was, bei allen muss ich warten. Einer eine idee?

Btw: Wie starte ich eigentlich scripts automatisch beim start? Als normal user ist klar, einfach in die .xinitrc eintragen. Aber ich will bzw muss (eher will) das script ja als root ausführen. Nur wie?
Mir kam die Idee mit sudo, aber das möchte ich nicht.

Edit2: Was mir auch grad aufällt, ist die tatsache das die cpu auch 100% ausgelastet wird wenn ich das script starte Oo
 
Zuletzt bearbeitet von einem Moderator:
ja das problem war bei mir das ich
Code:
zenity --notification --window-icon=/home/alex/zenity/on2.png  &
immer in der hintergrund geschickt habe damit das script weiter läuft
also musste ich es wieder killen (killall)weil du sonst die ganze leiste voller grüner punkte hast :) was aber auch keine schöne lösung ist

bei deinem letzten script vorschlag kannst du killall raus nehmen da nichts mehr in der hintergrund geschickt wird.
das problem jetzt ist aber das das script stehen bleibt bis man auf den button klickt
das ist so sicher nicht gewohlt

davon abgesehen ist es auch nicht unbedingt toll wenn man google ständig anpingt
mal sehen ob man da nicht was besseres machen kann.
 

Ähnliche Themen

verzeichniss suche funktioniert nicht

Gnome Classic Desktop: Home-Inhalt Icons ausblenden

Shellskript - Fehler in Cron

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben