Estoy tratando de aprender bash scripting. Estoy trabajando en un problema práctico y en un momento necesito agregar una línea a un archivo que requiere root
permiso para escribir.
El código se ve así:
# some code
echo "add this line to the code" >> fileName
# some code
¿Es posible de alguna manera hacer que el script solicite la contraseña de root, valide la contraseña y, con una autenticación exitosa, modifique el archivo? La secuencia de comandos debería volver al modo de usuario y continuar la ejecución del comando.
sudo
, las contraseñas no parecen ser almacenadas en cachésu
.Puedes usar
tee
consudo
:echo
La salida de 'se redirige con|
( pipe ) asudo tee
.tee
lee de la entrada estándar y escribe en la salida estándar cualquier archivo dado, en este casofilename
.-a
(o--append
) hacetee
anexar a los archivos, sin ellos los archivos se sobrescribirán. A medida quetee
se ejecutasudo
, abre archivos con permisos de root. Finalmente,> /dev/null
suprimetee
la salida a salida estándar .Una ventaja de usar en
tee
lugar de simplemente iniciar todo el comando, incluida la redirección consu -c
osudo sh -c
es, es que no tiene que cambiar la cita del comando inicial de ninguna manera (las líneas de cita que ya contienen citas pueden ponerse bastante feas a veces).fuente
Pruebe esto Este comando está disponible en Unix y Linux.
sudo sh -c "echo 'add this line to the code' >> fileName"
fuente
Haría el truco:
fuente
ssh
? No necesitasu
consudo
y tampoco necesita especificar,root
ya que es el valor predeterminado. Con todo, un poco más de explicaciones sería bueno ya que el OP quería aprender algo y no solo un problema resuelto.