Script-Reichweite im System

MacMurdock

MacMurdock

Mitglied
Thread Starter
Dabei seit
21.09.2022
Beiträge
72
Reaktionspunkte
23
Morgen Forum

Ich habe ein paar prinzipielle Fragen über Scripts bzw. kleine Shell Programme (iMac)

  1. Kann ein Script bei Systemstart automatisch ausgefühert werden?
  2. Kann ein Script einen USB-Anschluss abfragen, und darin enthaltene Informationen in Variabeln packen, damit mittels dieser Information das Script dann die eine oder andere Entscheidung trifft?
  3. Kann ein Script auch auf Systemzustände reagieren?
  4. Kann ein Script Systemvariabeln auslesen?

Ich frage aus folgendem Grund

Wie in einem anderen Thread von mir bereits diskutiert und festgestellt, fehlt die Funktionalität vom iMac, bei gewissen Situationen der USV, den Rechner herunterzufahren.
Jetzt habe gesehen, dass die USV-Informationen dem iMac vorliegen.

In der Taskleiste oben befindet sich ein Akku-Symbol

  • Läuft die USV auf Netzbetrieb, wird der Akku mit einem Blitz darin angezeigt.
  • Läuft die USV auf Akkkubetrieb, wird in dem Akku kein Blitz angezeigt.

Das bedeutet das das Betriebssystem vom iMac sehr wohl erkennt, ob die USV auf Akku oder auf Netzbetrieb läuft. Hier möchte ich gerne ansetzen!

  • Gibt es hier eine Systemvariable wie Akku_Use= true / false ?
  • Wie kann man diese Information, die von der USV gesendet wird, abgreifen?
  • Oder wie kann man den USV-Zustand aus dem iMac System abgreifen?

Ich würde gerne eine Art Watchdog entwickeln, der bei Akkubetrieb nach 5min den iMac herunterfährt.
Sollte sich während des aktivierten Countdowns der Zustand ändern (Netzbetrieb wieder da), müsste die Countdownzeit sich resetten und das Programm geht wieder in den Überwachungsmodus.
Also in Abhängigkeit des Bildchens rechts oben in der Ecke (siehe die beiden Fotos im Anhang).

Wenn eine permanente Überwachung zu komplex wird, wäre ich auch zufrieden, wenn Akkumodus der USV detektiert wurde = in 5min shutdown.

Ich denke es ist besser, hier eine Notlösung zu schreiben, als auf Apple zu warten...

Das sind so meine Gedanken zu dem Thema...
Was meint Ihr dazu? Wie schätzt Ihr die Möglichkeiten ein, hier etwas selber zu entwickeln?

Gruss MacMurdock
 

Anhänge

  • 01_Leiste_im_Netzbetrieb.png
    01_Leiste_im_Netzbetrieb.png
    50,1 KB · Aufrufe: 70
  • 02_Leiste_im_Akkubetrieb.png
    02_Leiste_im_Akkubetrieb.png
    284,3 KB · Aufrufe: 68
Warum regelst du das nicht über die USV?
Die schickt doch eh das Shutdown Signal.
 
  • Gefällt mir
Reaktionen: mausfang
Hi

Die Daten über den Netz- oder Akkubetrieb kommen ja beim iMac an.
Die Daten über den Akkustand kommen ebenfalls beim iMac an.

Also wenn die USV ein Shutdown-Befehl schicken sollte, dann kommt dieser entweder nicht beim iMac an, oder er kommt an und wird nicht ausgewertet.
Da ich nicht der einzige bin, mit diesem Problem am iMac, und jetzt mindestens zwei verschiedene Hersteller nicht den iMac herunterfahren können (Eaton und APC),
denke ich nicht, dass der Fehler bei der USV zu suchen ist. Man muss hier händisch - notfalls mittels Script - dem iMac eins auf die Rübe geben...

Gruss MacMurdock
 
  • Gefällt mir
Reaktionen: mausfang
Ich denke ein Script wird hier nicht reichen, da du ja einen Run Loop brauchst, um auf Events zu reagieren.
Da wird wohl schon eine App her müssen, die die entsprechende API anspricht.

