Afficher les données Exif sur Thunar

760 mots, temps de lecture 3 minutes.

Afficher les métadonnées EXIF avec un clic droit sur Thunar

Ha, il y a longtemps que je n’ai pas écrit sur le sujet !

Sur les PC sous un environnement Gnome avec le gestionnaire de fichiers Nautilus j’applique la méthode décrite dans mon l’article « Afficher les métadonnées exif avec un clic droit sur Nautilus » écrit en 2015 (il y a une légère modification sur le script d’aujourd’hui, mais les deux fonctionnent).

Il se trouve que le PC que j’utilise le plus souvent ces derniers temps est sous Manjaro avec un environnement XFCE et donc Thunar comme gestionnaire de fichiers.

Continuer la lecture de « Afficher les données Exif sur Thunar »

GnuPG Renouveler sa clé de chiffrement

1 654 mots, temps de lecture 9 minutes.

Il était temps que je renouvelle ma clé de chiffrement, en effet je n’avais pas mis de date d’expiration et par procrastination dont je suis un spécialiste je reculais la date de cette tâche de jour en jour pour ne pas dire d’année en année. Ce week-end je m’y suis collé et c’est l’occasion de créer un billet pour blog.

Trouvant les interfaces graphiques limitées dans les options, j’ai utilisé la ligne commande bien plus riche.

Faut-il communiquer qu’en mode chiffré ou pas… ce sera le sujet d’un autre article !

Avant tout, qu’est-ce que GnuPG ?

Continuer la lecture de « GnuPG Renouveler sa clé de chiffrement »

Renommer vos videos par lot en utilisant les metadonnees

556 mots, temps de lecture 3 minutes.

Pour renommer les fichiers MP4 par lot en utilisant les métadonnées

telles que la date et l’heure de création

J’ai écrit plusieurs articles exiv2 dont comment renommer vos photos par lot en utilisant les métadonnées Exif. Cela n’est pas transposable car exiv2 ne gère pas les métadonnées des fichiers vidéo MP4.

Alors comment faire ?
Je vois deux possibilités, il y en a certainement d’autres.

Continuer la lecture de « Renommer vos videos par lot en utilisant les metadonnees »

Diminuer la dimension des images par lot en ligne de commande

Tuto – Diminuer la dimension des images par lot en ligne de commande – Bash

Si comme moi vous devez envoyer un tas d’images via mail et que vos images pèsent trop lourd, ou que vous devez les publier et toujours ce problème de poids…

Voilà comment je procède pour leur faire un régime en ligne de commande bash.
Je le mets ici, si cela peut vous servir, tant mieux, moi ça me permet d’éviter de me recreuser la tête au besoin.

Pour cela nous allons utiliser deux commandes fournis dans le paquet imagemagick, « identify » et  « mogrify » et la commande « awk » qui comme la commande « sed » est une commande aussi très puissante et permet de faire énormément de choses car elles intègrent beaucoup de fonctions mais on ne rentra pas dans le détail de awk ici.

Imagemagick est un logiciel très puissant qui permet de nombreuses manipulations d’images en ligne de commande tel que rotation, conversion et bien plus.

Il faut donc avant tout installe imagemagick

sudo apt install imagemagick

Puis pour redimensionner par lot :

$ identify *.jpg | awk '{split($3, TAB, "x"); W = TAB[1]; H = TAB[2]; if(W > 1200){system("mogrify -resize 1200x "$1)} if (H > 1200){system("mogrify -resize x1200 "$1)}}'

identify *.jpg → identifie les fichiers se terminant par jpg et passe à la commande axk.
awk → pour faire simple, divise la chaîne en un tableau qui va permettre la comparaison.
mogrify → permet ici de redimensionner, elle a plein d’autres possibilités.

Bref : je redimensionne à 1200 maxi les fichiers jpg, pour la hauteur et la largeur.

