Remote-Herunterfahren von Ubuntu auf Lan mit einem Mac AppleScript

Sep 09 2020

Der Versuch, den Ubuntu-Computer auf demselben LAN mit einem Mac-Computer per Fernzugriff herunterzufahren. Wenn ich Terminal auf einem Mac öffne, kann ich Ubuntu herunterfahren, indem ich ssh [email protected] benutze, dann das Passwort eingebe, dann sudo poweroff eingebe und das Passwort erneut eingebe. Das funktioniert.

Das Problem ist, dass ich dies mit Mac Applescript tun muss. (So ​​kann ich ein Kalenderereignis erstellen und es zu einer bestimmten Tageszeit ausführen lassen, nachdem die Sicherungen abgeschlossen wurden.)

HINWEIS: Ich habe erfolgreich ein Applescript erstellt, mit dem Wakeonlan das Ubuntu zu einer bestimmten Tageszeit einschaltet:

tell application "Terminal"
    set currentTab to do script
    ("ssh [email protected];")
    delay 6
    --//password
    do script ("~/bin/wakeonlan 00:11.22.33.44.55")
    
end tell

Dies funktioniert gut, sendet den Wakeonlan und startet Ubuntu, aber ich kann nicht herausfinden, wie ich das gleiche mit dem SHUTDOWN Ubuntu-Computer machen kann? Ich habe so ziemlich alles versucht? Alle Beiträge, die ich finde, zeigen nur, wie dies vom Ubuntu-Terminal aus gemacht wird, NICHT von Mac AppleScript, das im Mac-Terminal abgelegt ist.

Antworten

1 Frobozz Sep 12 2020 at 15:26

Wenn Sie versuchen, dies alles über ein Apple-Skript zu tun, scheint der Kommentar „Katzen“ auf den Punkt zu kommen: Sie benötigen ein Apple-Forum.

Aber es scheint mir, dass Ihr eigentliches Problem darin besteht, zu vermeiden, dass Sie nach Passwörtern gefragt werden. Und genau zu diesem Zweck wurde ssh-copy-id erfunden. Wenn Sie bereit sind, es zu versuchen ...

Auf dem Ziel-Ubuntu-Host:

Erstellen Sie zu diesem Zweck einen dedizierten Benutzer

sudo adduser --force-badname SandMan

Bearbeiten Sie als Nächstes / etc / sudoers, damit SandMan "sudo / sbin / shutdown ..." unangefochten ausführen kann.

sudo visudo

(Dies öffnet standardmäßig "nano" als Editor - Sie müssen sich selbst durchwühlen; ich ändere alle meine auf vi.) Fügen Sie am Ende vor der Includeir-Direktive Folgendes ein:

%SandMan ALL=NOPASSWD: /sbin/shutdown

Speicher die Datei

Sie sollten sich jetzt mit dem SandMan-Benutzer bei Ihrem Host anmelden und ausführen können, sudo /sbin/shutdown --helpohne nach dem Kennwort gefragt zu werden .

Um das Herunterfahren direkt über das Fenster Ihres MAC-Terminals auszuführen, versuchen Sie (von Ihrem MAC-Terminal aus):

ssh-keygen -t rsa -b 2048 -f ~/.ssh/SandMan_rsa
ssh-copy-id -i ~/.ssh/SandMan_rsa [email protected]

Dies ist eine gute Syntax für Ubuntu 20.04, aber ich bin nicht sicher, ob dies auf dem MAC ohne Änderungen funktioniert. Wenn es jedoch funktioniert, sollten Sie in der Lage sein, Ihr Ziel vom MAC-Terminal herunterzufahren mit:

ssh -i ~/.ssh/SandMan_rsa [email protected] /sbin/shutdown -h now

N.T. Sep 13 2020 at 22:12

Ich habe es endlich herausgefunden. Folgendes funktioniert:

tell application "Terminal"
  activate
  do script ("ssh [email protected]")
  delay 6
  do script "password" in front window
  delay 7
  do script "sudo poweroft” in front window
  delay 5
  do script "password" in front window
end tell