Aller au contenu principal
Bienvenue sur Forum Puppy Linux - Toutou Linux - Astuces - Aides !
Lorsque vous n'êtes pas connectés vous pouvez visiter la totalité du forum mais avec certaines restrictions : cf le règlement pour les visiteurs non connectés. Vous êtes chaleureusement conviés à vous inscrire afin de bénéficier de toutes les fonctionnalités du forum et de participer aux échanges.
Messages récents
11
Scripts / Comment déboguer un script
Dernier message par Rantanplan -
Bonjour les curieuses et les curieux,

Comme la plupart de mes articles, celui-ci, sans prétention, constitue une introduction au débogage avec l'espoir qu'il pourra aider, un peu.

Pour commencer, en début de script, on insère ces deux lignes :
exec 2>[/chemin/nom_du_fichier.txt ou log]
set -x

et à la fin de la partie à déboguer ou du script, on ajoutera :
set +x


C'est le minimum.
Lorsque l'exécution du script s'achève, il reste à ouvrir [/chemin/nom_du_fichier.txt ou log] et à l'analyser pour modifier le programme afin qu'il fonctionnât comme il faut.

Cependant, vous aurez probablement envie de vous donner les moyens d'affiner le débogage.

Par exemple, vous aurez peut-être envie de connaître si une variable n'est pas définie.
Dans ce cas, à la suite du shebang, ajoutez -u, comme ceci :
#! /bin/bash -u

ou, il est possible de l'insérer au début du script :
set -u
set -o nounset

Pour vérifier les erreurs logiques du script, de la même manière que ci-dessus, on pourra ajouter à la suite du shebang :
#! /bin/bash -x

ou, insérer au début du script :
set -x
set -o xtrace

Lors du débogage, chaque ligne de la sortie est précédé d'un signe +.
Ceci peut être modifié au début du script en définissant la variable PS4 de cette manière, par exemple :
PS4=" ==> "

Il est également possible d'orienter la sortie vers un descripteur de fichier, par exemple 6, toujours en début de script.
Compte tenu de ce qui précède, on pourrait lire en début de script :
#! /bin/bash

exec 6> [/chemin/nom_du_fichier.txt ou log]
PS4=' ==> '
BASH_XTRACEFD="6"
set -x
set -u
set -o xtrace
set -o nounset

Pour afficher l'état de sortie tuyau (ou pipe en pas français), on peut encore ajouter une nouvelle ligne.
Par exemple, celle-ci :
set -o pipefail

Enfin, on voudra peut-être que le programme s'arrête lorsqu'un code de sortie non nul est renvoyé.
On insèrera les lignes suivantes :
set -e
ifs_old=$' \n\t' # voir ¹
IFS=$'\n\t'

En conclusion, un script à déboguer pourrait contenir avant le script lui-même ces quelques instructions :
#! /bin/bash

exec 6> [/chemin/nom_du_fichier.txt ou log] # sortie vers le descripteur de fichier 6
PS4=' ==> '                                 # modif. de PS4 de '+' en ' ==> '
BASH_XTRACEFD="6"                           # paramétrage de xtrace
set -x                                      # activation du mode xtrace
set -o xtrace                               # activation du mode xtrace
set -u                                      # erreur en cas de variable non définie
set -o nounset                              # variable non définie
set -e                                      # sortie du script si retour non nul
set -n                                      # vérification de la syntaxe
set -o noexec                               # vérification de la syntaxe
set -o pipefail                             # activation du mode pipefail si retour différent de zéro
ifs_old=$' \n\t'                            # stockage de la variable IFS d'origine ¹
IFS=$'\n\t'                                 # définition de la variable IFS pour le débogage

et, en fin de script :
set +x                                      # désactive le mode débogage
IFS=$ifs_old                                # rétablissement de la valeur initiale d'IFS ¹


Pour aller plus loin
On peut encore aller plus loin dans le débogage.
Vous pouvez utilement vous rapporter à la page qui a servie de support à cet article.
Vous la trouverez ici : https://fr.linux-terminal.com/?p=4505


Voilà !
C'est tout pour aujourd'hui.

Amusez-vous bien les p'tits loups.

¹ : pour vérifier la valeur initiale d'IFS, dans un terminal, saisir :
set | grep IFS
12
Education - Loisirs / Re : Primtux9 en mode persistant et Triton 10 sur la même clef bootable !
Dernier message par AlainX -
Bonsoir
Je pense plutôt que c’est dans la génération  du secteur de boot qu’il y a un problème...

Je vais essayer de créer une clef bootable avec une seule partition qui ne servira à rien sauf à redémarrer ou à arrêter l’ordinateur
Si cette clef fonctionne je construirai un deuxième  script qui  recréera d’autres partitions en ext4 sur cette clef  pour accueillir les sfs de triton, le fichier de sauvegarde, les fichiers de fonctionnement de primtux en mode live sans persistance, une partition swap pour utiliser primtux quand on a moins de 4go de ram et une autre partition en ext4 pour gérer la persistance.
@petihar
Est ce que ton pc est capable de booter en mode legacy ?
https://share.gemini.google/SedJnhWRNn85

Attention gemini ne donne pas toujours des réponses exactes et si tu as des doutes reste en uefi...
13
Education - Loisirs / Re : Primtux9 en mode persistant et Triton 10 sur la même clef bootable !
Dernier message par Rantanplan -
Bonjour @petihar,

pour savoir où le script coince, tu peux mettre en début de script :

exec 2>/tmp/analyse_primtux.log
set -x

Et tu exécutes depuis geany qui ouvrira un terminal avec le code qui défile et les valeurs que prennent les variables, ou ce que font les commandes.
Il reste à ouvrir /tmp/analyse_primtux.log et l'analyser le terminal de contrôle pour tenter de voir ce qui ne va pas.

Une piste, peut-être : il semblerait que des répertoires ne soient pas créés comme il le faudrait. Pourquoi ?

Amuse toi bien.

14
Education - Loisirs / Re : Primtux9 en mode persistant et Triton 10 sur la même clef bootable !
Dernier message par petihar -
Bonjour Alain,
  Je n'ai pas eu davantage de succès avec ce dernier essai. Je pense bien avoir respecté tes instructions en particulier geany et son bouton execute pour tester tes scripts Je ne comprends pas, peut-être suis-je un peu nigaud ?
  Ce qui m'intéresse en fait, c'est la persistance sur la clef usb. J'ai déjà deux clefs avec des puppy installés en complément de linuxmint pour l'une et ubuntu pour une autre, il suffit de "jouer" avec le grub-config et le tour est joué. Au démarrage j'ai le choix. Mais j'aurais aimé avoir une clef dédiée à Triton10.
  Ma machine est un HP laptop model 17-ca1046nf. C'est une machine qui doit avoir environ 8 ans si ma mémoire est bonne. Aucun problème avec, c'est avec lui que j'ai travaillé sur Triton 9 et puis le 10.
  Ne te casse pas la tête pour moi, pas de quoi gâcher tes vacances sans doute bien méritées  ;). Bien cordialement petihar

P.S. J'ai découvert ces derniers jours la distribution MiniOS (version standard) que je trouve absolument superbe, simple, efficace, jolie... bref un coup de cœur. J'aurais aimé quelque chose de semblable pour Triton10 !
        Je me suis aussi rendu compte que de nombreux linux à vocation éducative étaient sur le "marché".... alors envisager un Triton-école comme cela avait été évoqué serait un peu prétentieux  :)
15
Réseau / Autre, autre serveur de fichiers avec option de versement
Dernier message par Polo l’asticot -
Donc il s'agit encore d'un serveur de fichiers. Il permet d'abord de télécharger (c'est le moins), mais aussi de téléverser (on envoie ces fichiers sur le serveur pour aussi les partager). Il ne nécessite pas de configuration (ou presque) et il permet d'utiliser simplement son navigateur. Tout petit, rapide, lancé uniquement quand on en a besoin en un clic.

Marche à suivre
On lance le script fourni. Une fenêtre de terminal s'ouvre avec Droopy affiché en grand. Sur le même poste, on peut lancer un navigateur sur l'adresse localhost:8800
Cela permet de vérifier ce que les autres verront et éventuellement d'ajouter un fichier oublié. On voit cette page :


Sur le bandeau du titre de la fenêtre s'affiche, en français, à la fin de la ligne, l'adresse à utiliser sur les autres postes du réseau interne. En tapant par exemple 192.168.1.13:8800 on obtient la même page Web, avec les mêmes fonctionnalités, sur l'autre poste, quel que soit le système d'exploitation utilisé (téléphone, PC Windows…).

