Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 18-11-2020 07:42:06

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.11.12-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)



Bonjour,

je voudrais ajouter une fonction dans mon script du style :

wait .... 10 secondes
si pas de réponse Yes ou No, la réponse sera considérée comme Yes et ma commande :


if [ -f "$FILE" ] && [[ "$diff" -gt `date +%s` ]]; then
echo  "La programmation est encore d'actualité."

read -r -p "Garder cette programmation ? [Y/n] " input
case $input in
    [yY][eE][sS]|[yY])


diff=$(sed -n 1p stream.txt)
url_diff=$(sed -n 1p url.txt)
out_diff=$(sed -n 1p out.txt)
date=$(( $diff - `date +%s`))

  while [ "$diff" -ne `date +%s` ]; do
    echo -ne "  $(date -u --date @$(($diff - `date +%s`)) +%H:%M:%S)\r";
    sleep 1
  done
echo "C'est partie !!!"


./command_diff

    rm -f stream.txt
    rm -f url.txt
    rm -f out.txt
    rm -f command_diff

exit 0

 ;;
    [nN][oO]|[nN])
    echo "OK, on supprime donc les fichiers de cette programmation."
    rm -f stream.txt
    rm -f url.txt
    rm -f out.txt
    rm -f command_diff
 ;;
esac
   

fi
 

Hors ligne

#2 18-11-2020 09:37:41

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-12-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

hello
j'avais vu la commande timeout ,mais je comprend le messge d'erreur sur la commande read

timeout 7 read -p 'Garder cette programmation ? [Y/n] ' input


timeout: impossible d'exécuter la commande « read »: Aucun fichier ou dossier de ce type



alors que si je test avec une autre commande aucun soucis

timeout 7 ping debian-facile.org

Dernière modification par Croutons (18-11-2020 14:12:03)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#3 18-11-2020 10:25:12

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.11.12-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

Bonjour,

Quoi je me bouge !!!!!  big_smile big_smile big_smile

Je teste tout et te fais un retour. Merci wink

Hors ligne

#4 18-11-2020 10:27:34

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-12-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

lol oublie je suis pas réveillé se matin

Dernière modification par Croutons (18-11-2020 10:27:52)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#5 18-11-2020 11:38:15

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

Sinon le read de bash a une option "-t".

read -t10 lapin


Si le temps alloué est passé, read retourne 128, sinon 0 (j'invente rien, c'est dans le manuel).


datalove-datalove-s1-2.png agendadulibre-lagendadulibre.png arzinfo-arzinfo.png

Hors ligne

#6 18-11-2020 11:39:01

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.11.12-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

J'ai trouvé sur ce site un truc  que je poste ici au cas où ta solution ne fonctionne pas.
https://ask.xiaolee.net/questions/1004273



wait=y
[[ -t 0 ]] && {                  
read -t 10 -n 1 -p $'Garder cette programmation ? (Y/n)' wait ||  
wait=n ; }                    

if [[ $wait =~ ^(y|Y|)$ ]];then
echo " Non, on supprime cette programmation"
else
echo " Pas de réponse, on considère donc que c'est YES"
fi
 



On pourra l'exploiter smile

Dernière modification par golgot200 (18-11-2020 11:42:48)

Hors ligne

#7 18-11-2020 12:13:34

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.11.12-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

On y arrive tout doucement  big_smile


#!/bin/bash  

wait=n
[[ -t 0 ]] && read -t 5 -n 1 -r -p $' Garder cette programmation ? (Y/n) ' wait || wait=y ;                    

if [[ $wait =~ ^(n|N|)$ ]] && [[ $wait != "" ]]; then

echo " On supprime"
else
echo " On Garde"
fi
 

Dernière modification par golgot200 (18-11-2020 12:15:50)

Hors ligne

#8 18-11-2020 12:43:45

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-12-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

voila un script avec des fonctions que j'ai trouvé dans des cours sur le bash
je l'ai adapté pour un timeout de 10 secondes
la variable reponse a la valeur y si temps est dépassé sinon la variable reponse a la valeur que on lui a donnée

a mettre dans ton script

#!/bin/bash

LIMITETEMPS=10  # 10 secondes dans cette instance, peut être configuré avec

               #+ une valeur différente.
AfficheReponse()

