Shell Programmierung

blackout24

BIOS-Overclocker(in)
Hallo,

ich brächte ein Skript, dass nach dem Start des Laptop immer google.de anping und beim ersten Timeout
"sudo ifconfig eth0 down" und sofort "sudo ifconfig eth0 up" macht. Danach weiter pingt bis wieder Timeout und das
ganze von vorn.

Wie würde sich das realisieren lassen?

Mein forcedeth Modul scheint sich nicht mit dem Router hier im Wohnheim zu verstehen. Bricht deswegen
gerne mal willkürlich zusammen. Ist auch nur mit 10Mbit synchoronisiert das Netzwerk Interface.
Zu Hause klappt alles wunderbar.

Kernel.log sagt:
Code:
Feb  5 20:20:13 localhost kernel: [27540.010839] forcedeth 0000:00:14.0: eth0: Got tx_timeout. irq: 00000020
Feb  5 20:20:13 localhost kernel: [27540.010843] forcedeth 0000:00:14.0: eth0: Ring at 35430000
Feb  5 20:20:13 localhost kernel: [27540.010845] forcedeth 0000:00:14.0: eth0: Dumping tx registers

Nach einem neustart von eth0 geht es wieder ne Weile. Das sollte halt automatisch passieren.
Problem scheint bekannt zu sein im Internet aber keine richtige Lösung.

Gruß,

blackout24
 
Teste mal folgendes:
Code:
#!/bin/bash
while true; do
 if [ "$( ping -c 1 www.google.de | grep "0% packet loss" )" ];
  then
   sleep 3
  else
   ifconfig eth0 down && ifconfig eth0 up
   wall "Netzwerkverbindung wiederhergestellt"
 fi
done
Erklärung:
In einer Endlosschleife (while true) wird einmal google.de angepingt und im Output nach "0% packet loss" gegreppt. Wird die entsprechende Zeichenfolge gefunden, wartet das Skript 3 Sekunden und pingt dann wieder. Kann die Zeichenfolge nicht gefunden werden, wird die Netzwerkverbindung neu gestartet und an alle User eine Meldung ausgegeben.

Das Skript einfach ausführbar (chmod +x) und nur für root verfügbar (chmod root:root /path/to/script) machen. In den Autostart bekommst du es bei Arch glaube ich, indem du den Pfad zum Skript in /etc/rc.local packst.

Ich habe auf die Schnelle nichts finden können, womit man nicht dauerhaft pingen müsste, sondern beispielsweise den Output des Kernels (oder des Logging Daemons) überwacht. Falls ich was finden sollte, gebe ich dir aber Bescheid.

MfG Jimini
 
Danke habe es mir mal eingebunden.
Mal schauen ob es hilft.

Gruß,

blackout24

EDIT: War nicht so die gute Idee das in rc.local einzubinden. Während dem hochfahren kann er Google nicht finden
und printet mir damit den Bildschirm in der Endlosschleife voll und fährt nicht weiter hoch. Hab dann über ne Live CD die Änderungen wieder rückgängig gemacht.
 
Zuletzt bearbeitet:
Ach stimmt, das habe ich nicht bedacht. Bei Gentoo gibts eine Datei namens /etc/local.d/baselayout1.start, die nach dem Bootvorgang ausgeführt wird, schau mal, ob Arch sowas auch hat - müsste es eigentlich.
Für Testzwecke kannst du das Skript ja so modifizieren, dass alles nur einmal ausgeführt wird.

MfG Jimini
 
Hallo habs mal einfach in den Gnome Startprogramme Manager hinzugefügt der auch Dropbox usw. startet.
Dazu lass ich es mal in einem Terminal mitlaufen bis die Verbindung abbricht. In den Netzwerkaktivitäten
sieht man aber schon wie er regelmässig pingt.

Zwischen ifconfig eth0 down und ifconfig eth0 up habe ich eine Sekunde Pause eingefügt durch.
sudo ifconfig eth0 down && sleep 1 && sudo ifconfig eth0 up
Müsste gehen oder? Für ifconfig in visudo noch gesetzt das er kein Passwort will. Bin mir nicht sicher ob Netzwerk runterfahren
ohne sudo geht.
 
Meines Wissens benötigt man für alle Veränderungen an der Netzwerkverbindung root-Rechte. Du kannst aber natürlich /etc/sudoers dahingehend editieren, dass hierfür kein Passwort benötigt wird:
Code:
dein_username ALL=(ALL) NOPASSWD: /sbin/ifconfig eth0 down
dein_username ALL=(ALL) NOPASSWD: /sbin/ifconfig eth0 up

MfG Jimini
 
Ist die NIC auf 100 Full Duplex fixiert und der Router hat 10? hab da was gelesen von einem selben Problem. Falls ja wenn du autonegotiation einstellst hast du immer noch die Unterbrüche? Autonegotiation

Im Büro hatten wir auch schon Probleme mit CISCO Switches und fixer Geschwindigkeitszuweisung.

Gruss
 
Ist die NIC auf 100 Full Duplex fixiert und der Router hat 10? hab da was gelesen von einem selben Problem. Falls ja wenn du autonegotiation einstellst hast du immer noch die Unterbrüche? Autonegotiation

Im Büro hatten wir auch schon Probleme mit CISCO Switches und fixer Geschwindigkeitszuweisung.

Gruss

Scheint an zu sein.

Code:
sudo ethtool eth0
Settings for eth0:
	Supported ports: [ MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Speed: 10Mb/s
	Duplex: Half
	Port: MII
	PHYAD: 1
	Transceiver: external
	Auto-negotiation: on
	Supports Wake-on: g
	Wake-on: d
	Link detected: yes

Mit dem Skript muss ich wohl noch etwas finetunen zwischen hoch und runterfahren des Interfaces müssen wohl 3 Sekunden etwa liegen bis das wirklich getrennt wurde.

Vielleicht sollte ich den mal zu Full-Duplex zwingen kann mir nicht vorstellen, dass das Netzwerk das hier nicht unterstützt. Kommt vielleicht zu Kollissionen.
 
Zuletzt bearbeitet:
Zurück