Herunterfahren als Mac

Herunterfahren als Mac

Ich habe eine iPhone-App, mit der ich einen Mac-Computer aus der Ferne herunterfahren kann. Ich möchte, dass diese App meinen Ubuntu-Computer herunterfährt.

Beim Versuch, das Programm herunterzufahren, erhalte ich folgende Meldungen von der Anwendung:

Wenn Ubuntu ausgeschaltet ist:

"Verbindungsfehler"

Wenn Ubuntu eingeschaltet ist:

„zsh:1: Befehl nicht gefunden: osascript“

Das lässt mich glauben, dass die App tatsächlich auf zsh zugreifen kann. Und wenn ja: Sollte ich nicht in der Lage sein, einen Alias ​​für „osascript“ wie diesen zu erstellen:

alias osascript="shutdown -h now"

Das Problem ist, dass ich immer noch die Nachricht bekomme (in der iPhone-App):

„zsh:1: Befehl nicht gefunden: osascript“

Irgendwelche Ideen, warum? Ich vermute, dass die App SSH verwendet und denselben Benutzernamen wie der Alias ​​in Ubuntu verwendet.

Für Failsearch: Soll ich den Remote-Zugriffsbefehl in „.zsh_history“ sehen? Ich kann hier keinen Befehl aus der App sehen.

Antwort1

Verwenden Sie keine Apps, die Linux nicht unterstützen. „RMsrv Reboot“ funktioniert hervorragend beim Starten und Herunterfahren von Linux.

Antwort2

Die Fehlermeldung ist zumindest konsistent mit einem fehlgeschlagenen Versuch, einen Befehl direkt über auszuführen ssh, z. B. ssh someuser@somehost somecommand. Je nachdem, wie zshgestartet wird und in welche Konfigurationsdatei Sie den Alias ​​von der App einfügen, ist es möglich, dass er einfach nicht geladen wurde. Außerdem wird die Verlaufsdatei nur von interaktiven Sitzungen geschrieben (was eine „gute Sache™“ ist: Stellen Sie sich vor, jedes Zsh-Skript würde seinen Inhalt bei der Ausführung in Ihre Verlaufsdatei schreiben).


osascriptist der AppleScript-Kommandozeileninterpreter (dankfürQuadratfür den Hinweis). Daher ist es für Ubuntu nicht verfügbar. Aber es ist wahrscheinlich, dass die App ein kleines Skript über einen Befehlszeilenparameter ausführt, um den Mac herunterzufahren.

  • Wenn das Herunterfahren Ihres Rechners das Einzige ist, was Sie tun möchten, können Sie einfach ein Skript /usr/bin/osascriptauf Ihrem Ubuntu-Rechner platzieren, das ihn herunterfährt. Beispiel:

    #!/bin/sh
    sudo /sbin/shutdown -h now
    

    Dies setzt einen passwortlosen Zugriff auf mindestens voraus shutdown -h now. Sie können dies erreichen, indem Sie Ihrer /etc/sudoersoder einer darin enthaltenen Datei die folgende Zeile hinzufügen:

    YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
    
  • Wenn Sie auf verschiedene Befehle (Herunterfahren, Neustart usw.) reagieren möchten, können Sie versuchen, die Befehlszeilenparameter abzurufen, die die App dafür verwendet. Platzieren Sie dazu zunächst das folgende Skript mit dem Namen osascriptin /usr/bin(Theoretisch PATHsollte jeder in aufgeführte Pfad ausreichen. Leider sshverwendet es oft seine eigenen Einstellungen für PATH. Siehe unten.) auf Ihrem Ubuntu-Computer:

    #!/bin/sh
    logfile='/path/to/logfile'
    echo "$@" >> "$logfile"
    echo '---->8----' >> "$logfile"
    

    Vergessen Sie nicht, es ausführbar zu machen ( chmod 755 /usr/bin/osascript).

    Nun kannst du die verschiedenen Möglichkeiten durchgehen, die die App zu bieten hat und jedes Mal die Ausgabe im Logfile überprüfen ( tail -F /path/to/logfilekönnte helfen). Jetzt musst du nur noch die Unterschiede in den einzelnen Ausgaben finden und ein Skript schreiben, das entsprechend reagiert.


Wie oben erwähnt, sshkann seine eigenen Einstellungen für verwenden PATH, die sich möglicherweise stark von den Einstellungen unterscheiden, die Sie in Ihrer Terminalsitzung erhalten ( echo $PATH). Glücklicherweise können Sie die PATHvon verwendeten Einstellungen ganz einfach sshmit abrufen

    ssh localhost 'echo $PATH'

Wenn Sie dort /usr/local/sbinoder sehen /usr/local/bin, empfehle ich, das Skript dort zu platzieren, aber jedes aufgeführte Verzeichnis sollte ausreichen.

verwandte Informationen