J'essaie d'apprendre le script bash. Je travaille sur un problème pratique et à un moment donné, je dois ajouter une ligne à un fichier qui nécessite l' root
autorisation d'écrire.
Le code ressemble à ceci:
# some code
echo "add this line to the code" >> fileName
# some code
Est-il possible de faire en sorte que le script demande le mot de passe root, de valider le mot de passe et de modifier le fichier en cas d'authentification réussie? Le script doit ensuite revenir en mode utilisateur et poursuivre l'exécution de la commande.
sudo
, les mots de passe ne semblent pas être mis en cache avecsu
.Vous pouvez utiliser
tee
avecsudo
:echo
La sortie de est redirigée avec|
( pipe ) verssudo tee
.tee
lit à partir de l'entrée standard et écrit dans la sortie standard tout fichier donné, dans ce casfilename
.-a
(ou--append
) faittee
ajouter des fichiers, sans cela les fichiers seraient écrasés. Comme iltee
est exécuté avec,sudo
il ouvre des fichiers avec des autorisations root. Enfin,> /dev/null
supprimetee
la sortie de la sortie standard .Un avantage d'utiliser
tee
au lieu de simplement démarrer la commande entière, y compris la redirection avecsu -c
ou,sudo sh -c
est que vous n'avez pas à modifier la citation de la commande initiale de quelque manière que ce soit (les lignes de citation contenant déjà des guillemets peuvent parfois être assez laides).la source
Essayez ceci Cette commande est disponible sur Unix et Linux.
sudo sh -c "echo 'add this line to the code' >> fileName"
la source
Ferait l'affaire:
la source
ssh
? Vous n'avez pas besoinsu
desudo
ni de spécifierroot
car c'est la valeur par défaut. Dans l'ensemble, un peu plus d'explications seraient bien car l'OP voulait apprendre quelque chose et pas seulement un problème résolu.