Archives mensuelles : janvier 2019


Linux – chercher puis archiver des fichiers avec cpio

Personnellement, j’aime bien me faire des backups facile à utiliser qui regroupent des type de fichiers. Par exemple cela peut être des photos, des scripts, des logs… Généralement pour archiver des masses de fichiers on a tendance à utiliser la commande tar mais dans ce cas de figure ce n’est pas forcément adapté. Effet tar fonctionne par répertoire.

CPIO est une très bonne alternative dans ce cas. En effet, cpio accepte que l’on lui fournisse des fichiers et s’occupe de les ajouter dans un fichier d’archives. On peut l’utiliser avec un pipe à la suite d’un ls mais le plus sympa c’est avec un find.

Par exemple, comment lister les fichiers « .sh » et les archiver ?

find . -name "*.sh" | cpio -o --format=tar > compil.tar

Le pipe facilite donc grandement les choses.

Si vous le souhaitez, vous pouvez retrouver cette article en vidéo.


[Docker] : Comment prendre en compte un proxy pour puller/pusher et comment le passer dans un conteneur ?

 

Docker, c’est un sujet que j’ai l’occasion de creuser un peu en ce moment. Les pros de docker comme les devops savent faire cela les doigts dans le nez mais pour les débutants c’est un petit moment de recherche.

Lorsque l’on parle de docker et de proxy, deux questions reviennent souvent :

  • Comment prendre en compte un proxy sur la machine host pour puller/pusher des images ?
  • Comment faire pour que mon conteneur utilise un proxy ?

1. Utilisation d’un proxy sur la machine host de docker

Pour prendre en compte un proxy et éviter d’y revenir, il est nécessaire d’éditer la configuration de docker. Ainsi, comme si vous paramétiez votre proxy pour une utilisation par apt, vous allez vous rendre dans /etc/systemd/system/docker.service.d/ et créer un fichier de conf.

Par exemple, nous allons créer un fichier intitulé https-proxy.conf. Et nous allons ajouter dedans l’adresse de notre proxy en variable d’environnement (pour le service docker donc) :

[Service]
Environment="HTTPS_PROXY=http://monproxy:sonport"

Une fois ceci réalisé, le premier réflexe est de redémarrer le service docker… C’est pas faux mais dans notre cas on vient de modifier la conf de docker au niveau de systemd. donc il faut tout d’abord redémarrer le démond :

systemctl daemon-reload
service docker restart

Et voilà pour la première partie, vous pouvez utiliser votre proxy avec docker pour faire des pull et des push vers votre repository (dockerhub ou autre). Mais attention si vous être sur votre laptop, il se peut que vous ayez besoin de switcher (avec ou sans proxy), je vous invite donc à faire les fonctions qui vont bien ou alias pour vous faciliter la vie. L’idée c’est d’utiliser :

echo "Environment=\"HTTP_PROXY=http://monproxy:monport\"" | 
sudo tee --append /etc/systemd/system/docker.service.d/http-proxy.conf

2. Passer la conf de votre proxy dans un conteneur

C’est indispensable si vous êtes derrière un proxy sinon pas d’update ou d’installation possible sur le conteneur.

Et là docker est tout simplement génial car il permet de passer des variables d’environnement dans le conteneur à son lancement (son run). Remarque : si cela est plus durable vous pouvez faire cela directement dans votre Dockerfile.

Comment passer votre variable de proxy ? comme ceci :

docker run -tid -e http_proxy="http://monproxymonport" 
--name nom_conteneur nom_image

Et le tour est joué. Vous pouvez aussi passer un serveur dns avec –dns= »monipdns ».

Si vous voulez que votre image contienne toujours cette variable, vous devez la builder avec cette variable. Là encore c’est pas compliqué à ajouter dans le dockerfile :

ENV http_proxy="http://monproxymonport"

Vous pouvez consulter ce bon article sur les variables docker.


Shell : commandes internes vs externes ?

Hello les xavkistes !  Dans cet article nous allons revenir sur une vidéo que j’ai publié sur la chaine youtube. Il s’agit de découvrir les deux types de fonctions de shell :

  • les commandes internes
  • les commandes externes

Les premières ont pour caractéristiques d’être présente dans le shell de manière implicite sans avoir besoin de préciser leur localisation à travers le $PATH. On peut lister ses celles-ci si on tape dans la ligne de commandes : help. On y retrouve des commandes comme echo, time, fg…

Les secondes sont donc différentes car il est nécessaire que le PATH soit chargé pour pouvoir les utiliser sinon votre shell ne saura pas où les trouver.

Mais qu’est-ce que cela change ? tout simplement la rapidité pour les appeler. Dans la vidéo ci-dessous je fais un test pour comparer deux calculs similaires mais avec des binaires internes ou externes.

Le résultat semble sans appel. Quand on ne passe par le PATH cela va beaucoup plus vite. Néanmoins il faut modéré ces propos par le fait que nous n’utilisons pas le même binaire et de fait ces derniers ne sont pas faits pour faire la même chose. Donc des performance différentes.

 


[Linux] : pdftk pour fusionner des pdf et d’autres actions

J’aime beaucoup les petits outils linux qui une fois installés permettent en une ligne de faire pas mal de trucs. Souvent on peut ensuite les enchainer avec d’autres outils et le tout fait des trucs sur-puissants sur quelque sligne ou même une seule.

pdftk fait partie de ces outils pratiques. Il permet de faire des actions sur des fichiers pdf, notamment la fusion de pdf.

Ainsi avec :

pdftk fichier1.pdf fichier2.pdf fichier3.pdf cat output fusion.pdf

Donc on merge 3 fichiers pdf en un seul.

On peut aussi supprimer des pages :

pdftk fichier1.pdf cat 1-4 6-end output fusion.pdf

avec cela on supprime la page 5.

Pratiquer une rotation de 90 degrés :

pdftk fichier1.pdf cat 1east 2-end output fusion.pdf

Extraire les metadata d’un fichier pdf :

pdftk fichier1.pdf dump_data output metadata.txt