Script zum aus/einschalten eines Netzwerkports?

pixelpunk

pixelpunk

Aktives Mitglied
Thread Starter
Dabei seit
16.06.2004
Beiträge
646
Reaktionspunkte
2
Hallo,

Ich habe mit folgendem Problem zu kämpfen. Neben meiner internen Airportkarte benutze ich auch noch den DWL-122 USB WLAN Adapter. Dieser hat einen beschi... Treiber. Nur mit Mühe und viel probieren habe ich es jetzt hinbekommen, dass er unter 10.4.5. ganz gut läuft. Jetzt gibt es nur noch ein Hindernis, jedes Mal wenn ich ihn von meinem PowerBook trenne gibt es eine Kernel-Panic. Das ist ein bekanntes Problem und lässt sich nur umgehen wenn man unter Systemeinstellungen/Netzwerk/"Anzeigen" Netzwerkkonfigurationen; das Häkchen von dem durch den USB-Adapter hinzugefügten Netzwerk-Port entfernt. In diesem Falle heißt der "Ethernet-Anschluss (en2)" Dann gibt es keine Kernel-Panic. Da ich keine Ahnung von Apple-Script habe wollte ich fragen, ob es möglich wäre ein Script zu schreiben was mir das lästige in die "Systemeinstellung gehen, an- und ausklicken" erspart?



Viele Grüße pp.
 
...

Hallo pixelpunk,

versuche mal

do shell script "sudo ifconfig en2 down" password "deinPassword" with administrator privileges

zum Anschalten eben das down durch up ersetzen.
Das ist zwar nicht genau das selbe wie den Haken zu entfernen, aber könnte trotzdem gehen...

Sollte das nicht gehen, müsstest Du die Frage noch mal im Unix-Forum stellen, ob man mit ifconfig oder einem anderen CL-Tool das ganz abschalten kann.

down Mark an interface ``down''. When an interface is marked
``down'', the system will not attempt to transmit messages
through that interface. If possible, the interface will be reset
to disable reception as well. This action does not automatically
disable routes using the interface.

Ansonsten müsste man es mit GUI-Scripting machen...

Gruß Andi
 
Andi schrieb:
Hallo pixelpunk,

versuche mal

do shell script "sudo ifconfig en2 down" password "deinPassword" with administrator privileges

zum Anschalten eben das down durch up ersetzen.
Das ist zwar nicht genau das selbe wie den Haken zu entfernen, aber könnte trotzdem gehen...

Sollte das nicht gehen, müsstest Du die Frage noch mal im Unix-Forum stellen, ob man mit ifconfig oder einem anderen CL-Tool das ganz abschalten kann.



Ansonsten müsste man es mit GUI-Scripting machen...

Gruß Andi


Hallo Andi,

