13 de juny 2011

Cosetes amb la línia de comandes

Un parell d'instruccions útils de la línia de comandes de GNU-Linux:
Redireccionament de la sortida estàndard i dels missatges d'errors:
ls 2>&1 > stdanderrors.log

la instrucció "ls" ens llista els fitxers i directoris del nostre directori de treball. "2>" ens redirigeix els missatges d'error cap a un fitxer que nosaltres indiquem. Però si li indiquem "&1" ens ho redirigirà cap a on es redigigeixi la sortida dels missatges normals (stdoutput), per defecte per pantalla. I ara si redirigim la sortida stàndard amb ">" seguit d'un nom de fitxer tindrem un redireccionament de tant la sortida stàndard com dels errors a un mateix fitxers.
Redirecciona tant l'stdoutput com stderror.

Executar un script com un altre usuari:

A vegades ens pot passar que al executar un script, arriba un moment que el nostre usuari no té prou permisos per a executar segons quines instruccions, i volem fer un canvi d'usuari, però al fer el canvi també volem tornar al punt a on havíem fetel canvi per a continuar el procés. Aquí la fórmula màgica:

Tenim dos scripts al mateix directori (per seguir al peu de la lletra l'exemple, si estan en directoris diferents s'ha d'indicar explícitament),
Tenim un script test.sh, que s'executa amb un usuari normal:

#!/bin/bash
echo "before su"
#root script needs root permissions:
su root -c ./rootscript.sh
echo "after su"
whoami


I un altre script que necessita permisos de root, rootscript.sh:

#!/bin/bash
echo "now in sub shell"
whoami
echo "exiting sub shell"


Això té restriccions, el password sempre ens el demanaran des de la línia de comandes, és a dir, no podrem fer un script que tingui guardat el password de root per anar executant codi per aquí i per allà com si fós el root.