Pour info : Extrait du man awk concernant « split »
split(s, a [, r [, seps] ])
Split the string s into the array a and the separators array seps on the regular expression r, and return the number of fields. If r is omitted, FS is used instead. The arrays a and seps are cleared first. seps[i] is the field separator matched by r between a[i] and a[i+1]. If r is a single space, then leading whitespace in s goes into the extra array element seps[0] and trailing whitespace goes into the extra array element seps[n], where n is the return value of split(s, a, r, seps). Splitting behaves identically to field splitting, described above. In particular, if r is a single-character string, that string acts as the separator, even if it happens to be a regular expression metacharacter.

Le billet Diminuer la dimension des images par lot en ligne de commande est apparu en premier sur le blog de Sima78.

Initiation au Bash

Humeur – Initiation au Bash

Cela fait deux années de suite que je me propose pour donner des cours d’initiation à la ligne de commande. Elle se déroulait par visioconférence.

La prochaine commence demain et pour la première fois en présentiel.

Cela avait commencé lors du confinement, une idée pour que l’association garde une activité et des échanges entre adhérents malgré la pandémie. D’autres adhérents ont, pendant toute la pandémie proposés quelques conférences, Nous avions également organisé un Apéroot via visio où l’on pouvait parler de tout et de rien et cela depuis le serveur personnel d’un des adhérents.

Bref nous avons tous essayé tant bien que mal à maintenir une activité.

Donc l’initiation en présentiel commence demain !

Je m’interroge !

Sauf que je m’interroge, car si j’ai eu du monde sur les deux présentations précédentes, là ce n’est pas le cas… Un inscrit, et encore, pas certain qu’il puisse venir aux six séances. D’autres m’ont fait savoir qu’ils viendraient, peut-être ?…

Comme je l’ai dit, même s’il y a une personne je viens ! Ça fera un cours particulier, ça ne me dérange pas.

La difficulté en visio est de savoir où en est chacun : est-ce que tout le monde suit ?

Il y a ceux qui n’hésitent pas à poser des questions, il y a ceux qui par leurs silences, je ne sais pas s’ils suivent réellement ou s’ils n’osent pas poser de questions pour ne pas « ralentir » le cours.

Il y a ceux qui tapent la commande demandée et que me disent qu’elle ne fonctionne pas ! Faire de multiple partages d’écran est pénible, je dois donc deviner ce qui se passe sur son écran avec ce qu’il me dit pour trouver l’erreur commise.

Bref, même si ce n’était pas simple, j’ai vraiment apprécié faire ça et les bons retours m’ont fait plaisir. Ce qui n’empêche que je me pose la question sur les réels acquis. N’y en a-t-il pas qui n’ont pas osé s’exprimer et qui peut-être, largués, j’aurai dégoûté de la ligne de commande, ce qui serait le résultat inverse à celui souhaité ?

Pourtant ce nouveau format d’initiation me paraît bien plus efficace !

En effet, en présentiel plusieurs adhérents qui connaissent très bien la ligne de commande se sont proposés pour m’assister. Pendant que je fais la présentation ils pourront tourner pour voir, aider, répondre à des questions… Ce qui permettrait a chacun de mieux s’approprier la ligne de commande.

Oui mais Sima, tu as fait un peu de promo auprès des adhérents ?
J’ai essayé de vendre au mieux sur notre liste interne. Mais bon… exemple envoyé sur mes mails

(…)
Vous avez Linux que vous utilisez et aimez et vous avez entendu parler de « lignes de commande », de « terminal » qu’on appelle aussi « Shell », cet écran noir qui peut paraître austère.
Ça peut paraître compliqué, ça ne l’est pas… L’initiation est justement là pour vous familiariser avec le côté obscur de votre écran.
Vous apprendrez à mieux connaître l’arborescence de votre Linux, faire des recherches plus pointues qu’avec le mode graphique, et d’autres choses… Il n’y aura plus ou presque de secret ou mystère pour vous !
Sima78… Qui vous offre un voyage au C-Shell

(…)
Bonne soirée et désolé pour ce langage barbare… Mais avec l’initiation au bash, tout cela devient un peu plus clair 🙂
Inscrivez-vous, niveau totalement novice… lien en dessous.
Découvrez et avancez pas-à-pas avec les lignes de commandes… Vous serez comme Oscar Diggs, le magicien d’OZ, heu pardon, le magicien de votre OS (votre Linux).
Sima78… Dicton du moment : Avec Root66 devenez le magicien d’OS.