Si on clique sur la première ligne sur fond noir, on affiche l'adresse IP et le port à utiliser pour retrouver le serveur à partir d'Internet ! Cela à partir du site de l'auteur (actif depuis 2015 ?). Il faut permettre les connexions à travers le pare-feu et éventuellement faire une redirection.

Pour arrêter le serveur, un simple <Ctrl>+<C> suffit à refermer le terminal.

Options configurables
À partir de la ligne 100 du script, on peut configurer :
– le nom du répertoire partagé (/root/Public par défaut) ;
– le nom et mot de passe d'une personne autorisée à utiliser les fonctionnalités ;
– le message qui s'affiche ;
– le chemin du logo (pour ceux qui n'aiment pas Tex Avery, ils peuvent changer, mais cela m'a pris du temps à construire celui-ci) ;
– le numéro du port (8800 pour l'exemple) ;
– le chemin d'accès vers un certificat auto-signé ;

C'est à parcourir dans le script, chaque option étant expliquée en français. Donc, par défaut, ce n'est pas sécurisé, mais on peut « blinder le bouzin » si on le veut.

Exemple d'utilisation
On fait un voyage avec un groupe d'amis. On prend des photos. De retour, on propose un partage : ses dix meilleures photos, meilleurs souvenirs.

Polo ouvre le serveur chez lui et donne le nom et le mot de passe genre : espagne26:maisouvretoidonc à tous les amis (il est précisé partout qu'il ne faut pas d'espaces dans les options). Il place ses photos polo-vue145790.jpg, polo-vue145791.jpg, polo-vue145790.jpg… dans le répertoire Public.
Fifi téléchargera ce qu'elle veut et ajoutera fifi-vue2229865.jpg, fifi-vue2229866.jpg…
Et Loulou, et Riri. Il est à noter qu'on peut sélectionner plusieurs fichiers et téléverser ensuite l'ensemble d'un coup.

Bien sûr, on peut faire un groupe avec un partage chez les ricains. Mais avec les risques liés à l'absence de confidentialité des données : personnes déshabillées, textes analysés et enregistrés… C'est gratuit et simple, mais sans aucune éthique et dans le but avoué de faire de l'argent : il faut assumer l'utilisation… (Est-ce qu'on vendrait la photo de son enfant ? Est-ce qu'on la donne à quelqu'un qui va la vendre ?)

Pour test ou installation
On ouvre et on copie l'archive pour obtenir un répertoire /var/opt/woolfy contenant droopy, woolfy.dektop, woolfy.png, woolfy.sh
On copie woolfy.desktop dans /usr/share/applications pour l'intégrer aux menus. Il devrait apparaître dans Internet ou Réseau. Pour les impatients, on clique directement sur woolfy.desktop pour commencer à l'utiliser.

Le programme de base s'appelle Droopy et se trouve dans de nombreuses distributions. J'ai appelé ma francisation Woolfy pour ne pas interférer avec ce programme, s'il est installé. Normalement Droopy se lance en ligne de commande avec sa tripotée d'options. Là, il se lance d'un clic, par ce script originalement utilisé dans antiX. Ma version est en français et ne se bloque pas au démarrage. Si on a un Python 3.13 ou supérieur, il faut récupérer la bibliothèque CGI qui n'est plus présente par défaut. Sous Debian, il faut utiliser le paquet python3-legacy-cgi, uniquement avec Python 3.13 ou supérieur.
Le programme est construit pour fonctionner avec Python 2 (pas testé) et Python 3.

J'espère que cela sera utile à quelqu'un. J'utilise personnellement le programme pour copier de petits scripts et des images d'un poste à l'autre. Sans configuration de serveur, c'est rapide et cela n'utilise pas de ressources système en permanence. On fait une archive pour passer de nombreux fichiers, les sous-répertoires de Public étant totalement ignorés par le serveur.

Bon amusement. Bonnes vacances. Bonne troisième canicule

16
Bureautique - Comptabilité / Re : Stardict en ligne de commande
Dernier message par Rantanplan -
Bonjour les cynocéphales ou pas, :P

ATTENTION ! CES DICOS FONCTIONNENT AVEC STARDICT GUI, MAIS PAS FORCÉMENT AVEC STARDICT CLI

Trouvé vraiment par hasard au détour d'un chemin creux, ombragé et frais. En ces temps de canicule, un mirage, un miracle.

Donc, en allant là : https://stardict.uber.space/fr/index.html vous allez tomber dans une mine.
Pas de stress, la chute sera courte et sans dommage.
Vous tomberez, donc et alors, sur des dictionnaires.
Pour ceux qui veulent parfaire leur usage du breton, par exemble, il y a deux dico.
L'un pour le brezhonnez vers le françois ;
l'autre va dans le sens inverse.

En haut de la page citée ci-dessous, il y a "<Back", cliquez dessus et balladez-vous.
Sûr que vous trouverez des trucs qui vous intéresseront.

Pour les sumériens désireux de nous rencontrer et qui veulent se faire comprendre des ces ignares qui ne parlent que le français, il y a un dico 'sumérien - français' :D.

Vous en trouverez encore qq-uns ici : https://archive.org/download/stardict-dictionnaires-francais
ou encore là : https://tuxor1337.frama.io/firedict/dictionaries.html
ou encore aussi ici http://www.polyglotte.tuxfamily.org/doku.php?id=donnees:dicos_bilingues

Ces dicos devraient pouvoir être exploités avec Goldendict.

Voilà de quoi occuper les longues vacances oisives pour qu'elles le soient un peu moinsses :P .

Amitiés les potos.
17
Fourre-tout ! / Le rapport Grin : esperanto vs troïka français-allemand-anglais ou tout-anglais
Dernier message par Rantanplan -
Bonjour les potos,

Je voulais faire un résumé du rapport François Grin publié en septembre 2005.
À l'époque du rapport, François Grin occupe les fonctions de Professeur à l'Université de Genève, Directeur adjoint, SRED.
On ne pourra pas le taxer de chauvinisme, ni d'anti-pas-français.
On peut trouver le texte intégral du rapport à cette adresse : https://www.vie-publique.fr/rapport/27650-lenseignement-des-langues-etrangeres-comme-politique-publique
S'il avait été mis en oeuvre vous le sauriez.
Ce document compte 131 pages, une paille.
Mais, bonne nouvelle, quelqu'une ou quelqu'un a eu la bonne idée d'en faire une synthèse enlignée chez wikipédia à cet endroit : https://fr.wikipedia.org/wiki/Rapport_Grin

En très simple, l'anglais coûte cher à l'UE. Le rapport évalue son cout à 25 milliards/an pour l'UE.
Et pour la France, c'est plus de 5 milliards d'euros qui pourraient être économisés.
À l'heure où l'État cherche désespérément de l'oseille partout y compris dans les poches des plus pauvres, voilà une bonne piste.

Je vous invite à lire l'article de wikipédia : il y en a pour un quart d'heure.
C'est instructif et ça remet l'église au milieu du village.

Oui à la biodiversité linguistique.
Oui à la biodiversité culturelle.

Amikaĵoj comme on dit en esperanto :P .
18
Fourre-tout ! / Eslapion une dérivée ou un fork de SliTaz
Dernier message par Rantanplan -
Bonjour,

le torchon brûle chez SliTaz.
Tant est si bien que deux administrations importants ont claqué la porte.

L'un d'entre eux a décidé de continuer de développer une version SliTaz de son crû : SliTaz current.
SliTaz current devient Eslapion.

Le site est là : https://eslapion.org
Il y a une page pour télécharger du 32 ou du 64 bits.
Il y a un lien vers les dépôts.
La doc. est en cours de rédaction.

Bon vent à Eslapion et à son papa.
19
Utilitaires / Re : Pam, Poum en galère sauvés par netcat
Dernier message par Polo l’asticot -
@Rantanplan‍ 

Si tu n'as pas netcat, tu as peut-être nc. Cela fait la même chose, avec les mêmes commandes. Ils ne sont probablement pas dans le même paquet.

On survit à la chaleur avec un bon mal de tête. Et on sort si peu que le coing commence à avoir une drôle d'odeur… 
Vivement la rentrée !

Fraternitou-toutou-itou

Polo
20
Utilitaires / Re : Pam, Poum en galère sauvés par netcat
Dernier message par Rantanplan -
Bonjour le survivant à la canicule "qu'on ne sait pas comment l'appeler tellement elle a de noms" (voir chez mastodon, les mastopotes ont de l'imagination les bougres),

Bref, tu as survécu aux extrêmement fortes chaleurs, et c'est youpiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.

Beau sujet, bien traité : on croirait du Rantanplan :P 8) :o :D .

Bon, Toutou, y connaît pas catnet, y connaît que cat.
Je 'voirai' sur une autre distro, mon vieux potager, comme dirait @petihar.

Fraternitationnellement tien.
Simple Audio Video Embedder