PrimTux

La distribution éducative pour débutants et initiés.

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

Annonce

CONSULTER LES MENTIONS LÉGALES RGPD.

CARTE DES MEMBRES POUVANT AIDER ET DES ÉCOLES SOUS PRIMTUX
Merci de vous y inscrire en nous envoyant un email si vous souhaitez y apparaître.

  • Pour être automatiquement informé des réponses à vos messages sur le forum, n'oubliez pas de cliquer sur "Suivre cette discussion" en bas de page. Mieux, en vous abonnant au flux RSS du forum, vous pourrez suivre tout nouveau message sur l'ensemble du forum.
  • En allant dans votre Profil, ligne "Vie privée", vous pouvez également cocher "Suivre automatiquement les sujets auxquels on a répondu.", vous n'aurez plus à cliquer sur "Suivre cette discussion" lorsque vous postez un message.
  • Abonnez-vous à la newsletter sur le site principal pour être informé des nouveaux paquets, nouvelles versions, bugs...

#1 24-01-2020 18:09:29

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Créer un serveur de cache apt pour les parcs utilisant primtux

Hello pb rencontré dans ma classe et sans doute commun à de nombreuses écoles aux connexions internet non performantes : la mise  à jour des PC
On tue la bande passante et voulant mettre à jour 10 PC qui veulent récupérer 10 fois les mêmes paquets (en plus!)

Solution :
En déclarer un comme serveur et installer dessus un cache pour apt
Sur les autres (clients), configurer un proxy d'apt pour aller piocher dans le cache du serveur les mises à jour.

optimisations :
- cron durant la nuit pour la récupération des paquets quand les élèves ne sont pas là, ni les profs
- message mail à l'admin afin que celui ci soit averti en cas de mise à jour disponibles

Je ne sais pas si vous êtes intéressés par l'idée. Si oui, faudrait voir comment insérer cela de façon propre dans primtux.

Voilà juste une idée en passant wink

Dernière modification par cyrille (24-01-2020 18:12:07)


All you need : #!/bin/bash

Hors ligne

#2 24-01-2020 18:27:00

Steph
Administrateur
Inscription : 03-06-2015
Messages : 5 943

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Pas bête, après l'intégrer dans PrimTux... Vu le nombre de paramètres dont on n'est pas maître (système du serveur, ip...), je ne suis pas certains que ce soit facile. Si j'avais à le faire, j'utiliserais sans doute ce tuto: https://doc.ubuntu-fr.org/tutoriel/cree … r_de_depot
Chez les clients il n'y aurait que l'adresse du dépôt local à renseigner.

Hors ligne

#3 24-01-2020 18:29:48

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Tout a fait, il suffit d'installer apt-cacher-ng sur la machine serveur et d'ajouter une ligne dans la conf d'apt pour les clients
Rien de plus
On peut imaginer un script qui laisse choix : install serveur / client
Si serveur --> lance install d'apt-cache-server et de cron-apt avec config
Si client --> demande l'ip du serveur et c'est tout, le script configure apt lui même.
Facilement réalisable de base en shell script, sinon en python3 / tkinker mais un peu plus de temps...

Dernière modification par cyrille (24-01-2020 18:30:25)


All you need : #!/bin/bash

Hors ligne

#4 24-01-2020 20:10:14

mothsart
Modérateur
Inscription : 31-10-2016
Messages : 1 207

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

J'avais déjà eu l'idée mais pas l'intérêt ni l'ambition d'aller plus loin.

Si ça te ne poses pas de soucis de faire en python3, j'aurais tendance à préférer que les scripts bash : plus modulaire et possibilité d'ajouter des tests unitaires.
Gtk serait un plus pour garder une uniformité dans les technos et le design mais si c'est trop délicat, tkinker c'est très bien.

Si il faut faire de la review ou t'aider à mener à bien ton projet, n'hésites pas.

Hors ligne

#5 24-01-2020 20:30:03

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

OK c'est noté
thx


All you need : #!/bin/bash

Hors ligne

#6 26-01-2020 15:23:34

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Une première version opérationnelle (attention testée que sous debian sid, mais devrait passer sous ubuntu (que sudo qui change))
Doit passer aussi sur des Mint... Ou tout ce qui utilise apt-get

Comme souhaité codée en python 3
Utilisable de suite en ligne de commande

====
Je vais voir dès lors pour l'interface GTK
Personnellement, je trouve que le script en ligne de commande suffit amplement mais compris l'attente des utilisateurs d'avoir des fenêtres...

Merci de la récupérer sur le GIT
https://github.com/CyrilleBiot/scripts/ … ter/acn.py
afin d'utiliser la dernière version

Si possible de tester ce serait cool wink

====
Une fois l'interface codée, je proposerai un paquet format debian (.deb)

Dernière modification par cyrille (26-01-2020 15:24:29)


All you need : #!/bin/bash

Hors ligne

#7 26-01-2020 18:54:06

Philippe Dpt35
Administrateur
Lieu : Ille-et-Vilaine
Inscription : 28-10-2015
Messages : 3 229
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

J'ai ajouté ton script à cette page :
https://framagit.org/philippe-dpt35/scripts-primtux

Hors ligne

#8 30-01-2020 20:54:23

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Mise à jour du script avec une fonction de scan du réseau si installation afin de trouver un serveur ACN disponible et d'éviter à l'user de connaitre l'IP de ce serveur
3 possibilités
- pas de serveur trouvé -> revoir la config
- 1 serveur trouvé -> proposer d'utiliser cette IP
- Plusieurs serveurs trouver -> Proposer une liste de choix

Fix des var des fonctions

Disponible sur la branche devel du git
https://github.com/CyrilleBiot/scripts/ … vel/acn.py

Pas réellement testé mais ça devrait passer.
Remontées bienvenues wink

Dernière modification par cyrille (30-01-2020 20:55:36)


All you need : #!/bin/bash

Hors ligne

#9 31-01-2020 13:01:54

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Bon
testé ce matin dans la classe
il faut les paquets python-nmap
et pip install nmap
bien sûr
Sinon ça marche
Par contre, nickel en $user (rapide) mais ne gère pas les install root. Mais en su ou sudo, fonctionnel mais le scan de port est hyyyyyyyypppppppppppeeeeeeerrrrrr long
je vais voir si je peux optimiser cela wink
Ensuite, on verra pour le gtk... voir recoder le tout avec une classe

Dernière modification par cyrille (31-01-2020 13:02:18)


All you need : #!/bin/bash

Hors ligne

#10 02-02-2020 23:56:37

mothsart
Modérateur
Inscription : 31-10-2016
Messages : 1 207

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Je viens de tester en rapide.

Perso, je comprend pas l'intérêt d'avoir un script pour la partie serveur.
C'est quoi la valeur ajouté à un simple :

apt-get install apt-cacher-ng

Autre point : je fais la chasse aux dépendances inutiles.
python-nmap ne me parait pas obligatoire car tu peux très bien utiliser nmap (qui lui nécessitera d'être renseigné comme dépendance) directement via subprocess.

Sinon, c'est plutôt bien codé  tongue

Hors ligne

#11 03-02-2020 00:06:07

mothsart
Modérateur
Inscription : 31-10-2016
Messages : 1 207

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Y'a aussi un truc qui me chiffonne : dans ton "installClient", si il existe déjà une ligne de proxy dans /etc/apt/apt.conf, qu'est-ce qui se passe ?
De la lecture du code, ça va insérer une nouvelle ligne sans en tenir compte... ça me parait un peu léger.

Hors ligne

#12 03-02-2020 07:37:53

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

HI, thx pour le retour wink

@/serveur
bah oui pas de valeur ajoutée. Il installe le serveur, rien de plus. On peut le paramétrer. Mais les réglages par défaut sont satisfaisant
Faut le voir dans la globalité du script : serveur et client et automatisation de tâches
Sinon, on résume avec une doc
pour le serveur apt-get install LePaquet, pour le client echo "patati.." > /etc...
Mais là le but c'est de se charger de la conf, non ?
Sinon tu penses à quoi comme valeur ajoutée ?

@Client
Il crée un  fichier avec un nom bien spécifique (00aptproxyANC), ce serait incroyable qu'un user ait mis un fichier perso avec un tel nom... Donc si un fichier existe déjà avec ce nom c'est que le script a déjà été lancé et s'il est relancé, il est effacé par la nouvelle conf.
Ensuite, on peut proposer une confirmation avant écriture

@dépendance
Oui pas testé, enfin pas de façon poussée
J'avais pensé ajouter à l'install client de rajoute le paquet python-nmap et / ou pip install nmap.

Désolé très en vitesse wink

Dernière modification par cyrille (03-02-2020 08:10:54)


All you need : #!/bin/bash

Hors ligne

#13 03-02-2020 08:07:15

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Concernant la valeur ajoutée du serveur :
A la rigueur ajouter cron-apt et le régler pour une récupération des paquets la nuit quand personne n'utilise le réseau, sinon je ne vois pas trop....

Sinon, le script suffit il ainsi ? Ou faut il le réécrire avec des classes ?

Mieux vaut se baser sur le script de la branche devel du git wink

Dernière modification par cyrille (03-02-2020 08:09:10)


All you need : #!/bin/bash

Hors ligne

#14 03-02-2020 08:39:28

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Ensuite avec cron-apt, je peux paramétrer la mise à jour automatique des mises à jours de sécurité
Je sais que ce n'est pas top top de laisser tourner les mises à jour toutes seules mais bon, dans ce cas ce ne serait que celles de sécurité, sur une base debian stable ça ne devriat pas poser de soucis...
A voir...


All you need : #!/bin/bash

Hors ligne

#15 03-02-2020 11:02:31

mothsart
Modérateur
Inscription : 31-10-2016
Messages : 1 207

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Je vais détailler un peu plus.

En fait, la norme c'est d'avoir un paquet (.deb) serveur et un paquet client ainsi que des exe distincts.
Là, tu as un script qui gère les 2. Ca peut paraitre sympa pour un utilisateur débutant... mais c'est finalement une couche supplémentaire pour faire la même chose et ça va embrouiller ceux qui sont plus expérimentés.

Dans tous les cas, l'utilisateur va devoir utiliser la ligne de commande et au lieu de faire "apt-get install" (ou via une GUI) qui est quand même vachement standardisé, il va devoir lancer ton script.
La, si on met une doc dans le wiki pour installer la partie serveur, ton script sert à rien.

Y'a 2 intérêt que je vois à un script serveur (et ça devrait se cantonner à ça) :
- récupérer le port du serveur de cache (utile surtout si il a été customisé)
- configurer un cron

Du coup, ça sera l'installation du paquet qui aura pour dépendance cron-apt et apt-cacher-ng.
Si on peut éviter (sauf cas vraiment à la marge : par exemple, la GUI primtuxstore pilotera apt) d'inclure des installations de paquet dans des scripts, c'est mieux.

Pour les dépendances, je suis assez stricte car on supporte plusieurs versions de Primtux basés sur des Debian/Ubuntu différentes et par expérience, moins on a de dépendances et moins on est susceptible d'avoir des blagues lié à un environnement particulier.

Il crée un  fichier avec un nom bien spécifique (00aptproxyANC), ce serait incroyable qu'un user ait mis un fichier perso avec un tel nom...

Ben, justement : si on lance ton script plusieurs fois, il se passe quoi ?
Imaginons par exemple que pour des raisons de sécu, le gestionnaire du parc décide de changer de port ou que le serveur a changer d'IP.
Il faut que ton script puisse avoir un argument (optionnel : sinon il prend 3142 par défaut) sur le port et mette à jour ton fichier.

J'avais pensé ajouter à l'install client de rajoute le paquet python-nmap et / ou pip install nmap.

Pour les mêmes raisons déjà évoqués tout à l'heure, je suis pas fan. Apt fait très bien son job, ça sert à rien de mettre une couche d'abstraction supplémentaire.

Sinon, le script suffit il ainsi ? Ou faut il le réécrire avec des classes ?

Mon avis est assez tranchant concernant la POO : ça entraine plus de soucis que ça n'en résoud.
Le dev pour moi, peut se résumer à : 1, des structures de données et 2 des algorithmes (des méthodes) :La POO mélange les 2 concepts en 1 et on le voit bien avec les nouveaux langages, c'est un concept en perte de vitesse car finalement peu convaincant.
Des méthodes courtes qui font des actions précisent, c'est la clé d'un truc qui marche (peu d'effets de bord car tout est cloisonné), c'est potentiellement testable (on peut facilement tester unitairement chaque chose), les correctifs sont souvent plus petits et donc facile à comprendre dans un diff git.

Hors ligne

#16 03-02-2020 11:05:43

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

OK merci d'avoir préciser les attentes, je vais adapter wink


All you need : #!/bin/bash

Hors ligne

#17 03-02-2020 12:53:09

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

mothsart a écrit :

Je vais détailler un peu plus.
Dans tous les cas, l'utilisateur va devoir utiliser la ligne de commande et au lieu de faire "apt-get install" (ou via une GUI) qui est quand même vachement standardisé, il va devoir lancer ton script.

Oui on est d'accord, le but c'est d'avoir un GUI, mais je ne vais pas me lancer dans son codage avant de savoir si le script est accepté ou non.

Dès qu'il sera validé, je coderai en GTK et ferai un DEB
Par contre, je trouve plus concret de laisser qu'un script avec au démarrage un client / serveur


mothsart a écrit :

Y'a 2 intérêt que je vois à un script serveur (et ça devrait se cantonner à ça) :
- récupérer le port du serveur de cache (utile surtout si il a été customisé)
- configurer un cron

OK pour le cron, je mets ça en place,
la conf du port je m'en doutais d'où son passage sous forme d'une variable
Par contre, où ça va devenir chaud c'est de détecter depuis le client le serveur si on ne connait ni son IP, ni son port....
Récupérer le port ne pose pas de soucis, mais sa transmission au client , c'est quasi impossible . Car même si stocké dans un fichier, je ne vois pas comment le client va scanner tous les PC du parc à la recherche de ce fichier (?)



Ben, justement : si on lance ton script plusieurs fois, il se passe quoi ?
Imaginons par exemple que pour des raisons de sécu, le gestionnaire du parc décide de changer de port ou que le serveur a changer d'IP.
Il faut que ton script puisse avoir un argument (optionnel : sinon il prend 3142 par défaut) sur le port et mette à jour ton fichier.

Devrait pas poser trop de soucis vu que l'IP et le port passe en variable
Donc si l'user relance le script car l'ip du serveur a changé, il faut bien que le fichier précédent soit effacé et remplacer par le nouveau. Ce que fait le script actuel.

OK pas de classes, je laisse tomber et garde la structure actuelle
Merci pour les remontées, ça permet d'évoluer wink

Dernière modification par cyrille (03-02-2020 12:54:30)


All you need : #!/bin/bash

Hors ligne

#18 03-02-2020 13:31:09

Philippe Dpt35
Administrateur
Lieu : Ille-et-Vilaine
Inscription : 28-10-2015
Messages : 3 229
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

cyrille a écrit :

Par contre, où ça va devenir chaud c'est de détecter depuis le client le serveur si on ne connait ni son IP, ni son port....

D'où peut-être l'intérêt de séparer la configuration du serveur, qui ne se fait qu'une fois, et celle des clients, à faire sur chacun d'un.
Le script serveur fait les installations nécessaires, et fournit toutes les informations utiles pour configurer les clients ensuite: IP et port, en sortie de console, et/ou dans un fichier txt ou html lancé automatiquement.

Hors ligne

#19 03-02-2020 13:33:48

mothsart
Modérateur
Inscription : 31-10-2016
Messages : 1 207

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Par contre, je trouve plus concret de laisser qu'un script avec au démarrage un client / serveur

Je ne partage pas ton avis.
Toujours privilégié le "standart" sur "l'original".
Je sais que du coup, ça vire pas mal de chose que tu as fait mais c'est un peu le principe du dev. (ne pas s'attacher)

Par contre, où ça va devenir chaud c'est de détecter depuis le client le serveur si on ne connait ni son IP, ni son port....
Récupérer le port ne pose pas de soucis, mais sa transmission au client , c'est quasi impossible . Car même si stocké dans un fichier, je ne vois pas comment le client va scanner tous les PC du parc à la recherche de ce fichier (?)

Cherche pas, c'est pas possible... ça serait trop long de tout scanner.
On va dire que ce qui fait l'intérêt de ton script comparé à une doc c'est la recherche d'ip via nmap et donc simplifier les choses pour un utilisateur non averti. (qui utilise le port standart)
Si l'admin décide de changer le port, c'est qu'il est un utilisateur "avancé" et ton script n'a pas vraiment d'intérêt pour lui.
Il va récup l'ip et le port comme un grand et faire à la main.

Devrait pas poser trop de soucis vu que l'IP et le port passe en variable
Donc si l'user relance le script car l'ip du serveur a changé, il faut bien que le fichier précédent soit effacé et remplacer par le nouveau. Ce que fait le script actuel.

Ok, c'est pas ce que j'en ai déduis en lisant en diagonal ton code mais si tu le dis.

Hors ligne

#20 03-02-2020 14:53:42

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Ok, c'est pas ce que j'en ai déduis en lisant en diagonal ton code mais si tu le dis.

[== Undefined ==]
    fichier = open(fileLocInstall, "w")
    fichier.write(msgApt)
    fichier.close()

L'option w permet cela, non ?

``w''   Truncate to zero length or create text file for writing.  The
             stream is positioned at the beginning of the file.

Bon je vais relire ces remontées et voir comment modifier en fonction des attentes.


All you need : #!/bin/bash

Hors ligne

#21 04-02-2020 10:54:57

mothsart
Modérateur
Inscription : 31-10-2016
Messages : 1 207

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

L'option w permet cela, non ?

Oui, tout à fait.

Une fois que tu aurais avancé, il serait sans doute bien d'écrire la doc dans le wiki. As-tu des droits d'écriture ?

Hors ligne

#22 04-02-2020 11:48:07

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Non je ne pense pas avoir ces droits
Finalement, je me dis que d'opter pour le python n'est peut être pas la meilleure solution
Car si c'était pour avoir un paquet debian, du bash dans le postinst aurait suffit...

Pas grave, ça me fait bosser python. Mon but étant de me faire les dents sur le gtk. wink


All you need : #!/bin/bash

Hors ligne

#23 04-02-2020 12:06:18

mothsart
Modérateur
Inscription : 31-10-2016
Messages : 1 207

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

@Steph : tu pourras lui donner les droits ?

Finalement, je me dis que d'opter pour le python n'est peut être pas la meilleure solution
Car si c'était pour avoir un paquet debian, du bash dans le postinst aurait suffit...

Je suis pas sur de te suivre : en quoi tu vas avoir besoin de faire du postinst ?
Et même si, rien ne t'interdit d'avoir un fichier bash qui appelle ton script python.

Comme dit, la finalité c'est mettre à dispo un process clé en main pour un utilisateur débutant ou intermédiaire donc GTK c'est un vrai plus.
Et pour du gtk, python c'est ce qui a de mieux.

Hors ligne

#24 04-02-2020 12:40:19

cyrille
Modérateur
Lieu : Avesnois (59)
Inscription : 21-09-2016
Messages : 218
Site Web

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Je suis pas sur de te suivre : en quoi tu vas avoir besoin de faire du postinst ?

Pas grave wink
Je disais simplement que le postint d'un paquet debian pouvait faire pour l'instant ce que le script python faisait
Mais pas grave, j'avoue ne pas avoir était très clair.

Et oui, il n'y aurait dans ce  cas pas l'interface GTK. Donc ce sera finalement un plus de le faire en python / GTK

Pas de soucis , je revois le tout avec le cron-apt et les autres remarques, asap wink

++
C

Dernière modification par cyrille (04-02-2020 12:41:26)


All you need : #!/bin/bash

Hors ligne

#25 04-02-2020 17:51:11

Steph
Administrateur
Inscription : 03-06-2015
Messages : 5 943

Re : Créer un serveur de cache apt pour les parcs utilisant primtux

Ok pour les droits sur le wiki, j'envoie ça.

Hors ligne

Pied de page des forums