Kleines Shellscript zum ändern des Hibernatemodes

faJa

Aktives Mitglied
Thread Starter
Dabei seit
02.11.2005
Beiträge
774
Reaktionspunkte
23
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:
  • Gefällt mir
Reaktionen: Besimo
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.
 
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!


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!

attachment.php
 

Anhänge

  • Skripteditor.jpg
    Skripteditor.jpg
    27,2 KB · Aufrufe: 193
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).
 
für mich sieht das auch eher nach einem Bash-Script aus! :)
 
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:
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...
 
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.
 
Zurück
Oben Unten