Outils pour utilisateurs

Outils du site


informatique:divers

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:divers [2020/11/20 05:41] – [Vérifier la somme de contrôle d'un fichier] alexisinformatique:divers [2024/11/24 14:19] (Version actuelle) alexis
Ligne 1: Ligne 1:
 ====== Divers ====== ====== Divers ======
-Cette page est un fourre-tout de tout ce qui ne peut pas faire l'objet d'une page. Quand il y aura plusieurs choses qui pourront faire l'objet d'une page, elles seront déplacées. 
  
-<WRAP todo> +<catlist informatique:divers -sortByTitle -noHead>
-<code bash> +
-# génération d'une archive en changeant les chemins des fichiers +
-tar -C test.tar/ --transform="s/\./hello/" --transform="s/toto1/tata/" -cvzf tar.tar . +
-</code> +
-</WRAP> +
- +
-===== Modifier le contenu d'un fichier avec Perl ===== +
-<code bash> +
-perl -i -p -e 's/search/replacement/g' <fichier> +
-</code> +
-  * ''%%-i%%'' permet de modifier le fichier directement. +
-  * ''%%-p%%'' permet d'ajouter une boucle autour du programme à appliquer. +
-  * ''%%-e%%'' permet de saisir un programme d'une ligne. +
- +
-===== Redémarrer un router D-link ===== +
- +
-Bien sur il est possible de le faire depuis l'interface web. C'est facile mais pas très rapide. Il est aussi possible de le faire depuis la console en utilisant CURL. +
-<code bash> +
-curl -u '<utilisateur>:<mot de passe>' 'http://192.168.0.1/reboot.xgi' +
-</code> +
-Et pour aller encore plus vite, pourquoi ne pas en faire un alias. +
- +
-===== Concaténer des fichiers sous Windows ===== +
-Il est possible de contaténer différents fichiers et de les afficher sur la sortie standard. +
- +
-<code dos> +
-type <fichier1> <fichier2> +
-</code> +
- +
-===== Déplacer des colonnes de données dans Excel ===== +
-Il y a la méthode fastidieuse qui consiste à sélectionner les colonnes, les copier, insérer des colonnes vides, coller le contenu des copiées, supprimer les colonnes copiées. +
- +
-Il y a aussi la méthode simple qui consiste à sélectionner les colonnes et les déplacer en appuyant sur la touche ''Shift'' et en cliquant sur l'icône de déplacement. +
- +
-===== Relancer l'explorer de Windows ===== +
-Après une mise à jour de Git pour Windows, j'ai eu ma barre de tâche qui a disparue. Il suffit de relancer le programme ''%%explorer.exe%%''+
- +
- +
-===== Copier un répertoire avec rsync ===== +
-<code bash> +
-# Version courte +
-rsync -avz --delete --force <source> <destination> +
- +
-# Version courte étendue +
-rsync -rlptgoDvz --delete --force <source> <destination> +
- +
-# Version longue +
-rsync --archive --verbose --compress --delete --force <source> <destination> +
- +
-# Version longue étendue +
-rsync --recursive --links --perms --times --group --owner --devices --specials --verbose --compress --delete --force <source> <destination> +
-</code> +
- +
-  * ''%%-a%%'' ou ''%%--archive%%'' active le mode archive. Il est équivalent à ''%%-rlptgoD%%'' ou ''%%--recursive --links --perms --times --group --owner --devices --specials%%''+
-  * ''%%-v%%'' ou ''%%--verbose%%'' augmente la verbosité. +
-  * ''%%-z%%'' ou ''%%--compress%%'' compresse les fichiers durant le transfert. +
-  * ''%%--delete%%'' supprime les éléments présents dans le répertoire de destination qui n'existent pas dans le répertoire source. +
-  * ''%%--force%%'' force la suppression des répertoires même s'ils ne sont pas vides. +
-  * ''%%-r%%'' ou ''%%--recursive%%'' traite les répertoires récursivement. +
-  * ''%%-l%%'' ou ''%%--links%%'' copie les liens symboliques comme des liens symboliques. +
-  * ''%%-p%%'' ou ''%%--perms%%'' conserve les droits d'accès. +
-  * ''%%-t%%'' ou ''%%--times%%'' conserve les dates de modification. +
-  * ''%%-g%%'' ou ''%%--group%%'' conserve les groupes. +
-  * ''%%-o%%'' ou ''%%--owner%%'' conserve le propriétaire (uniquement pour le super utilisateur). +
-  * ''%%-D%%'' ou ''%%--devices --specials%%''+
-     * ''%%--devices%%'' conserve les fichiers //device//+
-     * ''%%--specials%%'' conserve les fichiers spéciaux. +
- +
-===== Afficher la liste des paquets installés avec Cygwin ===== +
-<code bash> +
-cygcheck --check-setup +
-</code> +
- +
-===== Télécharger des photos depuis un appareil photo ===== +
-<code bash> +
-# Version courte +
-gphoto2 --auto-detect -P --skip-existing +
- +
-# Version longue +
-gphoto2 --auto-detect --get-all-files --skip-existing +
-</code> +
- +
-  * ''%%--auto-detect%%'' permet de lister les appareils connectés. +
-  * ''%%-P%%'' ou ''%%--get-all-files%%'' permet de récupérer l'ensemble des fichiers trouvés. +
-  * ''%%--skip-existing%%'' permet de ne télécharger que ceux absents. +
- +
-Pour plus de détails sur l'utilisation de gphoto2, il y a la [[http://www.gphoto.org/doc/manual/using-gphoto2.html|documentation officielle]]. +
- +
-===== Naviguer sur un site pour trouver les liens morts ===== +
-<code bash> +
-# Version courte +
-wget -r -l2 -H --spider -np -D ainw.org -nv -T 20 https://www.ainw.org +
- +
-# Version longue +
-wget --recursive --level=2 --span-hosts --spider --no-parent --domains=ainw.org --no-verbose --timeout=20 http://www.ainw.org +
-</code> +
- +
-  * ''%%-r%%'' ou ''%%--recursive%%'' active la récupération récursive. +
-  * ''%%-l%%'' ou ''%%--level%%'' détermine le niveau de récursion maximum. +
-  * ''%%-H%%'' ou ''%%--span-hosts%%'' étend la recherche sur d'autres hôtes. +
-  * ''%%--spider%%'' vérifie la présence des pages mais ne les télécharge pas. +
-  * ''%%-np%%'' ou ''%%--no-parent%%'' limite la recherche aux répertoires enfants. +
-  * ''%%-D%%'' ou ''%%--domains%%'' liste les domaines à suivre. +
-  * ''%%-nv%%'' ou ''%%--no-verbose%%'' affiche uniquement les messages d'erreurs et les informations minimales. +
-  * ''%%-T%%'' ou ''%%--timeout%%'' fixe la limite d'attente sur le réseau. +
- +
-===== Extraire les images d'un site ===== +
-<code bash> +
-# Version courte +
-wget -nd -r -P ainw.org -Ajpg,jpeg --reject-regex ".*thumb.*" -l2 https://www.ainw.org +
- +
-# Version longue +
-wget --no-directories --recursive --directory-prefix ainw.org --accept jpg,jpeg --reject-regex ".*thumb.*" --level 2 https://www.ainw.org +
-</code> +
- +
-  * ''%%-nd%%'' ou ''%%--no-directories%%'' ne cré pas l'arbre des répertoires. +
-  * ''%%-r%%'' ou ''%%--recursive%%'' active la récupération récursive. +
-  * ''%%-P%%'' ou ''%%--directory-prefix%%'' indique le répertoire d'enregistrement des fichiers téléchargés. +
-  * ''%%-A%%'' ou ''%%--accept%%'' conditionne la fin des noms des fichiers à télécharger. +
-  * ''%%--reject-regex%%'' rejette les URL ne respectant pas le motif. +
-  * ''%%-l%%'' ou ''%%--level%%'' détermine le niveau de récursion maximum. +
-===== Extraire des fichiers d'une archive en ligne ===== +
-<code bash> +
-# Version courte +
-curl -L https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz | tar -x -J -f - -C /usr/local/sbin --strip 2 wkhtmltox/bin/wkhtmltopdf wkhtmltox/bin/wkhtmltoimage +
- +
-# Version longue +
-curl --location https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz | tar --extract --xz --file - --directory /usr/local/sbin --strip 2 wkhtmltox/bin/wkhtmltopdf wkhtmltox/bin/wkhtmltoimage +
- +
-</code> +
- +
-  * Option de ''curl'' +
-    * ''%%-L%%'' ou ''%%--location%%'' refait la requête en cas de redirection. +
-  * Option de ''tar'' +
-    * ''%%-x%%'' ou ''%%--extract%%'' extrait les fichiers de l'archive. +
-    * ''%%-J%%'' ou ''%%--xz%%'' filtre l'archive avec [[https://en.wikipedia.org/wiki/Xz|xz]]. +
-    * ''%%-f%%'' ou ''%%--file%%'' utilise l'archive spécifiée. +
-    * ''%%-C%%'' ou ''%%--directory%%'' change le répertoire de travail avant toute opération. +
-    * ''%%--strip%%'' supprime les **//n//** répertoires précédant le fichier. +
- +
-<WRAP info> +
-Cette syntaxe est obligatoire lors de l'écriture de fichier Docker. Dans le cas de l'utilisation dans bash, on peut écrire la commande différemment : +
-<code bash> +
-curl -L https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz | tar -x -J -f - -C /usr/local/sbin --strip 2 wkhtmltox/bin/wkhtmlto{pdf,image} +
-</code> +
-</WRAP> +
- +
-===== Renommer des fichiers ===== +
-Pour renommer des fichiers numérotés avec espaces de la forme ''mon fichier 01.txt'' en ''01-mon fichier 01.txt'', on peut utiliser ''sed'' et ''mv'' de la manière suivante : +
-<code bash> +
-IFS=$'\n' +
-for SOURCE in *; do +
-    TARGET=$(echo $SOURCE| sed -e 's/\(.*\([0-9][0-9]\).*\)/\2-\1/'+
-    mv $SOURCE $TARGET +
-done +
-IFS=$' \t\n' +
-</code> +
-<WRAP important> +
-Il faut noter que l'utilisation de ''sed'' dans cette configuration est gourmande. Si on essaye de renommer ''mon fichier 01 - 55.txt'', on aura le fichier ''55-mon fichier 01 - 55.txt'' au lieu de ''01-mon fichier 01 - 55.txt''. Dans ce cas, il faudra utiliser la commande suivante : +
-<code bash> +
-IFS=$'\n' +
-for SOURCE in *; do +
-    TARGET=$(echo $SOURCE| sed -e 's/\([^0-9]*\([0-9][0-9]\).*\)/\2-\1/'+
-    mv $SOURCE $TARGET +
-done +
-IFS=$' \t\n' +
-</code> +
-</WRAP> +
- +
-Il existe aussi un script Perl qui permet de faire cela à l'aide d'expressions régulières. Il est installé par défaut sur certaines distributions (ex : Ubuntu) mais pas sur d'autres (ex : Archlinux). +
-On peut l'utiliser de la manière suivante : +
-<code bash> +
-# Renommer "fichier1" et "fichier2" en "fichier1.bak" et "fichier2.bak" +
-rename 's/$/.bak/' fichier{1,2} +
- +
-# Renommer "fichier 1" et "fichier 2" en "fichier1.bak" et "fichier2.bak" +
-rename 's/ ([1,2])$/$1.bak/' fichier\ {1,2} +
- +
-# Renommer "premier gros fichier" en "premier.Gros.Fichier" +
-rename 's/ (.)/.\u$1/g' premier\ gros\ fichier +
- +
-# Renommer "exemple d'un gros fichier" en "exemple.D.Un.Gros.Fichier" +
-rename 's/[ '"'"'](.)/.\u$1/g' exemple\ d\'un\ gros\ fichier +
- +
-# Renommer "fichier1" et "fichier2" en "FICHIER1" et "FICHIER2" +
-rename 's/(.)/\u$1/g' fichier{1,2} +
-rename 'y/a-z/A-Z/' fichier{1,2} +
- +
-# Renommer "FICHIER1" et "FICHIER2" en "fichier1" et "fichier2" +
-rename 's/(.)/\l$1/g' FICHIER{1,2} +
-rename 'y/A-Z/a-z/' FICHIER{1,2} +
-</code> +
- +
-<WRAP important> +
-Sur Ubuntu, les commandes sont utilisables directement. Sur Archlinux, il faut préfixer toutes les commandes par ''perl-''. Par exemple : +
-<code bash> +
-perl-rename 's/$/.bak/' fichier{1,2} +
-# au lieu de +
-rename 's/$/.bak/' fichier{1,2} +
-</code> +
-</WRAP> +
- +
-===== Ajouter un type dans ack ===== +
- +
-Il faut modifier le fichier //[[https://metacpan.org/pod/ack#Use-the-.ackrc-file|.ackrc]]// et y ajouter : +
-<code - .ackrc> +
-# Avec une seule extension +
---type-set=api:ext:apib +
- +
-# Avec plusieurs extensions +
---type-set=markdown:ext:md,apib +
-</code> +
- +
-On peut visualiser le nouveau type en lançant la commande : +
-<code bash> +
-ack --help=types +
-</code> +
- +
-Pour plus d'information, voir [[https://metacpan.org/pod/ack#Defining-your-own-types|ici]] et dans la [[https://beyondgrep.com/documentation/|documentation officielle]] +
- +
-===== Extraire une liste de chaînes de caractères ===== +
-J'ai envie de récupérer l'ensemble des codes d'erreurs générés par mon API pour pouvoir les documenter. +
-<code bash> +
-# Version courte +
-grep -roh --exclude="*.apib" "api.error[^'\"]*" src/ +
- +
-# Version longue +
-grep --recursive --only-matching --no-filename --exclude="*.apib" "api.error[^'\"]*" src/ +
-</code> +
- +
-  * ''%%-r%%'' ou ''%%--recursive%%'' traite les répertoires récursivement. +
-  * ''%%-o%%'' ou ''%%--only-matching%%'' affiche ce qui correspond à la recherche. +
-  * ''%%-h%%'' ou ''%%--no-filename%%'' supprime l'affichage des noms de fichiers. +
-  * ''%%--exclude%%'' exclus les fichiers correspondants lors du traitement. +
- +
-===== Utiliser youtube-dl ===== +
-C'est un [[http://rg3.github.io/youtube-dl/|outil en ligne de commande]] qui permet de télécharger des vidéos sur différents sites (youtube, …). +
-<code bash> +
-# Télécharger une vidéo +
-youtube-dl <url> +
- +
-# Télécharger une liste de vidéos depuis un fichier +
-youtube-dl -a <file> +
-youtube-dl --batch-file <file> +
- +
-# Télécharger une vidéo en spécifiant la meilleur qualité +
-youtube-dl -f best <url> +
-youtube-dl --format best <url> +
- +
-# Télécharger une vidéo en spécifiant le format +
-youtube-dl -f mp4 <url> +
-youtube-dl --format mp4 <url> +
- +
-# Extraire l'audio d'une liste de vidéos en spécifiant le format +
-youtube-dl -a <file> -x --audio-format mp3 +
-youtube-dl --batch-file <file> --extract-audio --audio-format mp3 +
-</code> +
- +
-===== Redirection du traffic en HTTPS avec Apache ===== +
-Il faut placer un fichier ''.htaccess'' à la racine du site avec le contenu suivant : +
-<code apache .htaccess> +
-RewriteEngine On +
-RewriteCond %{HTTPS} !=on +
-RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] +
-</code> +
- +
-===== Trouver les lignes communes à 2 fichier ===== +
-Il faut utiliser la commande ''comm''. Celle-ci va afficher le résultat sous la forme de 3 colonnes. La première contient les lignes présentes uniquement dans le premier fichier, la seconde contient les lignes présentes uniquement dans le second fichier, la troisième contient les lignes communes aux 2 fichiers. +
-Il est possible de n'afficher que certaines colonnes en pointant celles que l'on veut supprimer. +
-<code bash> +
-# Affiche les 3 colonnes +
-comm -- a.txt b.txt +
- +
-# Affiche les lignes communes aux 2 fichiers +
-comm -12 -- a.txt b.txt +
- +
-# Affiche les lignes qui ne sont que dans un des 2 fichiers +
-comm -3 -- a.txt b.txt +
-</code> +
- +
-===== Vérifier la somme de contrôle d'un fichier ===== +
-La [[https://fr.wikipedia.org/wiki/Somme_de_contr%C3%B4le|somme de contrôle]]((Aussi appelée empreinte)) est le résultat, de longueur fixe, de la transformation d'un fichier par une [[https://fr.wikipedia.org/wiki/Fonction_de_hachage|fonction de hachage]]. +
-Selon la théorie des codes, à chaque empreinte correspond un seul et unique fichier. +
-Mais ce n'est que de la théorie, car la recherche faisant des progrès, ce n'est [[https://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities|plus tout à fait vrai]]. +
-De ce fait, il est facile ensuite de vérifier si le fichier est bien ce qu'il prétend être en comparant son empreinte réelle avec son empreinte théorique. +
- +
-Il existe différentes fonctions de hachages, mais les plus courantes (en tout cas sur GNU/Linux) sont MD5, SHA1 et SHA256. On préfèrera l'utilisation de l'algorithme SHA pour des raisons évidentes de sécurité (voir annexes). +
- +
-<code bash> +
-# Première méthode — Avec un programme externe +
-echo "<chaîne de contrôle>" | sha256sum -c - +
- +
-# Deuxième méthode — Avec une chaîne here-string +
-sha256sum -c - <<< "<chaîne de contrôle>" +
- +
-# Troisième méthode — Avec un fichier +
-sha256sum -c <fichier de contrôle> +
-</code> +
-  * ''-c'' permet de vérifier un fichier et son empreinte. +
-<WRAP important> +
-  * La chaîne de contrôle est composée de l'empreinte du fichier à vérifier, d'un espace, d'un astérisque et du nom de fichier à vérifier dans cette ordre. Par exemple, ''47ccc37db256387b70857f53a6067e8d50e692c9aa85e45e63e5190c5d1e0942 *Fedora-13-i686-Live.iso''+
-  * Le fichier de contrôle contient une chaîne de contrôle par ligne, ce qui permet de traiter plusieurs vérifications simultanément. +
-</WRAP>+
  
informatique/divers.1605879666.txt.gz · Dernière modification : 2020/11/20 05:41 de alexis