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 [2018/03/05 09:07] – [Extraire une liste de chaînes de caractères] alexisinformatique:divers [2022/07/14 05:44] (Version actuelle) – [Partager un point d'accès WiFi avec un QR-code] 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. 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>
 +<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 .
 +
 +# génération d'un pdf à partir d'un md
 +pandoc --from=markdown --to=latex -o Config.Switch.pdf --toc -N -V colorlinks -H head.tex -V geometry:"top=2cm,bottom=2cm,left=2cm,right=2cm" Config.Switch.md
 +</code>
 +</WRAP>
  
 ===== Modifier le contenu d'un fichier avec Perl ===== ===== Modifier le contenu d'un fichier avec Perl =====
Ligne 12: Ligne 22:
 ===== Redémarrer un router D-link ===== ===== 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.+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> <code bash>
 curl -u '<utilisateur>:<mot de passe>' 'http://192.168.0.1/reboot.xgi' curl -u '<utilisateur>:<mot de passe>' 'http://192.168.0.1/reboot.xgi'
Ligne 69: Ligne 79:
 </code> </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 ===== ===== Naviguer sur un site pour trouver les liens morts =====
 <code bash> <code bash>
 # Version courte # Version courte
-wget -r -l2 -H --spider -D ainw.org -nv -T 20 http://www.ainw.org+wget -r -l2 -H --spider -np -D ainw.org -nv -T 20 https://www.ainw.org
  
 # Version longue # Version longue
-wget --recursive --level=2 --span-hosts --spider --domains=ainw.org --no-verbose --timeout=20 http://www.ainw.org+wget --recursive --level=2 --span-hosts --spider --no-parent --domains=ainw.org --no-verbose --timeout=20 http://www.ainw.org
 </code> </code>
  
   * ''%%-r%%'' ou ''%%--recursive%%'' active la récupération récursive.   * ''%%-r%%'' ou ''%%--recursive%%'' active la récupération récursive.
-  * ''-l'' ou ''%%--level%%'' détermine le niveau de récursion maximum.+  * ''%%-l%%'' ou ''%%--level%%'' détermine le niveau de récursion maximum.
   * ''%%-H%%'' ou ''%%--span-hosts%%'' étend la recherche sur d'autres hôtes.   * ''%%-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.   * ''%%--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.   * ''%%-D%%'' ou ''%%--domains%%'' liste les domaines à suivre.
   * ''%%-nv%%'' ou ''%%--no-verbose%%'' affiche uniquement les messages d'erreurs et les informations minimales.   * ''%%-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.   * ''%%-T%%'' ou ''%%--timeout%%'' fixe la limite d'attente sur le réseau.
  
-===== Extraire un fichier d'une archive en ligne =====+===== Extraire les images d'un site =====
 <code bash> <code bash>
 # Version courte # Version courte
-curl -L https://downloads.wkhtmltopdf.org/0.12/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+wget -nd -r -P ainw.org -Ajpg,jpeg --reject-regex ".*thumb.*" -l2 https://www.ainw.org
  
 # Version longue # Version longue
-curl --location https://downloads.wkhtmltopdf.org/0.12/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+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> </code>
  
Ligne 119: Ligne 133:
     * ''%%--strip%%'' supprime les **//n//** répertoires précédant le fichier.     * ''%%--strip%%'' supprime les **//n//** répertoires précédant le fichier.
  
-===== Renommer des fichiers ===== +<WRAP info> 
-Il est possible d'utiliser l'utilitaire ''rename'' mais son fonctionnement est limité et diffère sur chaque distributionDe plusil ne fait que du remplacement simple.+Cette syntaxe est obligatoire lors de l'écriture de fichier DockerDans le cas de l'utilisation dans bashon 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 : 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> <code bash>
Ligne 132: Ligne 151:
 </code> </code>
 <WRAP important> <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''+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> </WRAP>
  
 ===== Ajouter un type dans ack ===== ===== Ajouter un type dans ack =====
  
-Il faut modifier le fichier //[[https://metacpan.org/pod/ack#Use-the-.ackrc-file|.ackrc]]// et y ajouter +Il faut modifier le fichier //[[https://metacpan.org/pod/ack#Use-the-.ackrc-file|.ackrc]]// et utiliser ''%%--type-set%%'' de la manière suivante 
-<code> +<code - .ackrc
-Avec une seule extension+Type défini par une seule extension
 --type-set=api:ext:apib --type-set=api:ext:apib
  
-Avec plusieurs extensions+Type défini par plusieurs extensions
 --type-set=markdown:ext:md,apib --type-set=markdown:ext:md,apib
 +
 +# Type défini par un motif
 +--type-set=blade:match:/blade\.php$/
 </code> </code>
  
 On peut visualiser le nouveau type en lançant la commande : On peut visualiser le nouveau type en lançant la commande :
 <code bash> <code bash>
-ack --help=types+ack --help-types
 </code> </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]] Pour plus d'information, voir [[https://metacpan.org/pod/ack#Defining-your-own-types|ici]] et dans la [[https://beyondgrep.com/documentation/|documentation officielle]]
 +
 +===== Ne pas chercher dans un répertoire avec ack =====
 +Il faut modifier le fichier //[[https://metacpan.org/pod/ack#Use-the-.ackrc-file|.ackrc]]// et utiliser ''%%--ignore-dir%%'' de la manière suivante :
 +<code - .ackrc>
 +--ignore-dir=<dirname>
 +</code>
 +
 +<WRAP info>
 +Cette option peut être utilisées plusieurs fois pour ignorer plusieurs répertoires. Elle ne supporte que les noms de répertoires simples.
 +Elle peut-être aussi utilisée directement lors de l'exécution de ''ack''.
 +</WRAP>
 +
  
 ===== Extraire une liste de chaînes de caractères ===== ===== Extraire une liste de chaînes de caractères =====