Ein Script kannst mit launchd natürlich auch alle paar Minuten oder Sekunden starten lassen.
 
  • Gefällt mir
Reaktionen: mausfang
Hi

Du sagst es...

Ich habe gehört, dass man eine freigeschaltete Entwicklermaschine benötigt, um selber Apps zu schreiben. Des weiteren seien einiges an Lizenzgebühren fällig, um überhaupt programieren zu können/dürfen.

Was ist an diesen Aussagen darn?
 
Du brauchst einen kostenpflichtigen Account, wenn du deine Programme über den Mac-AppStore verbreiten willst.
 
Hallo Schiffversenker

Aha, also sind Entwicklungen auf dem eigenen Gerät kostenfrei möglich?
 
Hi zusammen

Ich habe bei den Apps, die bei meinem iMac dabei waren einen Script-Editor gefunden.
Auch die App für das Terminalfenster. Ist mir als Linuxer nicht ganz unbekannt. (Den Befehl dir kennt er aber anscheinend nicht...)

Jetzt hätte ich eine Bitte

Gibt es denn irgendwo im Netz eine Seite oder Anleitung, welche Befehle mir auf dem iMac zur Verfügung stehen?
Also der Befehlssatz, die Syntax und vielleicht ein kleines Beispielprogramm analog zum “Hello-World“-Script bei php oder Phython oder Perl?

Ich möchte mich mal ein bischen damit beschäftigen...

Danke...

Gruss MacMurdock
 
waren einen Script-Editor gefunden.
Auch die App für das Terminalfenster. Ist mir als Linuxer nicht ganz unbekannt. (Den Befehl dir kennt er aber anscheinend nicht...)
Der Script-Editor kann verschiedene Script Sprachen ursprünglich eher für Apple-Script.

Dir ist kein posix befehl, eher windows behelf mit alias.
Und als Linuxer der GNU Tools gewöhnt ist, das hier sind die BSD Varianten mit teils anderen Parametern.
 
Hallo Schiffversenker

Aha, also sind Entwicklungen auf dem eigenen Gerät kostenfrei möglich?
Ja natürlich. Alles andere wäre ja eine echte Katastrophe.

Mit AppleScript - das wohl sowieso irgendwann mal „abgeschaltet“ werden soll, und mit Shellskripten hat man ja sowieso Programme, die man als Quellcode vorliegen hat und weitergeben kann, das ist sowieso eher nichts für den AppStore.

Ob es eine Liste der möglichen Befehle der beiden Sprachen gibt, weiß ich nicht, aber die mitgelieferten Shell-Kommandos kann man sich in den Libraries anschauen unter /bin und /sbin, und man kann zusätzliche installieren. Muß man halt im Netz suchen (und schauen, ob sie sich mit dem benutzten System vertragen). Manche der von Apple mitgelieferten UNI-Progrämmchen sind anscheinend auch ältere Versionen, da kann man sich die neueren laden.

Viele komplexeren UNIX-Programme lassen sich auch via Paketmanager wie MacPorts oder Homebrew installieren über das Terminal.
 
  • Gefällt mir
Reaktionen: MacMurdock und dg2rbf
Hallo,

dein Vorhaben lässt sich mit Bord-Mitteln realisieren.
Je nach Fantasie und Skript-Kenntnisse gibt es da verschiedene Wege...

folgender Befehl gibt dir den Status der USV zurück.
Code:
pmset -g batt
Dann mit einem angehängten grep Befehl nur die wichtigen Keywörter zurückgeben und falls die nicht vorkommen eine alternative Ausgabe festlegen.
Code:
pmset -g batt | grep 'UPS battery' || echo '1'
"UPS battery" ist hier nur als Beispiel benutzt... Da ich kein USV habe, kenne ich nicht den Wortlaut der pmset -g batt Ausgabe.

Mit einem -> Launch Agent kannst du das im Hintergrund abfragen und je nach ausgelesenem Status weitere Befehle ausführen.
Einen Countdown Zeitpunkt kannst du mit dem Befehl -> defaults in eine Einstellungsdatei schreiben, bei Bedarf überschreiben und auslesen.

