sudo make me a sandwich

Posted by kAworu Thu, 29 Jan 2009 16:41:00 GMT

pffff

Je me retrouve souvent confronté devant ce problème:

% sudo some_command > /etc/some/other/file

Le problème c’est que l’utilisateur courant n’a pas les droit sur le fichier, et que le fichier est ouvert par le shell courant (qui n’est pas en root). Par exemple, si je veux mettre un serveur OpenDNS dans mon resolv.conf:

% sudo echo 'nameserver 208.67.222.222' > /etc/resolv.conf

Ne marche évidement pas. Il faut aller l’éditer avec, par exemple, un sudo $EDITOR /etc/resolv.conf (remarquez le subtile subterfuge afin d’éviter un inutile nième troll ee VS nano).

encore un peu de tee?

sur un random-{forum,irc-chan,ml,cabaret} j’ai trouvé cette perl (non bapt, non.) e :

% echo 'nameserver 208.67.222.222' | sudo tee /etc/resolv.conf

Et comme tout bon lecteur pourra RTFM dans man tee l’option -a permet de faire des sorts très puissants (et de remplacer >>):

% echo 'nameserver 208.67.222.220' | sudo tee -a /etc/resolv.conf

Posted in | 1 comment |

the Shellnigme

Posted by kAworu Sun, 18 Jan 2009 13:29:00 GMT

Pour les amoureux du shell (sh POSIX) “traditionel” voilà une petite énigme interessante. Comment faire une boucle sur les lignes d’une variable ? par exemple, si je fais

myvar="`cat /etc/fstab`"

j’ai maintenant le contenu du fichier /etc/fstab dans $myvar. Comment boucler pour traiter le contenu ligne par ligne ?

Je connais seulement deux solution en sh POSIX (l’une avec un for, et l’autre avec un while), réponse la semaine prochaine ;)

PS: postez vos réponse en commentaire !

Posted in | 2 comments |