Ho un problema di decisione di programmazione e spero che tu possa mostrarmi una soluzione o dirmi se il mio piano su come risolvere il problema sarebbe ok o meno.
Sto gestendo alcuni mac e voglio eseguire uno script ogni volta che un utente accede. Lo script (che non ho ancora scritto) deve apportare alcune modifiche (o meno). Le modifiche richiedono i privilegi di amministratore, ma lo script necessita anche delle informazioni dell'utente attualmente connesso (o accesso).
Normalmente, questo sarebbe un lavoro per un LaunchAgent / Deamon, ma qui viene il problema: gli script in / LaunchDeamons vengono eseguiti come amministratore di sistema ma iniziano insieme al sistema. Non sono a conoscenza degli utenti che accedono o escono e potrebbero non mostrare una GUI. ~ / LaunchAgents viene eseguito come utente connesso e inizia quando l'utente esegue l'accesso. Inoltre può mostrare una GUI. Tuttavia non vengono eseguiti come amministratore di sistema.
Quindi questo è il mio problema: eseguire uno script come root, ma avviarlo ogni volta che un utente accede e presenta a lui una GUI: La mia soluzione sarebbe quella di scrivere due script:
Lo script 1 viene eseguito come amministratore di sistema e si trova in / LaunchDeamons. Questo avrebbe un socket aperto per le connessioni in entrata (AKA "Server Socket").
Lo script 2 viene eseguito mentre l'utente si è connesso e si trova in ~ / LaunchAgents. Presenta una GUI all'utente e invia le informazioni allo script 1 tramite una connessione socket.
Non mi sembra che questa sarebbe la soluzione più affidabile / semplice, ma non riesco a pensare ad altro. Ho anche provato a scoprire come altri programmi risolvono questo problema (munki ad esempio, che presenta una GUI all'utente ma installa programmi come amministratore di sistema) ma non riesce a capire come l'hanno fatto.
Sarei felice per alcuni commenti su questo! Saluti, Christian
PS: ho intenzione di usare python.