Ligne 168: Ligne 243:
   * ''%%--exclude%%'' exclus les fichiers correspondants lors du traitement.   * ''%%--exclude%%'' exclus les fichiers correspondants lors du traitement.
  
 +
 +===== 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 qui ne sont que dans un des 2 fichiers
 +comm -12 -- a.txt b.txt
 +
 +# Affiche les lignes communes aux 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é.
 +
 +<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''.
 +</WRAP>
 +<WRAP tip>
 +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>
 +
 +===== Envoyer un courriel =====
 +<code>
 +cat message.A.Envoyer | mail -s "Sujet du message" -a 'From: "Mon nom" <from@example.org>' -b bcc@example.org -c cc@example.org to@example.org
 +</code>
 +  * ''-s'' permet de définir un sujet.
 +  * ''-a'' permet d'ajouter un entête additionnel. Ce paramètre peut être utilisé plusieurs fois.
 +  * ''-b'' permet d'ajouter une copie carbone invisible. Ce paramètre accepte une liste d'adresses séparées par des virgules.
 +  * ''-c'' permet d'ajouter une copie carbone. Ce paramètre accepte une liste d'adresses séparées par des virgules.
 +
 +<WRAP todo>
 +  * Voir si je peux utiliser la syntaxe here-string.
 +  * Voir si je peux utiliser la syntaxe complète pour les adresses.
 +</WRAP>
 +
 +===== Lancer un programme Java =====
 +<code bash>
 +# Sans paramètre
 +java -jar <fichier JAR>
 +
 +# Avec l'utilisation d'un répertoire externe (utile pour l'inclusion de bibliothèques) 
 +java -Djava.ext.dirs=/usr/share/java/ -jar <fichier JAR>
 +</code>
 +
 +===== Lancer un serveur HTTP =====
 +Depuis n'importe quel répertoire, il faut lancer la commande suivante :
 +<code bash>
 +python -m http.server
 +</code>
 +
 +===== Récupérer l'identifiant d'une chaîne Youtube =====
 +<code javascript>
 +document.querySelector('meta[itemprop="channelId"]').content
 +</code>
 +
 +===== Afficher les entêtes d'une requête HTTP avec cURL =====
 +<code bash>
 +curl -D - www.ainw.org -o /dev/null
 +</code>
 +  * ''-D'' indique le fichier dans lequel enregistrer les entêtes de la réponse (ici //-// ou sortie standard).
 +  * ''-o'' indique le fichier dans lequel enregistrer le corps de la réponse (ici ///dev/null//).
 +
 +===== Partager un point d'accès WiFi avec un QR-code =====
 +<code bash>
 +# Génère un QR-code
 +qrencode -s 7 -l H -o Guest.Wifi.png 'WIFI:S:<SSID>;T:<WEP|WPA|blank>;P:<PASSWORD>;H:<true|false|blank>;;'
 +
 +# Génère un QR-code avec icône au centre
 +qrencode -s 7 -l H -o - 'WIFI:S:<SSID>;T:<WEP|WPA|blank>;P:<PASSWORD>;H:<true|false|blank>;;' | \
 +convert - -gravity center \
 +\( /usr/share/icons/Adwaita/64x64/status/network-wireless-signal-excellent-symbolic.symbolic.png -bordercolor white -border 10x10 -bordercolor black -border 5x5 \) \
 +-composite -trim -bordercolor white -border 10x10 -bordercolor black -border 1x1 wifi.png
 +
 +# Génère un QR-code avec icône au centre ainsi que les informations en clair
 +qrencode -s 7 -l H -o - 'WIFI:S:<SSID>;T:<WEP|WPA|blank>;P:<PASSWORD>;H:<true|false|blank>;;' | \
 +convert \( - -gravity center \( /usr/share/icons/Adwaita/64x64/status/network-wireless-signal-excellent-symbolic.symbolic.png \
 + -bordercolor white -border 10x10 -bordercolor black -border 5x5 \) -composite -trim -bordercolor white -border 10x10 \) \
 +\( -size 500x500 xc:white -font /usr/share/fonts/TTF/DejaVuSansMono.ttf -fill black -pointsize 16 -draw "text 0,16 'SSID: <SSID>'" \
 + -trim -bordercolor white -border 10x10 \) \( -size 500x500 xc:white -font /usr/share/fonts/TTF/DejaVuSansMono.ttf -fill black \
 +-pointsize 16 -draw "text 0,16 'PWD: <PASSWORD>'" -trim -bordercolor white -border 10x10 \) -gravity center -append -border color black -border 1x1 wifi.png
 +</code>
 +  * ''S'' défini le SSID du réseau.
 +  * ''T'' défini le protocole de sécurité utilisé.
 +  * ''P'' défini le mot de passe.
 +  * ''H'' défini si le réseau est caché ou non.
informatique/divers.1520269630.txt.gz · Dernière modification : 2018/03/05 09:07 de alexis