Alors pourquoi si peu d’inscrits ?

Le créneau horaire, le seul que nous ayons eu (18 à 19h30), n’est pas simple pour ceux qui rentrent du travail et doivent ensuite se rendre à la formation, pas assez de temps, et ceux qui habitent vraiment loin, pas évident de prendre (train, plus bus), plus de temps passé dans les transports qu’à la formation).

Conclusion

Je peux avoir une bonne surprise et qu’il y ait plein de monde malgré les inscriptions « informelles », mais je n’y crois pas. Il y aura peu de gens, voire personne. S’il y en a peu, même qu’une seule personne je donnerai le cours.

Par contre il faudra une réflexion et faire un sondage pour voir si une deuxième session cet hiver en faisant un mixe présentiel et visio… Bref, discussion en interne pour savoir comment continuer ou pas… Les décisions sont collectives.

L’annonce est là : Initiation à la ligne de commande

Le billet Humeur – Initiation au Bash est apparu en premier sur le blog Sima78.

Script shell : retrouvez un nom de fichier (odt ou ods) depuis un mot clé

Script shell : retrouvez un nom de fichier (odt ou ods) depuis un mot clé.

Vous recherchez un fichier dont vous ne vous souvenez pas du nom mais vous savez qu’il contient certains mots, retrouver ce fichier avec l’un des mots « clés ».

On peut aussi rechercher dans les fichiers « doc » ou « xls », mais une raison que je ne m’explique pas les résultats sont moins convaincants.

Lors de mes tests sur les fichiers « doc », il m’affichait des résultats de fichiers contenant le mot clé mais en excluait d’autres qui contenait ce même mot clé !? Peut-être que cela est dû au fait qu’ils n’ont pas été enregistrés avec les mêmes versions Word ? Bref, je n’ai pas de réponse pour ces extensions propriétaires.

Voici donc le script, rien de révolutionnaire, je n’invente rien, que des trucs que j’essaie d’adapter :

#!/bin/bash
# Recherche une chaîne de caractères dans tous les fichiers odt ou ods
# de façon récursive depuis le lieu de recherche.

# Syntaxe :
# nomduscript.sh "chaîne à rechercher" (sans guillemets).
# Répondre à la première question par odt ou ods
# Fonctionne partiellement avec doc ou xls ????
# Pour limiter la rechercher mettre le chemin absolu...

# exemple : "/home/user/Documents" (sans les guillemets).
# Pour une recherche depuis l'endroit où se trouve le script
# il suffit de taper un point "." (sans les guillemets).

echo "Dans quelle type de fichier penses-tu chercher ?"
echo -n "Saisir le type de fichier (odt ou ods) : "
read exten
echo -n "Saisir le chemin de départ : "
read chemin
find $chemin -type f -name "*.$exten" | while read i
do
[ "$1" ] || { echo "Bah ! Tu as oublié de mettre le mot recherché..." ; exit 1 ; }
unzip -ca "$i" 2>/dev/null | grep -iq "$*"
        if [ $? -eq 0 ]
        then
                echo "j'ai trouvé ton mot dans $i" | nl
        fi
done
echo "J'ai terminé mon travail !"

Une fois que vous avez sauvegardé ce script sous le nom de votre choix. Pour l’exemple nous allons le nommer search_mot.sh

Donc une fois votre fichier search_mot.sh créer il faut le rendre exécutable :

chmod +x search_mot.sh

Comment l’utiliser ? Il suffit de lancer le script avec le mot clé recherché (en fait, le mot clé est une chaîne de caractères). Exemple « script mot-clé » :

./search_mot.sh taxodiaceae

Le script va demander l’extension de fichier (odt ou ods) sachant que vous pouvez mettre doc ou xls mais avec un résultat moins probant… et je n’ai pas d’explication… Mais testez…

Puis il sera demandé le chemin de départ. Il s’agit du chemin absolu.

Donc soit la racine « / », soit votre home « /home/user/ »… Ou un autre chemin pou serrer au plus prêt la recherche. Mais il doit être absolu et partir de la racine /

Bon assez parlé et mon exemple avec les résultats en lançant le script plus le mot clé (ici taxodiaceae) :

./search_mot.sh taxodiaceae
Dans quelle type de fichier penses-tu chercher ?
Saisir le type de fichier (odt ou ods) : odt
Saisir le chemin de départ : /home/sima78/
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/fiche/chryptomeria.odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/cle_identif/chryptomeria_japonica .odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/noms-familles/taxodiaceae.odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/in-situ/chryptomeria_japonica.odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Bota/coniferes.odt
1 j'ai trouvé ton mot dans /home/sima78/Documents/Pedago/parcours/anim-0018.odt
J'ai terminé mon travail !

Voilà, bien entendu, vous pouvez perfectionner le script, le simplifier, je suis preneur…

Wget – Aspirer un site n’est pas un crime

Aspirer un site n’est pas un crime, ni un vol, tout dépend le but !

Avant de donner les lignes de commande, l’anecdote qui m’a poussé a utiliser wget pour aspirer un site.
Pour la petite histoire
Je m’intéresse à la généalogie et j’ai moi-même un site sur la généalogie de ma famille sous geneweb.
Il y a quelques années déjà j’ai découvert un site qui regroupe une branche de ma famille. Pour ce qui concerne la branche de ma famille rien de vraiment nouveau sauf quelques cousins très éloignés.
Par contre le travail effectué sur cet arbre généalogique est pharaonique.
Soit, le site est un cms dépassé et plus suivi depuis déjà plus de deux ans à l’époque. J’alerte donc le gestionnaire du site des risques, j’échange avec lui, une sympathie s’installe et surtout un gros respect de ma part. Je parcours même de milliers de kilomètres pour le rencontrer. Ce fût pour moi une rencontre mémorable.
Nous avons continuer d’échanger mais il est resté sur ce cms de généalogie complètement dépassé malgré mes avertissements.

Puis, un jour, et les jours suivants, plus de nouvelles, plus de réponses à mes mails… j’insiste de nombreux mois, rien, pas de signe de vie.
Inquiet, je décide d’aspirer son site pour que tout le travail qu’il a effectué ne soit pas perdu (je mets plus bas la ligne de commande utilisée).

Je me suis fait traité de tous les noms d’oiseaux

Pour tenter de faire mieux je vais sur un forum et demande si quelqu’un n’aurait pas connaissance d’un script permettant de créer un fichier Gedcom depuis le site aspiré… J’ai été traité de voleur, d’escroc et autres allégations désagréables. Ça m’a rappelé ma jeunesse, lorsque je trollais sur les forums, sauf que là, je ne trollais pas. Bon, après quelques explications, nombreux m’ont soutenu dans ma démarche, quelques rares obtus ont continué leurs réprobations, de plus en plus timidement pour finalement s’éteindre.

Bref ! Je n’ai pas de script pour créer un gedcom mais j’ai le travail d’une personne dans un coin de mon disque dur que je remettrai à un de ses descendants, du moins j’espère car il n’a de valeur que pour eux.

Passons à Wget et quelques commandes

Aspirer un site web

Le mieux est de contacter le gestionnaire du site pour lui demander si l’on peut vous envoyer les informations qui vous intéressent. L’intérêt de l’aspiration est d’avoir les infos du site Off-Line. Mais évitez d’en abuser, utilisez-le que lorsqu’il n’y a vraiment pas d’autres solution (ou pour télécharger des fichiers, c’est un autre usage et c’est aussi plus bas).
Certains serveurs sont protégés contre l’aspiration de site et il se peut que cela ne fonctionne pas.

Wget et aspirer un site

# wget -r -k -E -np --limit-rate=100k https://site-aspired.com

Cible est https://site-aspired.com.
Options :
-r pour parcourir tous les liens du sites.
-k conversion des liens en liens locaux.
-E conversion php vers HTML, facilite la lecture depuis votre navigateur.
-np pour ne pas remonter dans l’arborescence du site
–limit-rate=100k limite la vitesse de téléchargement à 100k/s

Toutes les lignes de commande ci-dessous m’ont été inspirées par le site de TecMint et plus particulièrement par le billet traitant wget

Utiliser wget pour télécharger des fichiers

Téléchargement d’un fichier

# wget http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz

La commande téléchargera le fichier dans un répertoire actuel. Il montre aussi le progrès de téléchargement, la taille, la date et heure.

Télécharger un fichier en le renommant

# wget -O wget.zip http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz

L’utilisation-O l’option (majuscule), télécharge le fichier en le renommant. Ici nous avons choisi le nom « wget.zip » comme exemple.

Téléchargez plusieurs fichiers avec les protocoles ftp et http

# wget http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz ftp://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz.sig

Ici nous voyons comment télécharger de multiples fichiers en utilisant les protocoles HTTP et FTP avec la commande de wget.
Téléchargez depuis plusieurs URLs d’un fichier
Vous pouvez stocker plusieurs URLs dans un fichier texte et les télécharger avec l’option -i. Ci-dessous nous avons créé tmp.txt dans le répertoire wget où nous mettons la série d’URL (1 par ligne).
Exemple :

nano /wget/tmp.txt

Ajoutez les lignes:

http://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz
ftp://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.gz.sig

Il suffit de lancer:

# wget -i /wget/tmp.txt

Reprenez un téléchargement inachevé

En cas de téléchargement de gros fichiers, il peut arriver que le téléchargement s’interrompre pour une raison quelconque. Avec l’option -c le téléchargement reprendra là où il s’est arrêté.
Sans cet option le téléchargement reprendra depuis le début et wget ajoutera « .1 » à la fin du nouveau fichier.
L’option -c est donc la bonne pratique.

# wget -c https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-9.5.0-amd64-DVD-1.iso

Si « .1 » existe déjà il ajoutera « .2 », etc.

Télécharger en arrière-plan

Avec l’option -b, envoyez le téléchargement en arrière-plan immédiatement après le début du téléchargement, les journaux sont écrits dans le fichier /wget/log.txt.

# wget -b /wget/log.txt ftp://ftp.iinet.net.au/debian/debian-cd/6.0.5/i386/iso-dvd/debian-6.0.5-i386-DVD-1.iso
Continuing in background, pid 3550.

Limiter la vitesse de téléchargement
Avec Option –limit-rate = 100k, le téléchargement est limitée à 100k/s et les journaux sont créés sous /wget/log.txt, comme indiqué ci-dessous.

# wget -c --limit-rate=100k  /wget/log.txt https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-9.5.0-amd64-DVD-1.iso

Téléchargent FTP ou HTTP avec identification
Avec des Options -http-user=username, -http-password=password et -ftp-user=username, -ftp-password=password, vous pouvez télécharger avec Login/mot_de_passe

# wget --http-user=narad --http-password=password http://mirrors.fantome.in/truc/machin-LiveDVD.iso
# wget --ftp-user=narad --ftp-password=password ftp://ftp.fantome.net.au/truc/machin-LiveDVD.iso

WGET – Version et aide

$ wget --version
$ wget --help
$ man wget

Script pour supprimer les doublons dans un fichier

Il s’agit d’un petit script, qui m’est bien utile, que j’avais pompé je ne sais où et que j’avais légèrement modifié à ma sauce.

Je vous le mets plus bas, à vous de le remodifier, améliorer à votre sauce.

echo -n "Entrez le chemin du fichier (ex. /home/user/.bash_history) : "
read fichier
doublons="$(cat $fichier | sort | uniq -d)"
if [ "$doublons" != "" ]; then
for line in $(seq 1 $(echo "$doublons" | wc -l)); do
texteAsuppr=$(echo "$doublons" | sed $line!d)
lignesAsuppr=$(grep -n "$texteAsuppr" $fichier | sed -e 1d -e 's/\([0-9]*\):.*/-e \1d/')
sed $lignesAsuppr -i $fichier
done
fi 
echo "TERMINÉ !"echo

N’oubliez pas de faire un petit « chmod +x » sur le fichier pour le rendre éxecutable.