Benötigen Sie Hilfe beim Einrichten eines Skripts zum Ändern von Datum und Uhrzeit in Mac OS Catalina

in der Hoffnung, dass jemand dabei helfen kann. Ich versuche, ein Automator-Terminalskript in Mac OS Catalina zu schreiben, das WLAN ausschaltet, automatische Datums- und Uhrzeiteinstellungen deaktiviert und meinen Mac auf ein bestimmtes Systemdatum und eine bestimmte Uhrzeit einstellt. Ich habe wirklich keine Programmiererfahrung, aber was ich bisher habe, funktioniert, um WLAN auszuschalten und das Datum und die Uhrzeit des Systems zu ändern ... aber das Skript wird im Automator nicht beendet ... es dreht sich einfach weiter. Sie sind sich nicht sicher, wie Sie den Befehl Sudo -S beenden können, sobald er das Systemdatum und die Systemzeit eingestellt hat. Hier ist, was ich bisher habe:

networksetup -setairportpower en0 off

echo "password" | sudo -S date 0101000120

Das schaltet also das WLAN aus und gibt mein Passwort weiter (kann auch über einen Dialog erfolgen, aber das ist nicht mein Problem) und stellt das Systemdatum ein ... dann dreht sich das Automator-Rad einfach ....

  1. Irgendwelche Ideen, wie man das Terminal-Skript beendet und zum nächsten Befehl übergeht ... oder sollte ich es einfach ausführen und dann das Skript beenden, da es sich dreht, was nicht ideal ist, aber auch funktioniert
  2. Befehl zum Ein- und Ausschalten der automatischen Aktualisierung von Datum und Uhrzeit des Mac-Systems?

Vielen Dank fürs Lesen und jede Hilfe sehr zu schätzen.

BEARBEITEN: Derzeit die Automator-Aufgabe neu geschrieben, um den Terminalbefehl auszuführen, nach einem Passwort fragen und das dann weitergeben:

networksetup -setairportpower en0 off pw="$(osascript -e 'Tell application "System Events" to display dialog "Password:" default answer "" with hidden answer' -e 'text returned of result' 2>/dev/null)" && / echo "$pw" | sudo -S date 0101000120

Das Rad dreht sich am Ende immer noch in einer Endlosschleife, aber ich kann darauf klicken und einen Stopp erzwingen. Jeder kennt einen Weg, um es einfach zu stoppen, es zu schätzen!

echosendet die Ausgabe an die Konsole. Eine Passwortabfrage erwartet eine Eingabe . Der gesuchte Befehl ist expect. Das Ausschalten von WLAN und das Ändern der Systemzeit ist jedoch ein ziemlich seltsamer Arbeitsablauf. Was versuchst du zu erreichen?
Ich führe ein Legacy-Programm von einer inzwischen nicht mehr existierenden Firma aus, die alte, aber sehr zuverlässige Geräte dort konfiguriert, wo ich arbeite (leider keine Software-Updates für ein Windows-Programm von 1998). Es wird nicht ausgeführt, wenn das Systemdatum in Parallelen nach einem bestimmten Datum liegt. Es ist nur ein Schmerz, manuell durch den Mac zu gehen und all diese Dinge manuell zu ändern, also versuche ich, es zu automatisieren ... hauptsächlich, damit ich nicht der einzige sein muss, der das booten kann!
Die Echo-Eingabeaufforderung sendet mein Passwort an das Terminal und akzeptiert es Echo schien zu liefern. Alles, was ich geschrieben habe, funktioniert gut, endet oder endet nicht nach dem Datum ... macht Echo das?
Tut mir leid, aber es fällt mir schwer, dir zu folgen. Sie verweisen auf ein Applescript, aber ich sehe nicht, wo Sie es aufrufen/referenzieren. Können Sie das Datum nicht auch einfach auf der VM selbst und nicht auf dem Host festlegen?
Danke Allan. AppleScript ist möglicherweise die falsche Terminologie. Ich verwende einen Terminalbefehl aus der Automator-Anwendung. Wenn Sie kopieren und einfügen, was ich für Code im ursprünglichen Post habe, werden Sie sehen, wie es funktioniert (ersetzen Sie einfach Ihr Systempasswort, wo ich "Passwort" habe) ... dann hängt es. Ich denke, das Problem ist, dass ich nicht weiß, wie ich den Befehl sudo -s beenden soll, und er scheint in einer Schleife zu stecken.
Laut Manpage von sudo erfordert -S ein Zeilenumbruchzeichen nach dem Passwort. Könnte es darauf warten?

Antworten (1)

Ich könnte dies zum Laufen bringen, indem ich das Passwort aus einer Datei an sudo weiterleite, anstatt echo zu verwenden:

sudo -S date 0101000120 < ~/passwd.txt

Ich bin mir nicht sicher, welche Auswirkungen dies auf die Sicherheit hat, aber es fühlt sich falsch an ...

Wenn Sie nach einer schnellen und schmutzigen Lösung suchen, ist dies der Fall. Gemäß dem Kommentar von nohillside finden Sie hier einige Anweisungen zum Ausführen von sudo-Befehlen, ohne dass ein Kennwort erforderlich ist . Diese Vorschläge funktionieren für mich auf Mojave in iTerm2 und Terminal.

Es hat ungefähr die gleichen Auswirkungen wie die Version in der Frage: Jeder, der Zugriff auf passwd.txt(oder auf die Automator-Datei für den in der Frage verwendeten Ansatz) hat, kann sich anschließend als Administrator anmelden. Könnte besser verwendet werden visudo, um die sudoers-Datei zu bearbeiten und passwortlosen sudo-Zugriff auf den dateBefehl für den bestimmten Benutzer zu ermöglichen.
OK danke. Ich fühle mich auch nicht wohl dabei, das PW in einer solchen Datei zu haben, und als ich es versuchte, funktionierte es auch, aber der Automator dreht das Rad nur in einer Endlosschleife. Also habe ich es geändert, um nach dem Passwort zu fragen und dieses dann an den Befehl Sudo -S weiterzugeben ... dann muss nur noch auf die Schaltfläche "Beenden" geklickt werden, damit der Automator aufhört, sich zu drehen. Immer noch schneller, als in die Einstellungen zu gehen und all dies zu ändern.
networksetup -setairportpower en0 off pw="$(osascript -e 'Tell application "System Events" to display dialog "Password:" default answer "password" with hidden answer' -e 'text returned of result' 2>/dev/null)" && / echo "$pw" | sudo -S date 0101000120
Kennt jemand eine einfache Möglichkeit, die automatische Aktualisierung von Datum und Uhrzeit zu deaktivieren? Was ich gefunden habe, ist, dass Parallelen wirklich gut darin sind, Datum und Uhrzeit zu finden und an Windows weiterzugeben, selbst wenn Sie es abwählen ... sobald das passiert, friert das Windows-Programm ein ...