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 05/11/2014, à 18:53

BrunoL

sudo unique dans le script et pas dans sa ligne commande [Résolu]

Bonsoir,

J'ai un script type :

#!/bin/sh
echo "Entrer le pass de sudo : "
read pass
echo $pass | sudo -S iw dev wlan1 set power_save on
echo $pass | sudo -S sh -c "echo '1' > '/sys/module/snd_hda_intel/parameters/power_save'";
echo $pass | sudo -S sh -c "echo 'min_power' > '/sys/class/scsi_host/host4/link_power_management_policy'";
echo $pass | sudo -S sh -c "echo 'min_power' > '/sys/class/scsi_host/host5/link_power_management_policy'";

est-il possible de créer un "environnement sudo qui permettrait de transformer ce script vers :

#!/bin/sh
echo "Entrer le pass de sudo : "
read pass
>>>  Ouverture_environnement_sudo -pass=$pass <<< ou un truc dans le genre
iw dev wlan1 set power_save on
echo '1' > '/sys/module/snd_hda_intel/parameters/power_save';
echo 'min_power' > '/sys/class/scsi_host/host4/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host5/link_power_management_policy';

NOTA : je ne souhaite pas lancer le script en $sudo mon_script.sh

Merci.

Dernière modification par BrunoL (Le 06/11/2014, à 17:12)

Hors ligne

#2 Le 06/11/2014, à 08:56

serged

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

Moi je ferais :

#/bin/su
echo "Entrez le pass sudo :"
sudo echo 
sudo iw dev wlan1 set power_save on
sudo echo '1' > '/sys/module/snd_hda_intel/parameters/power_save';
# etc.

Le premier sudo ("sudo echo") saisira le mot de passe
Les autres ne le demanderont pas...


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#3 Le 06/11/2014, à 09:33

BrunoL

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

J'aurais pas cherché dans cette direction ...
Super, je teste ça ce soir.
Merci serged

Hors ligne

#4 Le 06/11/2014, à 09:34

melixgaro

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

salut,

à serged

il me semble que ce que tu proposes ne marchera pas si une des commandes intermédiaires est plus longue que le temps de grâce (temps pendant le quel on peut lancer sudo sans que le mot de passe ne soit demandé). Il faut vérifier combien il y a de commandes avec sudo et le temps d'éxécution du programme. Si le script ne contient que les commandes postées ici, ça devrait aller.


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#5 Le 06/11/2014, à 10:18

nesthib

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

il faut utiliser sudo pour lancer le script, pas dans le script.
Une méthode à ajouter au début du script pour faire la vérification que le script est lancé en root :

if [ $UID -ne 0 ]
then
    echo "vous devez être root pour lancer le script"
    exit 1    
fi

ou, pour automatiser la chose, remplacer par :

if [ $UID -ne 0 ]
then
    sudo "$0" "$@"
    exit 1    
fi

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#6 Le 06/11/2014, à 10:18

tiramiseb

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

Salut,

En effet, si ça dépasse le temps de grâce ça redemandera le mot de passe. C'est 1/4h par défaut je crois, donc pas de souci pour un petit script comme ça.

Sinon il y a cette possibilité :

sudo sh -c "iw dev wlan1 set power_save on
echo 1 > /sys/module/snd_hda_intel/parameters/power_save
echo min_power > /sys/class/scsi_host/host4/link_power_management_policy
echo min_power > /sys/class/scsi_host/host5/link_power_management_policy"

Dernière modification par tiramiseb (Le 06/11/2014, à 10:18)

Hors ligne

#7 Le 06/11/2014, à 16:24

BrunoL

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

Parfait exactement ce que je cherchais.

J'ai juste un problème sur une des 2 machines sur lesquelles j'ai testé, cela ne fonctionne pas. Mon pass sudo m'est bien demandé mais toutes les lignes sudo donne

powerTop.bash: ligne 10: /sys/module/snd_hda_intel/parameters/power_save: Permission non accordée
powerTop.bash: ligne 11: /sys/class/scsi_host/host4/link_power_management_policy: Permission non accordée

Bizarrement si je relance le script, le pass sudo ne m'est plus demandé et les lignes continuent à sortir en erreur. Sur la console je suis sudo après ce script, une commande sudo passe sans me demander le pass ... donc le pass saisi est bon.

D'où cela peut-il provenir ? Les 2 machine sont sous ubuntu studio 14.04 install récentes et standard ...:/

Merci

Hors ligne

#8 Le 06/11/2014, à 16:26

tiramiseb

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

Parfait exactement ce que je cherchais.

Tu as eu 3 propositions différentes : et si tu disais laquelle tu as suivi ?

Hors ligne

#9 Le 06/11/2014, à 16:49

BrunoL

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

Complément : la solution de tiramiseb sudo sh -c "les mêmes commandes" fonctionne !

Pour ma culture personnelle je serai trés interessé si quelqu'un peut expliquer ce phénomène mais j'ai ma solution.

Merci à tous.

Tiramiseb je n'avais pas lu ta question. Mon problème est sur la solution de serged qui fonctionne sur une machine seulement. La tienne fonctionne sur celle qui refuse la solution de serged, reste à la tester sur la 1ère que je n'ai pas sous la main.

Dernière modification par BrunoL (Le 06/11/2014, à 16:55)

Hors ligne

#10 Le 06/11/2014, à 16:58

tiramiseb

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

La solution de serged a un problème : il n'a pas repris le "sh -c" de ton truc d'origine, alors il exécute la commande echo en tant que root mais la redirection dans /sys/module/snd_hda_intel/parameters/power_save en tant qu'utilisateur normal.
Piège qui revient assez souvent avec sudo : la redirection n'est pas "dans" le sudo.

Hors ligne

#11 Le 06/11/2014, à 17:11

BrunoL

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

Merci tiramiseb pour ton explication que j'ai pu tester.
La solution de serged modifiée dans ce sens :

#/bin/sh
echo "Entrez le pass sudo :"
sudo echo 
sudo iw dev wlan1 set power_save on
sudo sh -c "echo '1' > '/sys/module/snd_hda_intel/parameters/power_save';"
# etc.

Fonctionne parfaitement ! Je pense que sur l'autre machine j'ai effectivement du laisser ce résidu " sh -c" ce qui explique que cela marchait roll

Encore merci à tous.

Hors ligne

#12 Le 07/11/2014, à 10:16

nesthib

Re : sudo unique dans le script et pas dans sa ligne commande [Résolu]

pour info :

echo 1 | sudo tee /sys/module/snd_hda_intel/parameters/power_save

Sinon je persiste à dire qu'il vaut mieux lancer tout le script avec les droits root si toutes les commandes ont besoin de ces droits.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne