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 30/09/2016, à 22: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, à 20: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, à 23: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, à 03:49

pingouinux

Re : Script simple pour lancer des commandes [RESOLU]

Bonjour,

RidingAround a écrit :

" 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.

  1. 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.

  2. 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

  3. parted doit être précédé de sudo

Ajouté : Remplace exit par break

Dernière modification par pingouinux (Le 01/10/2016, à 08:41)

Hors ligne

#4 Le 01/10/2016, à 07: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, à 08: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, à 11: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, à 20: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, à 20: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, à 20: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, à 20: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, à 20: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, à 20: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, à 20: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, à 21: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, à 21: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, à 21: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, à 21: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, à 21: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, à 21: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, à 21: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, à 21: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, à 21: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, à 15: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, à 15:27)

Hors ligne

#19 Le 02/10/2016, à 18: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, à 20: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, à 20: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, à 05:42

pingouinux

Re : Script simple pour lancer des commandes [RESOLU]

RidingAround #20 a écrit :

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, à 20: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, à 20: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, à 21: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, à 22: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