bash - with - sudo password parameter
Bash scripts que requieren sudo password (3)
Otra forma de hacerlo:
function checkSudo() {
if ((EUID != 0)); then
echo "Granting root privileges for script ( $SCRIPT_NAME )"
if [[ -t 1 ]]; then
sudo "$0" "$@"
else
exec 1>output_file
gksu "$0" "$@"
fi
exit
fi
}
Estoy creando un script Bash installer que compila e instala algunas bibliotecas tanto para OSX como para Linux. Debido a que algunos comandos en mi script ("make install", "apt-get install", "port install", etc.) requieren sudo, necesito que el usuario me proporcione la contraseña.
Actualmente, al usuario se le pide la contraseña cada vez que se ejecuta el primer comando sudo, pero debido a que esto ocurre a menudo después de una etapa de compilación, siempre hay un tiempo entre el inicio del script y el ingreso de la contraseña.
Me gustaría poner la contraseña + entrada al comienzo del script. También tengo curiosidad de saber si esta es realmente una buena forma de instalar las bibliotecas del sistema.
Alternativamente, podría instalar las bibliotecas en una ubicación de un recinto de arena local que no requiera sudo, pero luego tendré que decirle a apt-get y macports dónde instalar sus bibliotecas aparte de la predeterminada / usr / local / y / opt / local , y no estoy seguro de cómo hacerlo ni si es una idea inteligente.
Para aquellos que no quieren elevar el guión completo (para limitar los riesgos solo usando sudo dentro del guión cuando sea necesario) la primera parte de la respuesta aceptada sudo echo "Thanks"
funciona pero no responde al error de contraseña de sudo al salir la secuencia de comandos. Para lograr esto, las secuencias de comandos que incluyen comandos sudo y que desean garantizar el acceso a sudo antes de que se use podrían comenzar con
if [[ ! $(sudo echo 0) ]]; then exit; fi
La advertencia es que confía en la existencia de un tiempo de espera de sudoers que durará la duración de su secuencia de comandos para suprimir el resto de las solicitudes.
Para obtener la contraseña, simplemente ponga sudo echo "Thanks."
al comienzo del guion.
Pero preferiría esta solución:
if [[ $UID != 0 ]]; then
echo "Please run this script with sudo:"
echo "sudo $0 $*"
exit 1
fi