Sin solicitud y instalación de relleno de contraseña para Homebrew

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 returnque 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 returnpero no pasa la contraseña porque me falta el -Sindicador 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.

Algunos detalles más podrían ayudar. ¿Cuál es exactamente el problema que está tratando de resolver aquí (su pregunta muestra principalmente sus intentos de resolverlo, pero no cuál es realmente el problema en primer lugar). ¿Este script se ejecuta como un usuario administrador? ¿Puede cambiarlo de una manera que asegure que todo el script se ejecute como un usuario administrador? ¿ Puedes crear y modificar chmod /usr/localantes de instalar Homebrew?
Agregué una edición anoche que, con suerte, proporciona algunos detalles adicionales. No parece que haya sido aprobado todavía. El comando sale si intenta ejecutarlo como sudo. Supongo que podríamos crear y cambiar la carpeta, solo si es imposible que el script presione regresar y pasar la contraseña en un solo comando. Manténgase informado para que la edición llegue y debería ayudar a agregar información.
Lo agregó a la respuesta en lugar de a la pregunta. Edite la pregunta en su lugar.
Ignorando por un momento que usar echo PASSWORD | sudo -Ses una mala práctica (al menos desde el punto de vista de la seguridad), su problema parece provenir del hecho de que sudose llama sin -Sel 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.

Respuestas (1)

La -sopció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 -nopción, echoobtendrá 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 awksolo 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
}
Sí, esta es una pequeña parte de mi secuencia de comandos (la única parte que no funciona sin la interacción del usuario) y la he incluido #!/bin/bashen la parte superior de la secuencia de comandos real. ¡ La -nbandera 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 ontrabajar con la -Sbandera, 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.
Tal vez no entiendo tu verdadero problema. No necesita una contraseña para instalar Homebrew (su muestra en la pregunta), entonces, ¿por qué desea agregar una contraseña? Si un comando no usa parámetros que se le pasan, entonces no necesita pasar nada al comando, como aquí con una contraseña, que el comando no usa.
Mi pregunta es similar a la que se hace aquí: stackoverflow.com/questions/24426424/… . Sin embargo, las respuestas de esta pregunta no funcionan, ya que el script seguirá solicitando la contraseña. Mi secuencia de comandos completa: github.com/Justintime50/mac-scripting/blob/master/deploy/nozani/… se ejecuta conmigo solo necesitando escribir la contraseña una vez al principio, excepto para Homebrew, donde necesito tener la secuencia de comandos returnpara ambos mí y escriba la contraseña cuando se le solicite. La instalación de Homebrew solicita una contraseña.