Linux: ALLE Netzwerkschnittstellen abschalten

badday

Commander
Registriert
Sep. 2007
Beiträge
3.023
Moin zusammen,

ich schreibe gerade an einem Programm, das auf wvdial zurückgreift.

Ich brauche daher einen Befehl, der ALLE Netzwerkschnittstellen (einschl. der vom Netzwerkmanager kontrollierten) abschaltet oder eine Datei, die ALLE Netzwerkschnittstellen enthält.

Wenn also irgendjemand was weiß, bitte melden.

Programmiersprache ist C++, kann aber auch einfach ein Konsolenbefehl sein.
Ich möchte eine möglichst einfache Lösung. Natürlich kann man z. B. erst mit
ifconfig alle Netzwerkschnittstellen suchen und dann einzeln abschalten.

Gruß,

badday
 
/etc/rc.d/init.d/network stop
 
Unter Ubuntu wäre das dann aber /etc/init.d/networking stop

Damit fährst du aber glaube ich nur alle interfaces runter die in der /etc/network/interfaces auftauchen. Ich glaube nicht, dass damit auch interfaces runtergefahren werden, die vom networkmanager gemanaged werden. Aber das müsste man einfach mal testen.
 
man könnte auch unter /proc/sys/net/ipv4/conf schauen. Dort müssten alle konfigurierten (also mit IP-Adresse ausgestatteten) Interfaces zu finden sein als Unterverzeichnis. Funktioniert allerdings nicht mit Adaptern die keine IP bekommen haben (z.B. auf "promisc up" stehen oder gebridged sind)

ip link

ip addr show

müsste man auch parsen.

Lustig: "ip link" geht auch als normaler User bei mir.
 
Damit fährst du aber glaube ich nur alle interfaces runter die in der /etc/network/interfaces auftauchen. Ich glaube nicht, dass damit auch interfaces runtergefahren werden, die vom networkmanager gemanaged werden. Aber das müsste man einfach mal testen.
Habe ich und es fährt nicht alle runter.

/etc/rc.d/init.d/network stop
Das Verzeichnis scheint nicht zu existieren. Kann es sein, das du das selbe wie ecsil gemeint hast?

@CoolHandLuke: Ja, dort sind die Interfaces, aber eben mit den von dir schon beschriebenen Einschränkungen. ip link würde mit parsen gehen, das stimmt. Aber gibt es nicht einfach eine Datei, die alle Netwerkschnittstellen auflistet?

Trotzdem Danke an alle.

Gruß,

badday
 
Zuletzt bearbeitet:
«Das Verzeichnis scheint nicht zu existieren. Kann es sein, das du das selbe wie ecsil gemeint hast?»

Das ist natürlich Distributionsabhängig, wo sich die rc-Scripte befinden und welches Format sie haben.

Bei /proc/sys... bin ich mir auch nicht sicher, ob das ein möglichst großes Spektrum an Distributionen abdeckt.

Sicherer ist "ip link" "ip addr" oder "ifconfig -a" und dann parsen.

Jedenfalls vermute ich das. Aber vielleicht gibt es noch elegantere Methoden. ;-)




ah unter Python funktioniert folgendes Bsp:

http://code.activestate.com/recipes/439093/

gibt bei mir ne Pythonliste mit lo und eth0 zurück. Müsste man testen, ob das auch für die per networkmanager verwalteten NICs funktioniert.
 
Zuletzt bearbeitet:
Ja, eine distributionsabhängige Lösung schließe ich aus.

Insofern hast du vermutlich recht mit ip link etc..

Danke.

Gruß,

badday

PS: Glückwunsch, Beitrag Nr. 1000
 
OK, das sieht ja schon mal gut aus.

Werde es mir noch näher ansehen und dann ggf. in C++ schreiben.

Danke.

Gruß,

badday

EDIT: So ich habe ein Lösung gefunden; danke nochmal an alle für die Hilfe
 
Zuletzt bearbeitet:
wiie hast du das denn jetzt gelöst ?

würd mich ja mal interessieren ich mach das auch über /etc/init.d/network stop und wenn das nicht klappt -> ifdown eth0 usw :D aber das ist bischen aufwendig

mfg
 
Das Problem war ja eher, wie man die verschiedenen Netzwerkschnittstellen aus welcher Datei liest. Und danach ist ja relativ einfach...

Gruß,

badday
 
Zurück
Oben