Script zum aus/einschalten eines Netzwerkports?

Dieses Thema im Forum "Scripting und Automatisierung" wurde erstellt von pixelpunk, 21.03.2006.

  1. pixelpunk

    pixelpunk Thread Starter MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    2
    MacUser seit:
    16.06.2004
    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.
     
  2. Andi

    Andi MacUser Mitglied

    Beiträge:
    7.848
    Zustimmungen:
    653
    MacUser seit:
    16.05.2002
    ...

    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
     
  3. pixelpunk

    pixelpunk Thread Starter MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    2
    MacUser seit:
    16.06.2004

    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.
     
  4. Andi

    Andi MacUser Mitglied

    Beiträge:
    7.848
    Zustimmungen:
    653
    MacUser seit:
    16.05.2002
    ...

    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
     
  5. pixelpunk

    pixelpunk Thread Starter MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    2
    MacUser seit:
    16.06.2004
    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. :(
     
  6. Andi

    Andi MacUser Mitglied

    Beiträge:
    7.848
    Zustimmungen:
    653
    MacUser seit:
    16.05.2002
    ...

    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
     
  7. pixelpunk

    pixelpunk Thread Starter MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    2
    MacUser seit:
    16.06.2004
    Nein eigentlich wollte ich gar kein betröppeltes Gesicht machen. :o
    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.
     
  8. pixelpunk

    pixelpunk Thread Starter MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    2
    MacUser seit:
    16.06.2004
    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
    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.
     
  9. Andi

    Andi MacUser Mitglied

    Beiträge:
    7.848
    Zustimmungen:
    653
    MacUser seit:
    16.05.2002
    ...

    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
     
  10. pixelpunk

    pixelpunk Thread Starter MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    2
    MacUser seit:
    16.06.2004
    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.
     
Die Seite wird geladen...