Kleines Shellscript zum ändern des Hibernatemodes

Dieses Thema im Forum "Mac OS X" wurde erstellt von faJa, 20.03.2007.

  1. faJa

    faJa Thread Starter MacUser Mitglied

    Beiträge:
    766
    Zustimmungen:
    23
    MacUser seit:
    02.11.2005
    Ich hab heute mal ein kleines Shellscript geschrieben um den Hibernatemode zu switchen. Interessant sind für mich gewesen 0 (schnell aber unsicher) und 3 (langsam aber sicher).
    Ich habe es ab und an gerne das mein MacBook Pro schnell einschlafen soll, daher switche ich vorher in den schnellen Modus und ggfs. wieder zurück (wenn ich keine Steckdose parat habe).

    Ist vielleicht für diejenigen Interessant die sich den Befehl nicht immer merken wollen:

    Code:
    # Script switches between Hibernatemode 0 (fast but unsafe) and 3 (slow but safe).
    
    P0=$0
    P1=$1
    CSTATE=`pmset -g | grep hibernatemode | awk {'print $2'}`
    
    IFS_DEF=$IFS
    IFS="/"
    for i in $P0; do
        NAME=$i
    done
    IFS=$IFS_DEF
    
    if [[ $P1 == "-s" ]]; then
        if [[ $CSTATE -eq 3 ]]; then
            sudo pmset -a hibernatemode 0
            echo "Hibernatemode switched from $CSTATE to 0"
            exit
        fi
        if [[ $CSTATE -eq 0 ]]; then
            sudo pmset -a hibernatemode 3
            echo "Hibernatemode switched from $CSTATE to 3"
            exit
        fi
    else
        echo "Hibernatemode is set to $CSTATE"
        echo "Type '$NAME -s' to switch"
    fi
    
    Viel Spaß damit!
     
    Zuletzt bearbeitet: 20.03.2007
  2. Isegrim242

    Isegrim242 MacUser Mitglied

    Beiträge:
    3.154
    Zustimmungen:
    264
    MacUser seit:
    21.07.2005
    ...schöne Sache, da gibt's doch aber auch schon ein widget.
     
  3. faJa

    faJa Thread Starter MacUser Mitglied

    Beiträge:
    766
    Zustimmungen:
    23
    MacUser seit:
    02.11.2005
    Geschmackssache, ich habe für sowas gerne Shellskripte - da weiß ich wenigstens was sie machen :) Das Widget hatte ich auch einmal genutzt und dann nie wieder - kam per Widget nicht mehr aus dem Deepsleep Modus raus.

    Vielleicht hat der eine oder andere ja Verwendung dafür.
     
  4. Besimo

    Besimo MacUser Mitglied

    Beiträge:
    316
    Zustimmungen:
    18
    MacUser seit:
    29.10.2006

    Hi!

    Ich habe das Ganze jetzt mal unter Leopard versucht, aber leider gibt mir AppleScript einen Fehler bezüglich des ersten $ aus.
    Hast Du eine Idee, was man da machen kann?
    Ich würde Dein Script nämlich sehr gern nutzen!

    [​IMG]
     

    Anhänge:

  5. Rajmund

    Rajmund MacUser Mitglied

    Beiträge:
    540
    Zustimmungen:
    58
    MacUser seit:
    15.04.2006
    Das ist kein AppleScript, sondern eins für die bash, aufrufbar also im Terminal.

    Wenn man als erste Zeile noch

    Code:
    #!/bin/bash
    sowie danach ne Leerzeile einfügt, sodann die Datei mit dem Befehl

    Code:
    chmod u+x Dateiname
    
    ausführbar macht, ruft man es im Terminal mit

    Code:
    ./Dateiname -s
    
    auf (vorausgesetzt, man befindet sich in dem Verzeichnis, wo das Skript liegt).
     
  6. wegus

    wegus MacUser Mitglied

    Beiträge:
    14.713
    Zustimmungen:
    1.348
    MacUser seit:
    13.09.2004
    für mich sieht das auch eher nach einem Bash-Script aus! :)
     
  7. faJa

    faJa Thread Starter MacUser Mitglied

    Beiträge:
    766
    Zustimmungen:
    23
    MacUser seit:
    02.11.2005
    Es ist in der Tat ein Bash Script.

    Allerdings funktioniert es auch wunderbar ohne "#!/bin/bash" am Anfang.

    Das Skript kann man auch Global aufrufen, egal wo man sich befindet. Dafür gibt es mehrere Möglichkeiten:

    a) das Skript muss nach /bin kopiert und ausführbar gemacht werden
    b) sich selbst ein .sbin Verzeichnis im Homeverzeichnis anlegen, dort das Skript ablegen und die PATH Variable dementsprechend anpassen.

    Es ist auch Leopard erprobt, bei mir verrichtet es wunderbar seinen Dienst.

    Bei Fragen schießt los.

    Hier die aktuellste Version von mir, mit kleinen Änderungen:

    Code:
    #!/bin/bash
    
    # Script switches between Hibernatemode 0 (fast but unsafe) and 3 (slow but safe).
    
    P0=$0
    P1=$1
    CSTATE=`pmset -g | grep hibernatemode | awk {'print $2'}`
    
    IFS_DEF=$IFS
    IFS="/"
    for i in $P0; do
        NAME=$i
    done
    IFS=$IFS_DEF
    
    if [[ $P1 == "-s" ]]; then
        if [[ $CSTATE -eq 3 ]]; then
            sudo pmset -a hibernatemode 0
            echo "Hibernatemode switched from $CSTATE to 0"
            exit
        fi
        if [[ $CSTATE -eq 0 ]]; then
            sudo pmset -a hibernatemode 3
            echo "Hibernatemode switched from $CSTATE to 3"
            exit
        fi
    else
        echo ""
        echo "Hibernatemode is set to $CSTATE"
        echo "Type '$NAME -s' to switch"
        echo ""
        echo "--------------- MODES ---------------"
        echo "0: fast, unsafe in case of powerloss"
        echo "3: slow, safe in case of powerloss"
        echo ""
     
    Zuletzt bearbeitet: 30.10.2007
  8. Besimo

    Besimo MacUser Mitglied

    Beiträge:
    316
    Zustimmungen:
    18
    MacUser seit:
    29.10.2006
    Um es "umständlicher" zu machen, könnte ich das Ganze auch via Automator lösen, indem ich in Automator "Shell-Skript ausführen" wähle und dort dann Dein Skript einfüge, oder?
    Ich würde das Ganze dann als kleines Programm speichern...
     
  9. faJa

    faJa Thread Starter MacUser Mitglied

    Beiträge:
    766
    Zustimmungen:
    23
    MacUser seit:
    02.11.2005
    Wäre eine Idee, müsstest Du mal ausprobieren.
    Das Shellskript müsste dann nur mit dem Parameter '-s' gestartet werden, damit er den Status wechselt.

    Einen Nachteil hat die Sache dann natürlich, Du kannst nicht "mal eben" abfragen auf welchem Status der Hibernatemode gerade steht.
     
Die Seite wird geladen...

Diese Seite empfehlen