danke für den Tip aber er klappt nicht...oder ich verstehe nicht richtig was ich machen soll. Gibt es andere Vorschläge? :( Ich hab leider echt keine Ahnung von Apple-Script


pp.
 
...

Hallo pixelpunk,

diese Zeile:

Code:
do shell script "sudo ifconfig en2 down" password "deinPassword" with administrator privileges

in den Scripteditor einfügen und deinPassword durch das Adminpassword ersetzen. Dann klickst Du auf ausführen und ziehst den Stick ab. Wenn das geht, kannst Du es als Programm abspeichern. Um den Stick zu benutzen ersetzt Du down durch up und sicherst das auch als Programm.

Was hast Du denn genau gemacht? Gibt es weiterhin eine Kernelpanic?

Gruß Andi
 
Hallo Andi,

also das Script schaltet zwar en2 ab, macht sich dann durch die fehlende Verbindung zum Internet benerkbar, aber leider kommt es wieder zu einer Kernel-Panic beim Herausziehen des Sticks.


Gruß pp. :(
 
...

Hallo pixelpunk,

mach doch nicht so ein bedröppeltes Gesicht.

Du stellst Dir zwei Netzwerk-Umgebungen ein. Einmal en2 aktiv und einmal en2 inaktiv. Dann kannst Du Dir für jede Umgebung einen shortcut zuweisen. 10.4.5 geht.
Systemeinstellungen/Tastatur & Maus/Tastatur-Kurzbefehle -> Alle Programme -> + -> Umgebungsname eintragen und einen Kurzbefehl wählen - z.B ctrl-esc und ctrl-alt-esc

Falls Du ein älteres System verwendest, bei dem der shortcut zwar angezeigt wird aber nicht funktioniert, kannst Du auch mit AppleScript umschalten.

do shell script "scselect Umgebung1"

oder

do shell script "scselect Umgebung2"

(Umgebung1/2 auf Deine Umgebungen umändern)

Eine Möglichkeit die Umgebung abzufragen habe ich leider nicht gefunden, sodass man es in ein Skript einfügen könnte.

Du kannst aber auch die Umgebungen im Apfelmenü ändern...

Gruß Andi
 
Nein eigentlich wollte ich gar kein betröppeltes Gesicht machen. :eek:
Es gab nur schon wieder eine Kernel-Panic. Jetzt versuche ich mal Deinen neuen Tip. Vielen Dank übrigens für Deine Hilfe...
Gleich mehr!


pp.
 
Oh nein, leider klappt das auch nicht ganz.
Also, es funktioniert ganz wunderbar, wenn ich die zweite, neue Umgebung in den Systemeinstellungen mit "jetzt anwenden" auswählen. Versuche ich das aber über das Script oder über das Apfelmenü, schaltet er zwar wie bei
do shell script "sudo ifconfig en2 down" password "deinPassword" with administrator privileges
en2 ab, also keine Verbindung mehr zum Internet. Aber es hat trotzdem nicht den gleichen Effekt wie als würde ich es manuell machen. (Kernel-Panic ;) )


Grüße pp.
 
...

Hallo pixelpunk,

jetzt mach ich das Gesicht ;)

Das Ganze hat jetzt mittlerweile nur noch am Rande mit AppleScript zu tun.

Noch ein Schuß ins Blaue:

do shell script "sudo ifconfig en2 down" password "deinPassword" with administrator privileges
do shell script "sudo kextunload /System/Library/Extensions/Intersil\ Prism2.kext"
do shell script "sudo kextunload /System/Library/Extensions/IntersilBase.kext"
display dialog "Bitte DWL-122 entfernen." buttons {"OK"} default button 1
do shell script "sudo ifconfig en2 up"

Also die erste Zeile deaktiviert die Schnittstelle
und die beiden nächsten würden den Treiber deaktivieren.
4. Zeile fordert zum Enfernen auf
Dann wird die Schnittstelle wieder aktiv, damit beim erneuten anstecken die Kernelextensions wieder geladen werden.

Vielleicht probierst Du es vorher mal im Terminal aus. Falls eine Rückmeldung kommt.

also

sudo ifconfig en2 down (return)
das Password eingeben (wird nicht angezeigt, return)
sudo kextunload /System/Library/Extensions/Intersil\ Prism2.kext (return)
sudo kextunload /System/Library/Extensions/IntersilBase.kext (return)

Dann versuchen den Stick zu entfernen...

falls keine panic

sudo ifconfig en2 up (return)

Den Stick anstecken und schauen ob er wieder geht.

Ansonsten müsstest Du die Frage wirklich hier im UNIX-Forum nochmals stellen mit einem link nach hier...

Gruß Andi
 
Hallo Andi,

ich hoffe ich fange nicht an zu nerven. :)
Also ins Terminal eingeben passiert folgendes,