{

  if [ "$reponse" = TIMEOUT ]

  then

    echo -e 'la programmation sera présérvée\n'  

   reponse=Y ; echo $reponse

  else       # ne pas mixer les deux interfaces.

    echo "la valeur de variable reponse est $reponse"

    kill $!  #  Kill n'est plus nécessaire pour la fonction TimerOn lancé en

             #+ tâche de fond.

             # $! est le PID du dernier job lancé en tâche de fond.

  fi



}  



TimerOn()

{

  sleep $LIMITETEMPS && kill -s 14 $$ &

  # Attend le temps défini, puis envoie sigalarm au script.

}  



VecteurInt14()

{

  reponse="TIMEOUT"

  AfficheReponse

  exit 14

}  

trap VecteurInt14 14   # Interruption de temps (14) détournée pour notre but.

echo 'Garder cette programmation ? [Y/n] '

TimerOn

read reponse

AfficheReponse

exit 0



source: https://matthieu.developpez.com/bash/

Dernière modification par Croutons (18-11-2020 14:24:22)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#9 18-11-2020 19:07:48

enicar
Membre
Lieu : ailleurs
Distrib. : sid
Noyau : 5.8.7
(G)UI : openbox
Inscription : 26-08-2010

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

@Croutons dans post #2. La commande timeout ne peut fonctionner car la commande read
est interne à bash et n'est donc pas dans le PATH wink

Hors ligne

#10 19-11-2020 10:15:28

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-12-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

otyugh a écrit :

Sinon le read de bash a une option "-t".

read -t10 lapin


Si le temps alloué est passé, read retourne 128, sinon 0 (j'invente rien, c'est dans le manuel).



en faite c'est pas tout a fait vrai (donc tu inventes un peu quand même tongue)

extrait read --help a écrit :

Le code de sortie est supérieur à 128 si le délai a expiré


renvoi 142 si le temps expire

read -t10 lapin ; echo $?


142



wikiDF a écrit :

$? Le code de retour de la dernière commande lancée.


https://debian-facile.org/doc:programma … :variables

Dernière modification par Croutons (19-11-2020 11:00:17)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#11 19-11-2020 20:07:42

naguam
Membre
Lieu : Quelque part
Distrib. : Plusieurs
Noyau : Ça dépend
(G)UI : La CLI il n'y a que ça de vrai!
Inscription : 13-06-2016

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

J'ai du mal à comprendre pourquoi vouloir un timeout pour dire oui automatiquement au final.

Dire non par default après un timeout est plus logique ça veut dire quand quand tu contrôles pas tu fais pas.

Et si tu es certain que tu veux tout valider et bien :

yes | script.sh

Ça fait le taf. (commande yes dans les coretutils, déjà présent sur debian, répond "y" (ou autre chose si on rajoute une chaîne de caractère en argument) à chaque demande stdin via le pipe)

Demander oui ou non dans un script en soit est logique mais un timeout qui valide c'est "dangereux".

Sinon le mieux c'est d'utiliser les args des commandes quand c'est possible (et potentiellement de l'implémenter la gestion de l'argument dans un script).
par exemple

./script -y

ou un peu comme rm, le force -f.

Dernière modification par naguam (19-11-2020 20:24:10)

Hors ligne

#12 20-11-2020 07:13:31

golgot200
Membre
Distrib. : Archlinux 2018-02-03
Noyau : 5.11.12-arch1-1
(G)UI : Mate (Strict Minimum)
Inscription : 05-08-2007

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

@naguam

Bonjour,

simple dans mon script, j'ai une option au démarrage qui me signale que j'ai une programmation encore valide de lancement de capture et qui me l'a signale. Il me demande si je veux la garder mais me laisse une choix pour la supprimer.
Si je ne suis pas aux commandes au bout de 10 secondes, il reprendra le décompte et lancera mon enregistrement. wink

Dernière modification par golgot200 (20-11-2020 07:15:19)

Hors ligne

#13 20-11-2020 21:41:16

naguam
Membre
Lieu : Quelque part
Distrib. : Plusieurs
Noyau : Ça dépend
(G)UI : La CLI il n'y a que ça de vrai!
Inscription : 13-06-2016

Re : Considérer que c'est OUI (si pas d'action Y/N au bout de 10 secondes)

Ok, je comprends assez bien l'intérêt dans ce cas smile

Hors ligne

Pied de page des forums