#1 Le 30/09/2016, à 21:32
- RidingAround
Script simple pour lancer des commandes [RESOLU]
Bonjour
je cherche à faire un script pour tester des disques durs
Je voudrais que le truc me propose le titre de l'action, que je puisse répondre oui ou non pour lancer, et qu'il lance une commande simple.
" which path " me donne bien ce qu'il faut et " echo $[ PATH] " aussi.
Pourtant, aucune commande ne se lance, le terminal se contante de disparaître ou de répéter la question.
Voilà :
echo " Afficher les partitions + modif avec parted "
select yn in "Yes" "No"; do
case $yn in
Yes ) parted -l; break;;
No ) exit;;
esac
done
Mes yeux me brûlent, à demain !
Dernière modification par RidingAround (Le 02/10/2016, à 19:31)
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#2 Le 30/09/2016, à 22:17
- wido
Re : Script simple pour lancer des commandes [RESOLU]
Bonjour,
tu as un exemple ici:
https://doc.ubuntu-fr.org/tutoriel/script_shell
#!/bin/sh
echo -n "Voulez-vous voir la liste des fichiers Y/N : "
read ouinon
if [ "$ouinon" = "y" ] || [ "$ouinon" = "Y" ]; then
echo "Liste des fichiers :"
ls -la
elif [ "$ouinon" = "n" ] || [ "$ouinon" = "N" ]; then
echo "Ok, bye! "
else
echo "Il faut taper Y ou N!! Pas $ouinon"
fi
Hors ligne
#3 Le 01/10/2016, à 02:49
- pingouinux
Re : Script simple pour lancer des commandes [RESOLU]
Bonjour,
" which path " me donne bien ce qu'il faut et " echo $[ PATH] " aussi.
Je ne comprends pas ce que tu veux faire avec ces commandes.
Lorsque tu lances le script en #1, tu vois apparaître ceci
Afficher les partitions + modif avec parted 1) Yes 2) No #?
Là, tu dois répondre 1 ou 2, sinon il répète la question.
Si tu lances le script dans le shell courant, avec une de ces commandes
source le_script # ou . le_script
et si tu réponds 2, le exit ferme le terminal
parted doit être précédé de sudo
Ajouté : Remplace exit par break
Dernière modification par pingouinux (Le 01/10/2016, à 07:41)
Hors ligne
#4 Le 01/10/2016, à 06:56
- serged
Re : Script simple pour lancer des commandes [RESOLU]
Dans ton cas, il faut taper "Yes" ou "No" en respectant la casse.
Le plus simple est de faire précéder le test de la ligne :
shopt -s nocasematch
[edit]
Personnellement pour ce genre de test, je n'attends que y ou n :
echo " Afficher les partitions + modif avec parted "
# et en plus c'est bilingue !
read yn
case $yn in
O|o|Y|y ) parted -l; break;;
N|n ) exit;;
esac
done
Dernière modification par serged (Le 01/10/2016, à 07:01)
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
#5 Le 01/10/2016, à 10:23
- Hizoka
Re : Script simple pour lancer des commandes [RESOLU]
Pour éviter tout problème de casse et de réponse:
read yn
case ${yn,,} in
o*|y* ) echo "oui" ;;
n* ) echo "non";;
esac
${yn,,} => passe la variable en minuscules
o*|y* => la réponse doit commencer par y ou o
donc au final OuI ou YEs ou O... fonctionnent
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 01/10/2016, à 19:14
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
Merci à tous,
mais que ce soit mon script ou les vôtres, à chaque fois que je valide, soit je retrouve #? ligne du dessous, soit la fenêtre se ferme brutalement.
C'est bien là le souci en fait.
Exemple:
#!/bin/bash
echo SAUVEGARDE DU DISQUE DUR EXTERNE
echo "Validation requise :"
select yn in "oui" "NON"; do
case $yn in
Yes ) rsync -vr /home/amanda /media/amanda/160USB/SAUVEGARDE; break;;
No ) exit;;
esac
done
exit 0
Ce truc ne lance rien chez moi, mais chez amanda, ça fonctionne.
Mon which bash donne /bin/bash
Et j'ai aussi
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Je suis l'utilisateur " m " lorsque je lance tout ça, et les droits sont bien ok dans les propriétés des scripts...
Dernière modification par RidingAround (Le 01/10/2016, à 19:22)
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#7 Le 01/10/2016, à 19:18
- pingouinux
Re : Script simple pour lancer des commandes [RESOLU]
Fais un copier-coller (entre balises-code) du script que tu utilises, de la commande que tu lances, et de ce qui apparaît à l'écran.
Hors ligne
#8 Le 01/10/2016, à 19:43
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
Le script c'est celui que j'ai donné juste au dessus, et la réponse c'est
#?
Et pour le script qui m'a été donné plus haut :
#!/bin/sh
echo -n "Voulez-vous voir la liste des fichiers Y/N : "
read ouinon
if [ "$ouinon" = "y" ] || [ "$ouinon" = "Y" ]; then
echo "Liste des fichiers :"
ls -la
elif [ "$ouinon" = "n" ] || [ "$ouinon" = "N" ]; then
echo "Ok, bye! "
else
echo "Il faut taper Y ou N!! Pas $ouinon"
fi
le résultat est la fermeture immédiate du terminal.
Dernière modification par RidingAround (Le 01/10/2016, à 19:46)
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#9 Le 01/10/2016, à 19:47
- pingouinux
Re : Script simple pour lancer des commandes [RESOLU]
As-tu lu ma réponse en #3 ?
Hors ligne
#10 Le 01/10/2016, à 19:59
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
?
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#11 Le 01/10/2016, à 20:03
- pingouinux
Re : Script simple pour lancer des commandes [RESOLU]
Je parle du troisième message de cette discussion (celui numéroté #3).
Hors ligne
#12 Le 01/10/2016, à 20:05
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
oh ben celui-là, dès que je veux l'ouvrir, le terminal flashe un milliardième de seconde à l'écran et disparaît.
J'ai bien :
#!/bin/sh
echo " Afficher les partitions + modif avec parted "
select yn in "Yes" "No"; do
case $yn in
Yes ) parted -l; break;;
No ) exit;;
esac
done
Dernière modification par RidingAround (Le 01/10/2016, à 20:05)
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#13 Le 01/10/2016, à 20:13
- pingouinux
Re : Script simple pour lancer des commandes [RESOLU]
Comment lances-tu ton script ? select est une commande de bash, et pas de sh (voir la première ligne de ton script).
Hors ligne
#14 Le 01/10/2016, à 20:22
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
J'ai corrigé avec #!/bin/bash (je savais pas)
Je lance en double clic puis Lancer dans un terminal.
Ca s'ouvre mais quand je fais une réposne, quelle qu'elle soit, ça se ferme brutalement.
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#15 Le 01/10/2016, à 20:28
- pingouinux
Re : Script simple pour lancer des commandes [RESOLU]
Ajoute cette ligne à la fin de ton script :
read
Hors ligne
#16 Le 01/10/2016, à 20:30
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
1 (pour yes) me remet à la ligne, collé à gauche et rien ne se passe.
Dernière modification par RidingAround (Le 01/10/2016, à 20:41)
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#17 Le 01/10/2016, à 20:31
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
Existe-t-il une liste des balises existant ?
Doit-on différencier les balises des commandes qu'elles permettent de lancer ?
merci
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#18 Le 02/10/2016, à 14:26
- wido
Re : Script simple pour lancer des commandes [RESOLU]
en tant normal quand tu lances ceci, ça réagit comment?:
parted -l; break;;
parce que parted doit être lancer en sudo
1 [15:26:33] wido@desktop: ~ $ parted -l
2 [15:26:36] wido@desktop: ~ $ parted
WARNING: You are not superuser. Watch out for permissions.
Erreur: Aucun périphérique trouvé
Réessayer/Retry/Annuler/Cancel? ^C
Dernière modification par wido (Le 02/10/2016, à 14:27)
Hors ligne
#19 Le 02/10/2016, à 17:13
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
m@m-desktop:~$ parted -l; break;;
bash: erreur de syntaxe près du symbole inattendu « ;; »
et
m@m-desktop:~$ parted -l
m@m-desktop:~$
et
m@m-desktop:~$ parted
ATTENTION : Vous n'êtes pas le super-utilisateur. Vérifiez vos droits.
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#20 Le 02/10/2016, à 19:31
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
Trouvé !
#!/bin/bash
echo " Entrée pour passer à SUDO PARTED -L "
read touche
case $touche in
*) echo "Démarrage des tests"
;;
esac
sudo parted -l
echo " Entrée pour passer à SUDO BLKID "
read touche
case $touche in
*) echo "blkid"
;;
esac
sudo blkid
echo " Entrée pour passer à SUDO HDPARM -I pour les serials"
read touche
case $touche in
*) echo "hdparm"
;;
esac
sudo hdparm -I | grep Serial /dev/sdd
echo " Entrée pour sortir "
read touche
case $touche in
*)
exit
Dernière modification par RidingAround (Le 02/10/2016, à 19:31)
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#21 Le 03/10/2016, à 04:42
- pingouinux
Re : Script simple pour lancer des commandes [RESOLU]
Trouvé !
??????
Tu ne tiens pas compte de la réponse aux questions, et il manque le dernier esac.
Pour info, tu peux remplacer
echo " Entrée pour passer à SUDO PARTED -L "
read touche
par
read -p " Entrée pour passer à SUDO PARTED -L " touche
ou bien, si tu veux le retour à la ligne avant de taper la réponse
read -p " Entrée pour passer à SUDO PARTED -L"$'\n' touche
Hors ligne
#22 Le 05/10/2016, à 19:54
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
J'ai répondu aux questions, notamment en #19, et n'ai pas obtenu de réponse plusieurs fois, donc je me suis débrouillé.
Le esac j'ai dû le rajouter ensuite, car j'ai peaufiné plusieurs fois sur des bugs mineurs.
J'en suis là si ça peut servir :
#!/bin/bash
echo " Entrée pour passer à SUDO HDPARM -I pour les Serials avec SDD en premier"
read touche
case $touche in
*) echo "hdparm -I /dev/sdd"
;;
esac
sudo hdparm -I /dev/sdd | grep -e "Model Number" -e "Serial Number"
echo " Entrée pour passer à SUDO HDPARM -I pour le Serial de SDE"
read touche
case $touche in
*) echo "hdparm -I /dev/sde"
;;
esac
sudo hdparm -I /dev/sde | grep -e "Model Number" -e "Serial Number"
echo " Entrée pour passer à SUDO PARTED -L "
read touche
case $touche in
*) echo "Démarrage des tests"
;;
esac
sudo parted -l
echo " Entrée pour passer à pydf "
read touche
case $touche in
*) echo "pydf"
;;
esac
sudo pydf
echo " Entrée pour passer à SUDO LSBLK "
read touche
case $touche in
*) echo "lsblk"
;;
esac
sudo lsblk
echo " Entrée pour passer à SUDO BLKID "
read touche
case $touche in
*) echo "blkid"
;;
esac
sudo blkid
echo " Entrée pour lire la SMART sur SDD "
read touche
case $touche in
*)
;;
esac
sudo smartctl -s on /dev/sdd ; sudo smartctl -a /dev/sdd
echo " Entrée pour lire la SMART sur SDE "
read touche
case $touche in
*)
;;
esac
sudo smartctl -s on /dev/sde ; sudo smartctl -a /dev/sde
# sudo smartctl --test=short /dev/sdd
echo " Entrée pour tester la SMART sur SDD "
read touche
case $touche in
*)
;;
esac
sudo smartctl --smart=on --test=short /dev/sdd
echo " Entrée pour tester la SMART sur SDE "
read touche
case $touche in
*)
;;
esac
sudo smartctl --smart=on --test=short /dev/sde
# sudo smartctl --test=short /dev/sdd
echo " Entrée pour lire les résultats sur SDD "
read touche
case $touche in
*)
;;
esac
sudo smartctl -l selftest /dev/sdd
echo " Entrée pour lire les résultats sur SDE "
read touche
case $touche in
*)
;;
esac
sudo smartctl -l selftest /dev/sde
# sudo smartctl --test=short /dev/sdd
echo " Entrée sortir"
read touche
case $touche in
*)
;;
esac
exit
Le but est donc de tester rapidement des disques durs.
Dernière modification par RidingAround (Le 05/10/2016, à 19:56)
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne
#23 Le 05/10/2016, à 20:07
- pingouinux
Re : Script simple pour lancer des commandes [RESOLU]
Ce que je voulais dire, c'est que tu ne tiens pas compte des réponses dans ton script.
Hors ligne
#24 Le 05/10/2016, à 21:13
- RidingAround
Re : Script simple pour lancer des commandes [RESOLU]
Non, j'avais stocké ces choses avant, et je ne comprenais pas bien ce qui était proposé.
Dans ces choses déjà présentes, il me manquait en fait une simple expression.
J'ai des contraintes de temps, et même si j'aimerais tout comprendre, je dois aller au plus court, car je vends mes services en dépannage et installation. Ce n'est malheureusement pas du loisir.
Quand je serai retraité (ce dont je doute avec la vie qu'on mène), je pourrai tout à loisir combler mes lacunes, sur un portable, le soir au bord de l'eau...
Merci à tous
RAID 5 luks 4x1To - SSD M2 120 - RX 480 - 4x4 DDR4 - Xeon
24 ans de Linux ! Ubuntu aux particuliers -> puis aux entreprises -> monter des serveurs -> sécuriser les entreprises -> des armoires -> des clusters -> des conteneurs ... que du bonheur :}
Hors ligne