Estoy tratando de crear un script para implementar macOS y la última pieza que no está automatizada es instalar Homebrew. Debido al escenario único en el que Homebrew no debe instalarse con sudo
, y requiere return
que se presione tanto la tecla como los usuarios password
, se ha convertido en algo complicado de entender. Pasé algunas horas en esto y encontré otras preguntas sin respuesta en StackExchange sin suerte para automatizarlo por completo.
Mi código:
echo "Password: "
read -s PASSWORD
echo $PASSWORD | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
El eco omite la solicitud de acertar return
pero no pasa la contraseña porque me falta el -S
indicador porque no debería incluir sudo al instalar Homebrew. En última instancia, necesito una configuración que presione el comando Y pase la contraseña sin usar sudo. El resto de mi secuencia de comandos se ejecuta usando, echo $PASSWORD | sudo -S my-command-here...
por lo que me gustaría no desviarme demasiado de ese esquema si es posible.
La -s
opción me está funcionando, así que no sé por qué no te funciona a ti.
¿ Ha intentado agregar #!/bin/sh
(o #!/bin/bash
) en la parte superior de su secuencia de comandos?
Si usa la -n
opción, echo
obtendrá la entrada en la misma línea que la etiqueta.
Entonces, lo siguiente tiene la entrada: Password: <waiting for input>
, y en la siguiente línea simplemente imprime la contraseña ingresada; es awk
solo para probar que la tubería estaba funcionando. Y luego agregué un bucle para que siempre se deba ingresar algo.
#!/bin/sh
readPassword
echo $PASSWORD | awk '{print $1}'
readPassword() {
echo -n "Password: "
read -s PASSWORD
echo ""
if [[ -z "$PASSWORD" ]]; then
printf '%s\n' "A password is required..."
readPassword
fi
}
#!/bin/bash
en la parte superior de la secuencia de comandos real. ¡ La -n
bandera es una buena adición, gracias! Sin embargo, esto realmente no soluciona el problema de instalación de Homebrew en mi pregunta inicial. Tengo otros comandos, como echo $PASSWORD | sudo -S systemsetup -setremotelogin on
trabajar con la -S
bandera, pero tengo que incluir sudo para que funcionen. Homebrew no debe instalarse a través de sudo, por lo que esta configuración no funciona a menos que me falte algo.return
para ambos mí y escriba la contraseña cuando se le solicite. La instalación de Homebrew solicita una contraseña.
sin ladera
/usr/local
antes de instalar Homebrew?justin hammond
sin ladera
sin ladera
echo PASSWORD | sudo -S
es una mala práctica (al menos desde el punto de vista de la seguridad), su problema parece provenir del hecho de quesudo
se llama sin-S
el script de instalación de Homebrew. Por lo tanto, es posible que desee solicitar formas de evitar que Homebrew incluso intente usar sudo (no sé si esto es posible) o formas de cambiar su secuencia de comandos para evitar esto.