Weckanzeige vom Terminal, allgemeines Wecken

20

Dies ist eine zweiteilige Frage. Eine praktische "How to" -Frage ist zuerst, und dann frage ich nach Konfigurationsvorschlägen.

Zuerst versetze ich meine Displays nachts in den Schlaf und möchte das Display aus der Ferne wecken können. Gibt es ein Befehlszeilenprogramm, mit dem ich es über SSH aktivieren kann? Ich weiß über WakeOnLan Bescheid, aber das scheint übertrieben.

Zweitens hat der Grund, warum ich mein Display aus der Ferne aktivieren möchte, damit zu tun, wie sich die Energiespareinstellungen von Lion geändert haben. Die Apple Infrarot-Fernbedienung weckt das Display nicht mehr. Dies ist ein riesiger Deal für ein Gerät, das ich ursprünglich als kombinierten Desktop- / Heimkino-PC gekauft habe, da es die Hälfte seines Zwecks zunichte macht. Hat jemand Ideen / Vorschläge, was er dagegen tun kann? Das ist offen, ich weiß.

anon
quelle

Antworten:

25

Der einfachste Weg, dies über SSH zu tun, ist die Verwendung caffeinate -u(verfügbar seit OS X 10.9, glaube ich), um Benutzeraktivitäten zu simulieren.

Fügen Sie die Flagge -t 5ein Timeout von 5 Sekunden angeben (sonst müssten Sie ctrl+ caus caffeinate, wie es scheint).

Asmus
quelle
1
dort gehen Sie ein (+) für Ihre Antwort, die niemand beachtet hat. Ich habe so viele von denen, bei denen Leute eine neuere Frage stellen, um nach einer Antwort zu suchen.
Ruskes
1
Laut der Manpage (in High Sierra) sind die 5 Sekunden ein Standardwert für die -uOption: Wenn mit
JJarava) angenommen
9

Sie können verwenden

pmset schedule wake "01/01/2012 20:00:00"

um einen schlafenden Bildschirm auf einem ansonsten "wachen" Mac aufzuwecken. Ersetzen Sie den Datums- / Zeitteil durch die aktuelle Uhrzeit.

wuc
quelle
9

Aufwachen: caffeinate -u -t 2

Schlafen: pmset displaysleepnow

Dermot
quelle
Schöne lösung! Ich habe es nie benutzt, caffeinateum das Display einzuschalten, aber ich denke, es funktioniert.
JMY1000
7

Aufwecken der Anzeige über die Befehlszeile

Versuchen Sie, ein AppleScript in der Befehlszeile auszuführen, um die Anzeige aus der Ferne zu aktivieren:

osascript -e 'tell application "System Events" to key code 123'

Dies simuliert das Drücken der Cursortaste und lässt Mac OS X 10 vermuten, dass ein Benutzer auf dem Computer aktiv ist.

Dieses AppleScript basiert auf der Antwort: Wie automatisiere ich das Drücken einer Taste in AppleScript?

Wecken des Displays nach dem Wecken mit der Fernbedienung

Wenn Sie Ihren Mac mit der Fernbedienung wecken und sich das Display nicht einschalten lässt, versuchen Sie Wake Assist . Es ist nicht für diese Situation konzipiert, könnte aber funktionieren.

Wake Assist simuliert einen Mausklick nach dem Aufwecken Ihres Mac. Die Maus wird zweimal oben links in der Hauptanzeige angeklickt. Der Wake-Assistent unternimmt nichts, wenn er einen Benutzer erkennt. Wenn der Computer jedoch aufwacht und sich im Leerlauf befindet, wird die Maus für Sie angeklickt.

Graham Miln
quelle
1
Das AppleScript-Ding hat bei mir nicht funktioniert. Ich bekomme ein schwarzes Bild, screencaptureobwohl ich ein paar Minuten gewartet habe.
lhf
Haben Sie schon andere simulierte Tastendrücke versucht - vielleicht reicht die Cursortaste nicht aus? Benötigen Sie ein Passwort für den Weckruf?
Graham Miln
1
Arbeitete gut für mich auf OS X 10.6
Claytron
3

wuc schrieb:

Sie können verwenden

pmset schedule wake "01/01/2012 20:00:00"

um einen schlafenden Bildschirm auf einem ansonsten "wachen" Mac aufzuwecken. Ersetzen Sie den Datums- / Zeitteil durch die aktuelle Uhrzeit.

Auf einem iMac aus dem Jahr 2008 mit 10.9.1 oder einem MacBook Air aus dem Jahr 2010 mit 10.9.2 funktionierte dies jedoch nicht. Ich bin mir nicht sicher, ob dies etwas mit dem Energiemanagement von Mavericks oder der Hardware zu tun hat, oder was.

Ich konnte es zum Laufen bringen, indem ich die Weckzeit auf 15 Sekunden in der Zukunft einstellte. Gelegentlich konnte ich es mit einer Einstellung von nur 12 oder 13 zum Laufen bringen, aber nicht zuverlässig. Es mag aber auch andere Faktoren geben, die ich damals nicht erkannt habe, aber 15 haben funktioniert, also habe ich 15 verwendet.

Aber wie rechnet man programmatisch 15 Sekunden in die Zukunft?

Ich habe das gdateaus dem GNU Coreutils-Paket verwendet ( datein OS X könnte dies möglich sein, aber wenn es möglich ist, weiß ich nicht wie, und ich hatte es bereitsgdate installiert):

[ dateanstelle von gdatealias set_wake_time = 'date "-v + $ {OFFSET} S" "+% D% T"']

Hier ist das Skript, das ich verwendet habe:

#!/bin/zsh -f

# how many seconds into the future we want to wake the display
# 15 seems to work reliably. YMMV.
OFFSET=15

# to calculate the time, we need `gdate`
alias set_wake_time='/usr/local/bin/gdate --date "+${OFFSET} sec" "+%m/%d/%g %H:%M:%S"'

# this is where we set the wake command
# if it doesn't succeed the script will exit immediately
/usr/bin/sudo /usr/bin/pmset schedule wake "`set_wake_time`" || exit 1

# if you were not testing this, you'd probably want to end at the
# next line. Just remove the leading '#'
#exit 0
#######################################################

### Everything below this line is only needed during testing ###

# this tells the display to sleep
# because we can test waking the screen up unless it's asleep
pmset displaysleepnow

# for testing purposes: now the script will pause for $OFFSET seconds
sleep $OFFSET

# For testing purposes:
# after $OFFSET seconds, this sound will play 3 times.
# by that time, the display should be awake
# I did this to help me know when I had set OFFSET too low

afplay /System/Library/Sounds/Glass.aiff

afplay /System/Library/Sounds/Glass.aiff

afplay /System/Library/Sounds/Glass.aiff

# script is done
exit 0

Alles nach dem '############################################## ######### 'kann nach Abschluss des Tests entfernt werden.

TJ Luoma
quelle
date -jv+15Swird den Trick der Berechnung des Datums 15 Sekunden in der Zukunft ab jetzt tun. Der -jSchalter verhindert, dass dateversucht wird, die Systemuhr einzustellen.
Mike
1
Der Befehl date -jv+15S "+%m/%d/%Y %H:%M:%S"stellt die 15 Sekunden in der Zukunft in das richtige Format für pmset.
Aaron D
Gemäß der Manpage zu OSX 10.10.3 pmset gibt es auch die Option 'pmset relative wake seconds'. Könnte sich auch lohnen, nachzuforschen.
JS.
1

Oh, wie ich wünschte, ich hätte genug Repräsentanten, um @ wucs Antwort das 10-fache, was es für dieses verrückend frustrierende Problem verdient, zu verbessern (oder zumindest in der Lage zu sein, einen einfachen Kommentar mit dem Lob zu hinterlassen, das es verdient).

Apple fügte in seiner paternalistischen Weisheit eine "Funktion" hinzu, die es absichtlich schwieriger machte, die Anzeige auf Lion und Mountain Lion zu wecken . Dies hat das Leben für diejenigen, die das Display aus der Ferne (mit IR-Fernbedienungen oder über VNC) für die Interaktion mit ihren Macs aktivieren möchten, erheblich erschwert. Aus irgendeinem Grund wurde dies mit OS X 10.8.2 deutlicher .

Verwenden pmset war eine wunderbare Umgehung für mich.

Schritt 1: Melden Sie sich mit auf dem Remote-Computer an ssh [email protected] (ersetzen Sie ihn durch einen entsprechenden Benutzernamen und eine IP-Adresse für den Remote-Mac).

Schritt 2: Wecken Sie das Display mit pmset schedule wake "06/27/2013 04:20:00"(mit einem geeigneten zukünftigen Datum Ihrer Wahl) auf.

D. Woods
quelle
Ich bin einverstanden und habe Ihre Antwort gerne gelesen, aber vielleicht überlegen Sie, ob Sie apple.stackexchange.com/help/how-to-answer .
DA Vincent
0

Option, wenn Sie gdate nicht verwenden möchten:

  • Aktivieren Sie SSHD (Remote Login) unter Systemeinstellungen, Freigabe
  • Aktivieren Sie "Wake for Network Access" in den Systemeinstellungen unter "Energy Saver"

Fügen Sie diesen Code in eine Datei wie 'wakeup.sh' in Ihrem Home-Ordner ein:

shopt -s expand_aliases
#NB: 7 is the waiting interval. Works for me. Increase as needed. 
alias myDate='date -v+7S "+%m/%d/%Y %H:%M:%S"'
echo MacBook will wake up at: `myDate`
echo yourMacPW | sudo -S pmset schedule wake "`myDate`"
  • Machen Sie es mit 'chmod + x wakeup.sh' ausführbar und geben Sie Ihr Passwort ein, wenn Sie möchten. Ansonsten lassen Sie das Echo und -S fallen.

Wenn Sie diesen Prozess automatisieren möchten, um von einem Windows-Computer aus zu arbeiten:

  • Holen Sie sich PuTTY und ein WakeOnLan-Kommandozeilen-Tool (zB Aquila auf SourceForge)
  • Erstellen Sie eine einzeilige Textdatei mit './wakeup.sh'
  • Schreiben Sie eine Batchdatei wie folgt:

    @echo off
    c:
    cd "C:\Program Files (x86)\Aquila Technology\WakeOnLAN"
    :tryAgain
    wakeonlanc.exe -w -mac 00:00:00:00:00:00
    ping 192.168.1.101 -n 1 | find "unreachable"
    if %ERRORLEVEL% EQU 0 GOTO tryAgain
    cd C:\putty
    putty.exe -ssh 192.168.1.101 -l yourUser -pw yourMacPW -m c:\putty\macWake.txt

Dinge, die Sie ändern müssen: Ihre IP-Adresse, Ihre MAC-Adresse, das Wort "nicht erreichbar" ist möglicherweise nicht das, was Sie erhalten - Sie erhalten möglicherweise eine Zeitüberschreitung. Das Speichern eines root-Passworts im Klartext ist natürlich keine gute Idee, aber so geht das ganz automatisch von Windows zu OSX.

gut gesprochener Mann
quelle