Gruß
 
  • Gefällt mir
Reaktionen: ruerueka und MacMurdock
Warum regelst du das nicht über die USV?
Die schickt doch eh das Shutdown Signal.

Viele USVs fahren den Mac nicht herunter, obwohl man es in den Systemeinstellungen so konfiguriert. Bei 2 von mir getesteten USVs von APC ist das so
 
Viele USVs fahren den Mac nicht herunter, obwohl man es in den Systemeinstellungen so konfiguriert. Bei 2 von mir getesteten USVs von APC ist das so
Und lass mich raten, Apple und die USV Hersteller geben sich gegenseitig die Schuld?
 
  • Gefällt mir
Reaktionen: iQuaser
Oha, hier hat sich ja einiges getan...

So, lt. oneOeight gibt es dort verlinkt die App “Power Manager“ Kostet zwar ein bischen was, aber das ist egal. Die Frage ist, ob diese App auch mit dem M1-Chip funktioniert?
Wenn ja, bin ich gerne bereit Geld dafür aus zu geben. Gibr es da Leute, die mit Sicherheit sagen können, dass diese App mit M1 kompatibel ist?

Dann zum nächsten Punkt

Nach meinen Recherchen ist Xcode eine Laufzeitumgebung/Editor, um darin Programme zu schreiben.
Und “Swift“ soll die Programmiersprache für Apple schlechthin sein. Seht ihr das ebenso?

Wenn ja, würde ich mir Xcode und Swift herunterladen, damit ich wieder einmal ein bishen in die (Programmier-)Gänge komme...

Gruss MacMurdock
 
Habe den Befehl von varuna ausprobiert - der scheint zu funktionieren...
siehe Anhang. Einmal mit Netzversorgung und einmal ohne Netzversorgung/ nur über Akkubetrieb.

Das ist ja das verrückte. Die Angaben von der USV kommen alle im System an. Die sind verfügbar. Für meine Zwecke würde es ja schon reichen, wenn der iMac nach umschalten auf Akkubetrieb nach einer einstellbaren Zeit (z.B. 5Min) einfach selbstständig herunterfährt. Ich nehme an, das so ein Script über die erforderlichen Rechte verfügen muss, um den Rechner herunterfahren zu dürfen. Auch sollten Programme, die noch laufen, zwangsbeendet werden. Weil im Notfall ist keiner an der Tastatur, der irgendwelche Meldeboxen händisch bestätigen könnte.

Gruss MacMurdock
 

Anhänge

  • Ausgabe_mit_und_ohne_Netz.png
    Ausgabe_mit_und_ohne_Netz.png
    84,7 KB · Aufrufe: 66
Das ist ja das verrückte. Die Angaben von der USV kommen alle im System an. Die sind verfügbar. Für meine Zwecke würde es ja schon reichen, wenn der iMac nach umschalten auf Akkubetrieb nach einer einstellbaren Zeit (z.B. 5Min) einfach selbstständig herunterfährt.

Siehe hier: https://www.macuser.de/threads/mac-mini-m1-und-apc-backups-950.906837/#post-11629915

Die Infos hat der Mac alle, die Kommunikation passt. Aber der Rechner fährt nicht runter...
 
Hallo
Also wäre das in meinem Fall:

Bash:
pmset -g batt | grep 'discharging' || echo '1'

Ist das so richtig?

Ja, damit könnte man dann den nächsten Schritt starten.

Ich habe mir allerdings mal die von @oneOeight verlinkte Seite angeschaut.
Naja, USV Scripten als solches wird da nicht erklärt, sondern das Skripten der dort erhältlichen App -> Power Manager.
Das Skripten und der Umgang mit der App wird allerdings wirklich ausführlich erklärt.

Power Manager wäre wohl definitiv eine Alternative für dein Vorhaben:
https://www.dssw.co.uk/blog/2013-07-08-how-to-shut-down-when-ups-power-drops/

Gruß
 
Zurück
Oben Unten