Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/02/2017, à 04:15

josran

[Résolu] Exécuter sudo dans une ligne de script

Bonjour,

Quand j'utilise ce script :

#! /bin/sh
# ce script copie sur mon PC les journaux TV téléchargés par le serveur
# mise en route du serveur
wakeonlan 00:11:32:55:AD:96
# temporisation
sleep 180
# montage du dossier video
sudo mount /media/tt/NAS_video/ << EOF
mot_de_passe
# récupération des fichiers téléchargés
rsync -a --stats --modify-window=1 /media/tt/NAS_video/ /mnt/Donnees_Deux/'My Ziepod Downloaded'/NBC-Nightly-News-video
# extinction du serveur
ssh root@192.168.1.28 /sbin/poweroff

J'ai également essayé cette commande :

# sudo mount /media/tt/NAS_video/ <<< mot_de_passe

Dans les deux, cela affiche ce message d'erreur :

└─ $ ▶ dl-News-from-NAS.sh
Sending magic packet to 255.255.255.255:9 with 00:11:32:55:AD:96
/usr/local/bin/dl-News-from-NAS.sh: 8: /usr/local/bin/dl-News-from-NAS.sh: Syntax error: redirection unexpected

Une suggestion ?

Dernière modification par josran (Le 28/02/2017, à 18:43)

Hors ligne

#2 Le 28/02/2017, à 05:52

Watael

Re : [Résolu] Exécuter sudo dans une ligne de script

salut,

tss, tss, tss ! on ne met pas un mot de passe, encore moins un mot de passe en clair, dans un script.
je ne comprends pas que sudo accepte de lire un mot de passe sans que l'utilisateur soit "physiquement" présent.
tu dois pouvoir déclarer ton utilisateur pour l'utilisation de cette seule commande sans mot de passe.

le here-string (<mot)attend une chaîne équivalente à celle qui l'a ouverte (le EOF, ici) pour le fermer.
le here-doc (<<<) est une spécificité bash. toi, tu appelles /bin/sh.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 28/02/2017, à 18:42

josran

Re : [Résolu] Exécuter sudo dans une ligne de script

Cher Watael,

Il me semble qu'un détail t'a échappé : j'ai sollicité de la communauté une suggestion, pas une leçon de morale.
J'ai donc cherché plus avant une solution à mon problème et j'ai fort heureusement pu constater que, sur plusieurs forums, il se trouvait des linuxiens capables d'empathie et de partage face aux questions émanant d'intervenants modérément expérimentés.

Parce que je crois au partage des connaissances sur ce forum, il me semble normal de ne pas garder pour moi la solution que j'ai trouvée et qui pourrait faire gagner du temps à un autre qui chercherait comment glisser une commande de super-utilisateur dans un script, tout en évitant de  devoir rester devant son terminal pour entrer le mot de passe.

Au cas particulier, il s'agissait, à l'intérieur du script dl-News-from-NAS.sh, d'exécuter :

sudo mount /media/tt/NAS_video/

Voici la solution détaillée que j'ai utilisée.
Dans un terminal, je frappe :

sudo visudo

En fin du fichier /etc/sudoers qui s’ouvre alors, j’insère cette ligne :

ALL ALL = (root) NOPASSWD: /usr/local/bin/dl-News-from-NAS.sh

Puis je frappe successivement :
<Ctrl-x>
O
<Entrée>

Et il ne me reste plus qu'à lancer le script.

Hors ligne

#4 Le 28/02/2017, à 19:07

Watael

Re : [Résolu] Exécuter sudo dans une ligne de script

ce n'est pas une leçon de morale, c'est l'énoncé de bonnes pratiques.

tu n'es quand même pas tombé loin de ma suggestion :

tu dois pouvoir déclarer ton utilisateur pour l'utilisation de cette seule commande sans mot de passe.

EDIT: je viens de me rendre compte que j'ai oublié de dire où faire cette déclaration :

... déclarer ton utilisateur >dans /etc/sudoers< ...

Dernière modification par Watael (Le 28/02/2017, à 21:42)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 28/02/2017, à 20:23

maxire

Re : [Résolu] Exécuter sudo dans une ligne de script

Salut,

Au vu de la commande mount je vois que /media/tt/NAS_video/ est déclaré dans /etc/fstab sans doute avec l'option noauto.
Il aurait suffi d'ajouter l'option user pour te passer de sudo en autorisant ainsi n'importe quel utilisateur à monter ce répertoire.


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#6 Le 28/02/2017, à 21:39

Hizoka

Re : [Résolu] Exécuter sudo dans une ligne de script

josran => Il est important qu'on signale les prises de risque... et qu'on te propose des choses...


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne