In esecuzione su macOS Sierra: ho un programma Ruby - setup.rb
- per configurare un ambiente di sviluppo su un nuovo Mac.
Devo avviare il programma usando sudo ruby setup.rb
perché esegue alcune cose che richiedono sudo
.
Il programma inizia con attività che impiegano abbastanza tempo (circa 2 minuti), il che è abbastanza lungo da permettere a un programmatore pigro di fare qualcos'altro, magari fare una tazza di caffè.
Ecco il mio enigma: dopo l'attività di 2 minuti, ho bisogno di usare il comando security
che interagisce con il portachiavi. Questo comando mi chiederà la password per il portachiavi, quindi interromperò il programma ruby poiché è in attesa di input.
So che posso passare la password del portachiavi al comando security
utilizzando il flag -p <PASSWORD>
.
Poiché la maggior parte (tutti?) dei portachiavi sono configurati per utilizzare la stessa password dell'account di accesso macOS (almeno le condivisioni della mia macchina ...), Voglio inoltrare la password che l'utente ha immesso per avviare setup.rb
a il comando security
. È possibile?
Una soluzione che è sia brutta che non sicura consiste nel richiedere direttamente all'utente la password sudo, ma utilizzando il mio proprio prompt, memorizzando la password in una variabile e quindi passandola al comando security
utilizzando il flag -p
. Oltre a non sicuro, significa che l'utente ha il tipo di password due volte. Ma questo farà il lavoro dato che ora l'utente può lasciare il computer per una tazza di caffè mentre setup.rb
può fare tutto il suo lavoro senza richiedere input.
Sicuramente possiamo fare meglio?