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 01/02/2024, à 10:02

arvernes

[Résolu] script bash et reprise d'une sortie écran

Bonjour,
J'essaie d'automatiser l'installation de paquets par un script bash. J'ai dans une boucle for i do done une fonction qui installe des paquets par un apt-get install "FILENAME"

J'ai deux questions :

1°) Si le fichier en question est le seul qui s'installe, donc il n'y a pas de dépendance, je n'ai pas de prompt qui me demande si je veux l'installer. Donc pas de pb. Si par contre, il y a une ou plusieurs dépendances, j'ai un prompt qui me demande si je veux les installer. Question : ai-je une commande qui me permet d'éviter ce prompt et qui donc installe le paquet et les autres dépendances, sans intervention de ma part?
Pour le moment j'ai mis un prompt pour suivre l'installation des paquets, mais je me dis que si tout est ok, je pourrais peut-être m'éviter la manip d'attendre à chaque paquet qui s'installe.

2°) La deuxième question : Si le fichier que je veux installer est déjà installé, il m'affiche par ex :

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'état... Fait      
gftp est déjà la version la plus récente (2.9.1~beta-1).
Le paquet suivant a été installé automatiquement et n'est plus nécessaire :
  libwmf0.2-7
Veuillez utiliser « sudo apt autoremove » pour le supprimer.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Je voudrais pouvoir reprendre dans un log le fait que le paquet est déjà installé et que donc, je n'ai pas eu besoin de l'installer. Possible ? pas possible ? Etant totalement débutant, si ça doit être trop compliqué, j'en ferai pas tout un fromage et je continuerai comme je le fais.

J'ai une petite question subsidiaire, je n'ai pas compris comment reprendre dans le log le fait qu'une commande s'est mal passée,
Est-ce "ma_commande_qui_va_bien_ou_mal 2>> error.log 1>> sortie.log
est-ce correct ? Merci

Dernière modification par arvernes (Le 02/02/2024, à 21:10)

Hors ligne

#2 Le 01/02/2024, à 10:31

jplemoine

Re : [Résolu] script bash et reprise d'une sortie écran

1 - Je pense qu'il suffit de mettre -y :

apt install toto

devient

apt -y install

toto (-y : répond oui à toutes les question).
Voir aussi le -q (quiet)
2 - il faut tout simplement tester la présence du paquet avec un

dpkg -l | grep <nom du paquet>

2 bis - oui c'est la bonne manière 2> (ou 2>) renvoie la sortie "erreur" : 1 seul chevron = écrase le fichier à chaque passage - 2 chevron = ajoute à a la fin.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#3 Le 01/02/2024, à 12:35

arvernes

Re : [Résolu] script bash et reprise d'une sortie écran

Merci. Je n'avais pas vu l'option -y pour apt-get .
Dans ce que je lis dans le man, l'option "y" est plus intéressante, car elle arrête l'installation si il y a un souci. Dans le man on met "Dans le cas d'une situation indésirable, comme le changement d'un paquet gelé, l'installation d'un paquet non authentifié ou la suppression d'un paquet essentiel, apt-get s'interrompt".
L'option -q me semble plus "complexe". Le man énonce "Notez qu'un niveau de silence égal à 2 implique -y et vous ne devez jamais utiliser -qq sans l'accompagner d'un modificateur tel que -d, --print-uris ou -s : APT pourrait alors exécuter des actions inattendues."

Sur la présence d'un paquet, comment je peux reprendre ça dans le script ? le but de l'opération est que le script fonctionne tout seul, mais qu'après coup je puisse retrouver dans le log ce qui a été fait. Un truc du genre : if fichier_deja_installé ; then on écrit dans le log que le fichier existe déjà, else on indique qu'on l'a installé.

Hors ligne

#4 Le 01/02/2024, à 13:04

sputnick

Re : [Résolu] script bash et reprise d'une sortie écran

Pour scripter, ne pas utiliser apt mais apt-get.

apt est prévu pour de l'interactif.

apt-get -y install paquet

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#5 Le 01/02/2024, à 14:06

jplemoine

Re : [Résolu] script bash et reprise d'une sortie écran

@sputnick : oui.
@arvernes : étant donné qu'il y a une redirection des sorties vers des fichiers de log, via un simple echo (ça sera listé dans le fichier "normal" de log).


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne