Je ne sais pas expliciter les questions que je veux poser
Je voudrais compléter mon script sur les sauvegardes par les commandes que je fais systématiquement par la suite : « updater », « upgrader », puis mettre à jour ‹ surveillance › et ‹ rkhunter ›.
Pour
sudo apt-get updade
pas de problème, facile à ajouter
Pour les mises à jour de surveillance et de rkhunter une fois l’« upgradation » faite, pas de problèmes non plus :
sudo dpkg-reconfigure surveillance && sudo rkhunter --propupd
Avec les éventuelles acceptation o/*
Le PROBLÈME se situe au milieu :
sudo apt-get upgrade
J’emploi apt-listbugs et j’épingle systématiquement les paquets qui sont reconnus ‹ bogués ›.
Quand il n’y en a aucun, pas de problème, l’« upgradation » se fait tranquillement et le script continue une fois accepté le choix classique :
« Etes-vous certains de vouloir installer les paquets ci-dessus ? [Y/n/?—] »
Je tape sur ‹ entrée › et ça continue.
Il en va tout autrement quand il y a des bogues car mon choix : ‹ p › pour les épingler, conduit à une demande de confirmation puis à un second choix par défaut : ‹ N ›, logique puisqu’on ne veut pas continuer.
Là, il y a sortie brutale du script.
Ma question (on y vient) :
Bash gère-t-il les appuis sur une touche, en l’occurrence la touche ‹ p › et la touche ‹ Entrée › ?
Si oui, je pourrais faire une condition simple à chaque appui et j’aimerais un exemple.
Sinon, voyez-vous une autre façon de contourner ce problème?
Merci d’avoir pris la patience de déchiffrer mon blabla
[quote=“MisterFreez”]Tu fais bien de « uper ». Si c’est possible.
Le programme lis ta réponse sur son entrée standard donc :
pour lui donner un « p » et
pour entrée.[/quote]
Super !
Je vais essayer de coder ça demain et je présenterai mon travail au Prof
Edit :
J’ai quand même besoin d’un exemple simple car je ne pige pas ‘prg’ ?
Je ne suis pas sûr que tu aies compris ma requête :
Quand je fais “apt-get upgrade”, à plusieurs moments, il me demande confirmation et c’est moi qui tape sur “entrée”.
Ce n’est plus dans le script proprement dit mais dans la commande "apt-get upgrade"
Ce que je voudrais faire, c’est :
si je tape sur “entree”, continue
si je tape sur “p”, obéis à cette commande (donc continue)
si je tape sur “entree” sort proprement
Je dis 'tape sur “entree” mais en fait, c’est la réponse par défaut et la dernière est [N/?/…]
Salut,
Ton problème, avec apt-listbugs c’est que de toute façon, le script va s’arrêter brutalement par sortie de apt-get.
Quant tu marques un paquet:
p + entrée > oui j’épingle
y (+ entrée ?) > êtes-vous sur… ?
n (+ entrée ?) > voulez-vous installer le paquet (non) et sortie sur une erreur de apt-get
Il faut alors relancer l’upgrade.
Il faudrait donc prévoir de reprendre le script à l’endroit ou apt-get upgrade s’exécute.
Pour rkhunter, tu peux le faire automatiquement à chaque upgrade avec une commande placée dans /etc/apt/apt.conf.d
Edit: Idem pour surveillance.
Edit: En marquant systématiquement avec apt-listbugs tu bloques des paquets qui ne sont plus bogués ou bogués pour des architectures qui ne sont pas la tienne, c’est dommage!
Ce ne serait pas plus simple avec un utilitaire comme expect?
Description : Automates interactive applications
Expect is a tool for automating interactive applications according to a script. Following the
script, Expect knows what can be expected from a program and what the correct response should be.
Expect is also useful for testing these same applications. And by adding Tk, you can also wrap
interactive applications in X11 GUIs. An interpreted language provides branching and high-level
control structures to direct the dialogue. In addition, the user can take control and interact
directly when desired, afterward returning control to the script.
Site : http://sourceforge.net/projects/expect/
Ça dépend de ce qu’on veut faire, (je n’utilise pas apt-listbug), ça dépend du niveau de complexité des interactions (expect gère aussi les terminaux virtuels ce qui permet par exemple de rentrer son mot de passe ssh automatiquement).
Michel, le mieux est que tu me donnes une ligne de commande qui puisse faire ce qui suit et ensuite, je ferai les essai en fonction de la réponse :
soit un programme bash :
#!/bin/bash
sudo apt-get upgrade if [ je tape sur la touche p ]
then
echo ‹ la réponse est bonne ›
fi
Je veux seulement que tu me rédige la ligne en bleu.
Lire un caractère (-n2 lire 2 caractères).
Pour avoir plus d’infos sur les commandes biltin, il faut utiliser la commande help :
@fran.b > Moi non plus j’ai découvert cette option tout à l’heure. Je trouvais dommage d’avoir à utiliser du c (ou tout autre langage) pour quelque chose d’aussi simple.
Bon, ça ne fonctionne pas à l’intérieur de la commande apt-get upgrade.
Les tests sont fait après.
Pas grave, j’ai fait un petit script complémentaire pour upgrade et le reste des petits contrôle que j’effectue à la suite et ce n’est pas beaucoup plus long.
Merci à tous.
La commande sur un script seul, sans « upgrade » fonctionne et c’est normal mais en l’occurrence, le test d’appui sur une touche doit être effectué ni avant, ni après mais au milieu de la commande « apt-get upgrade ».
Alors, je ne sais pas si c’est possible mais avec le script d’essai suivant, ça ne fonctionne pas, que je place le ‹ read -n1 › avant ou comme dessous, après upgrade..
#!/bin/bash
sudo apt-get upgrade
read -n1
if [ "${REPLY}" == 'p' ] ; then
echo "c'est bon"
fi
Quand je lance ce script, tout se passe normalement au niveau de ‹ upgrade ›
Arrivé à ‹ listbugs › (auquel je tiens), il énumère les bogues puis demande le choix.
Je tape ‹ p › pour l’épinglage, ensuite les demandes de confirmation classique dont la dernière où je réponds ‹ N ›
Là apt-get upgrade sort avec erreur 10.
Si la commande read -n1 avait été prise en compte, sitôt tapé le ‹ p ›, j’aurais dû avoir une réponse « c’est bon » … ce qui n’est pas le cas.