Last login: Wed Mar 22 12:58:19 on console
Welcome to Darwin!
titanotron:~ pixelpunk$ sudo ifconfig en2 down
Password:
titanotron:~ pixelpunk$ sudo kextunload /System/Library/Extensions/Intersil\ Prism2.kext
kextunload: unload kext /System/Library/Extensions/Intersil Prism2.kext failed
titanotron:~ pixelpunk$ sudo kextunload /System/Library/Extensions/IntersilBase.kext
kextunload: unload kext /System/Library/Extensions/IntersilBase.kext succeeded
titanotron:~ pixelpunk$ sudo ifconfig en2 up
ifconfig: interface en2 does not exist
titanotron:~ pixelpunk$

Danach konnte ich den Stick abziehen. Ich habe aber gesehen das der Treiber "Intersil Prism2.kext" nicht deaktiviert wurde. Machte aber scheinbar nichts. Beim einstecken des Sticks funktionierte er aber leider nicht mehr. Ich habe auch versucht mit "sudo kextload /System/Library/Extensions/IntersilBase.kext" den Treiber wieder zu laden. Das hat aber geklappt. Bei "sudo kextload /System/Library/Extensions/Intersil\ Prism2.kext" bekam ich allerdings die Meldung Intersil Prism2.kext sei bereits aktiv. Nach einem Neustart funktionierte dann aber wieder alles...

pp.
 
...

Hallo pixelpunk,

Teilerfolg ;) - wieso nerven...

probier mal:

sudo ifconfig en2 down
Password:
sudo kextunload /System/Library/Extensions/IntersilBase.kext

Dann versuchen den Stick zu entfernen...

falls keine panic

Den Stick anstecken
sudo kextload /System/Library/Extensions/IntersilBase.kext
sudo ifconfig en2 up

schauen ob er wieder geht.

Gruß Andi
 
Hihi, diesmal nach der Eingabe von,

sudo ifconfig en2 down
Password:
sudo kextunload /System/Library/Extensions/IntersilBase.kext

gab es beim rausziehen keinen grauen Schirm. Der Rechner ist einfach eingefroren aber die Musik lief weiter...mmmh
komisch ist das schon. Es scheint aber keine "richtige" Kernel-Panik zu sein, da sie im panic.log nicht verzeichnet ist. Da steht nur die letzte von 12:58.
Allerdings habe ich diesesmal genau das gleiche gemacht wie beim letzten Terminalversuch. Nur die Zeile mit dem unload von "Intersil\ Prism2.kext" fehlte. Ach so panic.log sagt:
Wed Mar 22 12:58:32 2006


Unresolved kernel trap(cpu 0): 0x300 - Data access DAR=0x0000000000000001 PC=0x00000000274F9BA8
Latest crash info for cpu 0:
Exception state (sv=0x27AAF500)
PC=0x274F9BA8; MSR=0x00009030; DAR=0x00000001; DSISR=0x42000000; LR=0x275110CC; R1=0x124FBB40; XCP=0x0000000C (0x300 - Data access)
Backtrace:
0x02E0F800 0x003D0000 0x27501438 0x274F7EEC 0x2750B7D4 0x274F0D48
0x002D2884 0x0003C744 0x000A9894
Kernel loadable modules in backtrace (with dependencies):
com.Intersil.prism2(1.4.7)@0x274eb000
dependency: com.apple.iokit.IOUSBFamily(2.2.8)@0x43a000
dependency: com.apple.iokit.IONetworkingFamily(1.5.0)@0x62b000
dependency: com.apple.iokit.IOPCCardFamily(1.6.1)@0x90e000
Proceeding back via exception chain:
Exception state (sv=0x27AAF500)
previously dumped as "Latest" state. skipping...
Exception state (sv=0x27B5A000)
PC=0x00000000; MSR=0x0000D030; DAR=0x00000000; DSISR=0x00000000; LR=0x00000000; R1=0x00000000; XCP=0x00000000 (Unknown)

