Remote-Herunterfahren von Ubuntu auf Lan mit einem Mac AppleScript
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
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
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