Kernel version:
Darwin Kernel Version 8.5.0: Sun Jan 22 10:38:46 PST 2006; root:xnu-792.6.61.obj~1/RELEASE_PPC
panic(cpu 0 caller 0xFFFF0003): 0x300 - Data access
Latest stack backtrace for cpu 0:
Backtrace:
0x00095718 0x00095C30 0x0002683C 0x000A8384 0x000ABD00
Proceeding back via exception chain:
Exception state (sv=0x27AAF500)
PC=0x274F9BA8; MSR=0x00009030; DAR=0x00000001; DSISR=0x42000000; LR=0x275110CC; R1=0x124FBB40; XCP=0x0000000C (0x300 - Data access)
Backtrace:
0x02E0F800 0x003D0000 0x27501438 0x274F7EEC 0x2750B7D4 0x274F0D48
0x002D2884 0x0003C744 0x000A9894
Kernel loadable modules in backtrace (with dependencies):
com.Intersil.prism2(1.4.7)@0x274eb000
dependency: com.apple.iokit.IOUSBFamily(2.2.8)@0x43a000
dependency: com.apple.iokit.IONetworkingFamily(1.5.0)@0x62b000
dependency: com.apple.iokit.IOPCCardFamily(1.6.1)@0x90e000
Exception state (sv=0x27B5A000)
PC=0x00000000; MSR=0x0000D030; DAR=0x00000000; DSISR=0x00000000; LR=0x00000000; R1=0x00000000; XCP=0x00000000 (Unknown)

Kernel version:
Darwin Kernel Version 8.5.0: Sun Jan 22 10:38:46 PST 2006; root:xnu-792.6.61.obj~1/RELEASE_PPC

*********



Grüße pp.
 
...

Hallo pixelpunk,

was passiert denn, wenn Du die Zeile

sudo ifconfig en2 down

weg lässt und dann versuchst beide .kext zu deaktivieren?

scheint ja an dem Intersil Prism2.kext zu hängen.

Gruß Andi
 
Hallo Andi,

mal wieder ne Kernel-Panic

nach
sudo kextload /System/Library/Extensions/IntersilBase.kext
hab ich
sudo kextload /System/Library/Extensions/Intersil\ Prism2.kext

mit dem Drücken von Enter PANIC!! (diesmal ohne rausziehen)
Ach man ich glaube das Ganze ist ziemlich knifflig...
Wed Mar 22 16:50:29 2006


Unresolved kernel trap(cpu 0): 0x300 - Data access DAR=0x0000000000000014 PC=0x00000000002B9358
Latest crash info for cpu 0:
Exception state (sv=0x27888500)
PC=0x002B9358; MSR=0x00009030; DAR=0x00000014; DSISR=0x40000000; LR=0x002B934C; R1=0x1262BBF0; XCP=0x0000000C (0x300 - Data access)
Backtrace:
0x002B934C 0x002B93EC 0x002C0A70 0x002C0B40 0x002E8720 0x0008B020
0x000291C0 0x000233AC 0x000AC02C 0x093C6B65
Proceeding back via exception chain:
Exception state (sv=0x27888500)
previously dumped as "Latest" state. skipping...
Exception state (sv=0x278AD000)
PC=0x9000B1E8; MSR=0x0000F030; DAR=0xA0A68DB8; DSISR=0x40000000; LR=0x9000B13C; R1=0xF007FDC0; XCP=0x00000030 (0xC00 - System call)

Kernel version:
Darwin Kernel Version 8.5.0: Sun Jan 22 10:38:46 PST 2006; root:xnu-792.6.61.obj~1/RELEASE_PPC
panic(cpu 0 caller 0xFFFF0003): 0x300 - Data access
Latest stack backtrace for cpu 0:
Backtrace:
0x00095718 0x00095C30 0x0002683C 0x000A8384 0x000ABD00
Proceeding back via exception chain:
Exception state (sv=0x27888500)
PC=0x002B9358; MSR=0x00009030; DAR=0x00000014; DSISR=0x40000000; LR=0x002B934C; R1=0x1262BBF0; XCP=0x0000000C (0x300 - Data access)
Backtrace:
0x002B934C 0x002B93EC 0x002C0A70 0x002C0B40 0x002E8720 0x0008B020
0x000291C0 0x000233AC 0x000AC02C 0x093C6B65
Exception state (sv=0x278AD000)
PC=0x9000B1E8; MSR=0x0000F030; DAR=0xA0A68DB8; DSISR=0x40000000; LR=0x9000B13C; R1=0xF007FDC0; XCP=0x00000030 (0xC00 - System call)

Kernel version:
Darwin Kernel Version 8.5.0: Sun Jan 22 10:38:46 PST 2006; root:xnu-792.6.61.obj~1/RELEASE_PPC
*********

Gruß pp.
 
...

Hallo pixelpunk,

also machen wir es halt über das GUI Scripting.
Systemeinstellungen/Bedienungshilfen den Zugriff auf Hilfsgeräte aktivieren. Zwei Umgebungen sind nötig. (Das spart einen Haufen Code und man muss nicht das Schloss öffnen)

Code:
property Stick : 1
if Stick = 1 then
	tell application "System Preferences"
		set current pane to pane "com.apple.preference.network"
	end tell
	
	tell application "System Events"
		tell process "System Preferences"
			tell window "Netzwerk"
				click pop up button 1
				click menu item 2 of menu 1 of pop up button 1
				delay 2
				click button "Jetzt anwenden"
			end tell
		end tell
	end tell
	
	tell application "System Preferences" to quit
	
	display dialog "Stick Entfernen" buttons {"OK"} default button 1
	set Stick to 0
else
	
	tell application "System Preferences"
		set current pane to pane "com.apple.preference.network"
	end tell
	
	tell application "System Events"
		tell process "System Preferences"
			tell window "Netzwerk"
				click pop up button 1
				click menu item 1 of menu 1 of pop up button 1
				delay 2
				click button "Jetzt anwenden"
			end tell
		end tell
	end tell
	
	tell application "System Preferences" to quit
	display dialog "Stick Anstecken" buttons {"OK"} default button 1
	set Stick to 1
end if

Umgebung2 ist ohne en2
Umgebung1 mit en2
Das Skript startet mit dem Stick dran. Bei nochmaligem Aufruf, wird wieder Umgebung 1 gewählt und Du kannst den Stick wieder anstecken. Dann läuft es wieder mit Stick dran usw..

Gruß Andi

PS: der Stick baumelt aber nicht an einem 5m USB-Kabel aus dem Autofenster und die panics werden durch das zu lange Kabel verursacht? ;)
 
Andi schrieb:
PS: der Stick baumelt aber nicht an einem 5m USB-Kabel aus dem Autofenster und die panics werden durch das zu lange Kabel verursacht? ;)


Hihi, der Stick hängt zwar an einem 5m Kabel, das macht aber keinen Unterschied. Das Problem ist nur das Rausziehen und nicht die Länge. In diesem Falle passiert nämlich das Gleiche mit einem kürzeren Kabel und im Auto hängt er auch nicht. Ich bin aber, abgesprochener Weise versteht sich :D, im Funknetz der Nachbarn unterwegs. Und leider reicht die blöde interne Karte vom PB nicht aus vernüftig zu surfen und der Vermieter weigert sich den auf ihn laufenden Telefonvertrag mit ADSL zu erweitern. Italien halt :rolleyes:
So jetzt teste ich gleich mal Deinen neuen Vorschlag...


pp.
 
Zuletzt bearbeitet:
Hallo Andi,

tausend Dank!! Es klappt und ist dazu noch ne elegante Lösung.
Solltest Du bis Ende Juli mal nach Rom kommen spendiere ich Dir
ein Eis. ;)


Juchu


pp.
 
Zurück
Oben Unten