PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

citizenz7 : Les "Stats" pour les Nuls : Netdata

lundi 15 mai 2017 à 10:33

​Afficher les stats d'un serveur, cela peut être bien utile : vérifier la charge processeur, la RAM utilisée, la "santé" de sa base de données SQL, etc.
Jusqu'à maintenant, j'avais l'habitude d'installer Munin qui nous propose de jolis graphiques. Mais, à mon goût, l'un des inconvénients de Munin, c'est que, outre l'aspect esthétique graphique un peu répétitif, ça devient vite "assez lourd" sur des petits systèmes (sur un petit VPS avec un proc et 2 GO de RAM, vous êtes vite dépassé niveau charge avec des crêtes d'utilisation assez élevées...).

Et puis je suis tombé sur Netdata. Un site proposait d'aller "voir" ses stats en ligne : ahurissant !
Netdata, c'est du "live", "temps réel", "en direct", blablabla, ... et vous avez beau descendre dans la page de stats, vous en avez toujours, encore et encore.
C'est ULTRA complet, esthétiquement à des années lumières de Munin. Ca flash !

C'est quoi Netdata ?
Netdata est un outil de supervision en temps réel pour les systèmes Linux qui va nous permettre de visualiser les éléments importants d'un système (processeur, mémoire, débit du disque dur, traffic réseau, application, etc.).
C'est assez exhaustif et vous serez surpris du nombres d'éléments visualisables ! 

Comment on installe Netdata ?
Bon : on va l'installer sur notre serveur Debian. Mais avant cela, on va installer quelques éléments indispensables :

$sudo apt install zlib1g-dev gcc make git autoconf autogen automake pkg-config

J'ai l'habitude d'installer mes sites web dans /var/www/monsite.com/web.
Je pars du postulat que Nginx (version stable depuis le dépot officiel), php5 ou php7 sont installés.
N'oubliez pas de changer monsite.com avec vos propres infos.

Pour plus d'aisance, on passe directement en root :

$sudo -s

Puis on crée le répertoire web qui va accueillir les fichiers netdata :

#mkdir /var/www/netdata.mondomaine.com

Si vous n'avez jamais encore configuré de site dans ce répertoire, entrez plutôt la commande suivante : 

#mkdir -p /var/www/netdata.mondomaine.com

On se place dans le répertoire web qu'on vient de créer :

#cd /var/www/netdata.mondomaine.com

La ligne suivante est facultative (mais ça me permet de placer les logs du site afin de les consulter facilement, notamment en cas de soucis...)

#mkdir logs

On va maintenant cloner le repertoire git du projet Netdata :

#git clone https://github.com/firehol/netdata.git netdata --depth=1

L'étape suivante est facultative. Je renomme le répertoire netdata pour coller avec ma config et mon "organisation" :

#mv netdata/ web/

On se place dans le répertopire web/ :

#cd web/

... et on installe Netdata :

#./netdata-installer.sh

... et c'est tout !

Configuration Nginx
Il reste quand même à configurer Nginx :

#cd /etc/nginx/conf.d
#vim netdata.mondomaine.com.conf

Cerise sur le gateau, nous allons configurer le vhost Nginx avec HTTPS Let's Encrypt :
- netdata écoute, par défaut, sur le port 19999
- IPV6 ready
- tous les accès sur le port 80 sont "automagiquement" renvoyer sur le port 443 (HTTPS)
- on ne log pas les accès sur le port 80
- on ajoute plusieurs options SSL "qui vont bien" ...
- nous configurerons Let's Encrypt juste après cette partie

Voici le fichier :

#/etc/nginx/conf.d/netdata.mondomaine.com.conf
upstream backend {
    server 127.0.0.1:19999;
    keepalive 64;
}
server {
    listen 80;
    listen [::]:80;
    server_name netdata.mondomaine.com;
    return 301 https://$server_name$request_uri;
    access_log /dev/null;
    error_log /dev/null;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name netdata.mondomaine.com;
    charset utf-8;
    access_log /var/www/netdata.mondomaine.com/logs/netdata.access.log combined;
    error_log /var/www/netdata.mondomaine.com/logs/netdata.error.log error;
    ssl_certificate /etc/letsencrypt/live/netdata.mondomaine.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/netdata.mondomaine.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/netdata.mondomaine.com/chain.pem;
    ssl_protocols TLSv1.2;
    ssl_ecdh_curve prime256v1;
    ssl_ciphers EECDH+AESGCM:EECDH+AES;
    ssl_prefer_server_ciphers on;
    resolver 80.67.169.12 80.67.169.40 valid=300s;
    resolver_timeout 5s;
    ssl_session_cache shared:SSL:10m;
    add_header Strict-Transport-Security "max-age=15768000";
    add_header Referrer-Policy "strict-origin-when-cross-origin";
    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

Et voila. Vous enregistrez ce fichier après avoir adapté les passages avec netdata.mondomaine.com.

Configuration de Let's Encrypt
On passe à la config Let's Encrypt. On installe d'abord les backports Debian (à moins que cela ne soit déjà fait ...) :

#echo "deb http://httpredir.debian.org/debian jessie-backports main" >> /etc/apt/sources.list

On met à jour : 

#apt update && apt full-upgrade -y

On installe Let's Encrypt :

#apt install -t jessie-backports letsencrypt

Pour obtenir un certificat Let's Encrypt, il faut arrêter Nginx (port 80) :

#service nginx stop

Puis on génére le certifcat (à adapter pour netdata.mondomaine.com et l'adresse e-mail) :

#letsencrypt certonly -d netdata.domaine.tld --agree-tos -m contact@domaine.com --rsa-key-size 4096 --standalone

Si vous voyez "Congratulations..." etc., c'est bon, votre certificat Let's Encrypt a été créé et installé dans /etc/letsencrypt/live/netdata.mondomaine.com/.
Vous y trouverez plusieurs fichiers : fullchain.pen, chain.pem, privkey.pem, ...

Redémarrez maintenant votre serveur Nginx :

#service nginx start

Si vous ne voyez pas d'erreur : VICTOIRE !

Vous pouvez aller voir vos superbes stats sur l'adresse https://netdata.mondomaine.com !
 

Gravatar de citizenz7
Original post of citizenz7.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #19

lundi 15 mai 2017 à 00:01

Pour la 19ème semaine de 2017, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Carl Chenet : De l’importance de bien choisir son instance Mastodon

lundi 15 mai 2017 à 00:00

mastodon

Pour rappel, Mastodon est un nouveau réseau social, décentralisé et basé sur un logiciel libre qui se développe rapidement (déjà 600000 comptes). Ayant créé mon compte il y a environ un mois, j’ai rapidement accroché et déjà écrit deux outils pour ce réseau social, Feed2toot et Boost.

Il m’apparaît avec un peu de recul important de souligner l’importance de bien choisir son instance Mastodon.

Quelques rappels sur le fonctionnement de Mastodon

Une précision rapide est nécessaire sur le terme décentralisé. Pour Mastodon, la décentralisation est réalisée grâce à une fédération entre différents serveurs informatiques, appelés instances, chacun géré de façon complètement indépendante. Votre compte utilisateur est créé sur une instance particulière. Vous avez deux choix :

Il est possible de migrer votre compte utilisateur d’une instance à l’autre, mais cela demande une démarche particulière qui peut s’avérer relativement laborieuse, selon vos affinités pour les manipulations techniques et le nombre de vos abonnés qu’il faudra prévenir de votre changement de compte.

Plusieurs points découlant directement de ce fonctionnement vont donc nous intéresser, points  techniques et humains.

La bonne gestion technique de l’instance

Si le modèle du réseau social Mastodon est bien décentralisé, avec plus de 600000 utilisateurs et plus de 1500 instances existantes, le cas typique de fonctionnement consiste à créer son compte sur une instance ouverte. En effet créer sa propre instance relève du parcours du combattant pour le commun des mortels. Et donc une dépendance forte à l’administrateur technique de votre instance se créée.

mastodon-map

Votre administrateur technique va devoir assumer plusieurs contraintes pour assurer la pérennité du service, avec du matériel performant et des sauvegardes régulières. Cela a un coût, en temps et en moyen.

Au niveau temps il paraît judicieux de privilégier une équipe d’administrateurs plutôt qu’une personne isolée, les événements de la vie pouvant faire évoluer très rapidement les centres d’intérêt de chacun. Framasoft propose par exemple sa propre instance Mastodon nommée : Framapiaf.

Au niveau des moyens financiers, on voit naturellement fleurir les demandes de dons via Patreon par les administrateurs d’instances ayant un nombre important d’utilisateurs et on peut comprendre pourquoi : héberger ou faire héberger un serveur a un coût.

L'instance Mastodon de Framasoft : Framapiaf

L’instance Mastodon de Framasoft : Framapiaf

La ligne idéologique de votre instance

Autant on pouvait soupçonner les points techniques précédents depuis l’explosion récente de l’utilisation du réseau social Mastodon, autant le point évoqué ici semble avoir pris un peu tout le monde de court. En effet les instances affirment peu à peu leur « culture », leurs actions revendicatrices et leur propagation d’idées sur ce réseau social.

Tout pouvoir étant donné à l’administrateur d’une instance sur son instance, ce dernier peut en effet interdire sa propre instance de communiquer avec d’autres instances mais aussi interdire aux utilisateurs de son instance d’interagir avec des comptes d’autres instances.

Alors que tout le monde considérait avant tout les grands avantages de la fédération d’instances, cette autonomisation partielle de certaines instances vis-à-vis de la fédération en surprend plus d’un. Cas d’école récente : l’interdiction par l’administrateur de l’instance Unixcorn.xyz à ses utilisateurs de lire le compte d’Aegis hébergé lui sur sa propre instance a provoqué un séisme avec de nombreuse répercussions, séisme que j’ai nommé #AegisGate tant il est symptomatique des différences d’approches, de la modération possible et de son acceptation par les uns et les autres sur Mastodon.

Exemples de règles très précises d'une instance

Exemples de règles très précises d’une instance

Si vous ne créez pas votre propre instance, au moment de choisir l’instance sur laquelle vous souhaitez créer votre compte, soyez donc sûr de créer votre compte sur une instance qui accepte votre point de vue et vos idées. Oui je sais, cela peut paraître surprenant à priori, mais comme énoncé précédemment, vous dépendez de l’infrastructure de quelqu’un, qui peut avoir une démarche idéologique vis-à-vis de l’hébergement qu’il propose sur Mastodon. Évitez donc – par exemple – si vous êtes un nazi d’ouvrir votre compte Mastodon sur une instance LGBT extrême gauche. À priori votre compte ne resterait pas longtemps ouvert.

La ligne de modération est décrite dans la page « about/more » de votre instance et peut contenir des éléments idéologique.

mastodon-aboutmore

Un peu de réflexion avant la création de votre compte

Dans le cas où vous souhaitez donc créer votre compte sur une instance que vous ne contrôlez pas, deux éléments sont donc à vérifier : la disponibilité du service dans le temps, souvent liée à l’administrateur ou à l’organisation administrant l’instance et l’orientation idéologique de votre instance. Ces deux éléments vous permettront de faire grandir votre compte en toute sérénité, sans vous exposer à des problèmes de disponibilité du service ou à découvrir un matin que votre compte a été fermé pour n’avoir pas suivi la ligne idéologique de l’instance.

… et pour finir

Pour soutenir mon implication dans le Logiciel Libre et mes articles sur ce blog, n’hésitez pas à donner via ma page Liberapay, même à hauteur de quelques centimes par semaine 😉 Mes adresses Bitcoin, Monero et Ğ1 sont également disponibles sur cette page.

Gravatar de Carl Chenet
Original post of Carl Chenet.Votez pour ce billet sur Planet Libre.

Articles similaires

Mathieu Ignacio : Je passe sur un blog statique !

samedi 13 mai 2017 à 18:51

Après quelques mois de tergiversation je me suis décidé à passer de dotclear à Pelican. Pelican c'est un moteur de blog statique écrit en python qui me permet d'écrire mes articles avec un éditeur de texte quelconque et de "compiler" mes articles pour les transformer en joli blog en html et css (enfin joli quand j'aurai pris du temps pour revoir les css).

Alors vous me direz que c'est encore un truc de geek que les gens normaux ne peuvent pas utiliser, et je vous dirai que malheureusement pour les gens normaux, il faut effectivement mettre un peu les mains dans le cambouis, mais de mon point de vue ce n'est pas une perte de temps.

Pourquoi passer à un blog statique ?

Pour moi essentiellement pour des raisons de sécurité dans un premier temps. J'ai la facheuse habitude d'abandonner mes différents sites parfois pendant plusieurs années, et quand j'y reviens j'ai déjà eu la mauvaise surprise d'avoir un site visité et utilisé par des pirates pour faire du phishing. Avec les blogs dynamiques (dotclear, wordpress) ou bien les wiki, vous avez intérêt à faire des mises à jour régulièrement afin de colmater les failles de sécurité qui sont trouvées. Avec un moteur de blog statique, ce problème est résolu. Alors je ne vous cache pas que cela ne va pas sans avoir quelques contraintes qui peuvent être rédibitoireis pour certain, je vais donc faire un bref tour des inconvénients et avantages d'utiliser un blog statique aujourd'hui.

Les blogs statiques : pourquoi c'est nul ?

Tout d'abord vous pouvez oublier la jolie interface graphique qui vous permet de rédiger vos articles. Il vous faudra utiliser un éditeur de texte et apprendre quelques éléments de syntaxe à la wiki pour formater vos articles. Il existe bien des éditeurs "markdown", la syntaxe la plus courante pour le formatage de texte, mais je ne les ai pas testé (pas interessé).

Côté look toujours, vous pouvez également oublier les éditeurs qui vous permettent de d'adapter l'apparence de votre site. Une fois encore il va falloir mettre les mains dans le cambouis. Notez qu'il ne serait pas impossible d'avoir un outil localement qui vous permette de gérer votre site et d'en faire un site statique, mais qu'à ma connaissance cela n'existe pas.

Ensuite par défaut, pour n'aurez pas de système de commentaire. Le site étant statique, il n'y a pas de moteur sous le capot permettant de gérer les commentaires. Ce problème est en fait contournable, mais j'y reviendrai plus loin. De manière générale, il vous faudra soit oublier soit trouver une solution pour tout ce qui est dynamique : commentaires, notes, statistique, envoi de message.

Alors vous allez me dire que c'est quand-même extrêmement limité comme outil et que l'on a fait un bond en arrière d'au moins 20 ans... Oui mais non, en fait une partie des limitations n'en sont pas et demande de faire les choses différement. On y reviendra.

Les blogs statiques : pourquoi c'est bien ?

Alors je vous en ai déjà parlé, mais côté sécurité et durabilité c'est le pied. Plus aucun risque de se faire poutrer le site à cause d'une faille sur le logiciel de gestion du site, et ça c'est vraiment énorme. Plus aucune mise à jour à faire, zéro tracas : on écrit, on publie et on oublie.

Ensuite comme votre site est statique, vous pouvez facilement l'héberger à moindre coût chez la totalité des hébergeurs : plus de problème de compatibilité php ou mysql. Vous pouvez également opter pour l'autohébergement : pas besoin d'avoir une bête de course pour faire tourner votre site car il est statique. Le besoin en administration est absolument réduit, c'est le compagnon idéal de l'hébergement sans souci.

Techniquement un site statique offre une capacité à tenir la charge (le nombre de visiteurs) sans pareil, même chez vous avec de petits moyens votre site devrait tourner même avec un pic inattendu de visiteurs (bon, il y a des limites tout de même).

La sauvegarde et la restauration se font les doigts dans le nez. Une simple archive des fichiers et c'est parti. Pas besoin de faire des exports et imports de base de données en croisant les doigts pour que cela soit synchro avec les fichiers. Pour restaurer ? On regénère le site, on renvoie les fichiers, ça prend 2 minutes et on passe à autre chose.

Ok, et comment je fais pour avoir des fonctionalités modernes ???

J'y viens. Tout d'abord sachez que même si le site est statique, le site peut comporter des éléments en css et en javascript. Cela veut dire que techniquement il serait tout à fait possible de faire de l'Ajax avec un site statique, et donc intégrer des bouts de code dynamique côté client.

Les commentaires

Il n'y a pas de moteur de commentaire sur un site statique. Pour avoir des commentaires il vous faut donc passer par un outil extérieur comme Disqus qui est un service de commentaires. N'hésitez-pas à voir le site de Jason Antman pour voir l'intégration en ce service et Pelican. Techniquement, vous insérez un bout de code en javascript dans votre page afin de faire apparaitre le système de commentaire à la fin des articles. Bon côté vie privée c'est pas ça, on peut dire que ça tue des chatons, mais il existe probablement des services communautaires de commentaires (à creuser).

Les statistiques

Vous avez l'embarras du choix pour avoir des stats. Quelque soit l'hébergeur il vous proposera toujours un service de consultation des statistiques de visite de votre site. Dans le cas où vous êtes auto-hébergé, vous avez simplement accès aux logs de votre serveur web et un logiciel comme le vénérable Awstats peut faire l'affaire. Enfin, vous pouvez toujours utiliser une méthode moderne et tueuse de chatons en intégrant un bout de javascript qui fournira des données sur tous vos visiteurs à une entreprise peu soucieuse de la vie privée de vos lecteurs.

Etre contacté

Bon, je vois au moins 2 solutions. La première est de mettre votre adresse électronique et votre contact n'aura qu'a utiliser son client de courriel préféré pour vous joindre. Si cette solution vous ennuie, il est toujours possible de mettre une page dynamique en php qui permet de vous envoyer un message. Après tout, ce n'est pas parce que le site est statique qu'il faut s'interdire d'utiliser un peu de scripts.

Et les modules pour faire xxx ou yyy ?

Les moteurs de blog statique sont comme les moteurs de blog classique. Ils ont des modules qui leur permettent d'avoir des fonctionnalités supplémentaires et des thèmes pour personnaliser votre site. Comme pour les blogs classiques, le choix du logiciel utilisé dépend des modules et des thèmes existants. Par contre il ne faut pas s'attendre à personnaliser son blog en 3 clics, il faudra nécessairement passer par la ligne de commande pour télécharger, installer et configurer ces modules.

Et pelican dans tout ça ?

Et bien c'est l'outil que j'ai choisi pour faire mon blog, et il est écrit en python. Pour le moment j'ai conservé le thème par défaut et tout le reste aussi, je ferais quelques personnalisations ici et là au fur et à mesure. Voici par exemple un article en markdown :

Title: Je passe sur un blog statique !
Date: 2017-05-13 18:51
Category: logiciel
Slug: je-passe-sur-blog-statique
Tags: logiciel libre, python, blog, planet-libre

Après quelques mois de tergiversation je me suis décidé à passer de dotclear à
Pelican. Pelican c'est un moteur de blog statique écrit en python qui me permet
d'écrire mes articles avec un éditeur de texte quelconque et de "compiler" mes
articles pour les transformer en joli blog en html et css (enfin joli quand j'aurai
pris du temps pour revoir les css).

Après avoir ecrit l'article, il ne me reste plus qu'a exécuter 2 commandes pour générer et envoyer mon site sur le serveur web:

make html
make ssh_upload

Par défaut Pelican possède un système de thème, gère les tags, les catégories, les flux Atom, et tout un tas d'autres trucs classiques pour les blogs, mais j'aborderai cela dans un autre article.

Gravatar de Mathieu Ignacio
Original post of Mathieu Ignacio.Votez pour ce billet sur Planet Libre.

Articles similaires

Benoît Boudaud : Python: les fichiers (2/3) – le module os

vendredi 12 mai 2017 à 20:33

Pour une lecture plus agréable (page plus large), je vous invite à cliquer sur ce lien et à lire ce chapitre dans la rubrique consacrée au langage Python.

Lorsque j’ouvre un fichier en mode écriture et que ce dernier n’existe pas, alors il est créé dans le répertoire courant, c’est-à dire à l’endroit ou le script est lancé. Prenons un exemple concret.

#!/usr/bin/env python3
# -*- coding: utf8 -*-

bonjour = "Bonjour et bienvenue dans mon antre!"
with open('test_file', 'w') as file_:
    file_.write(bonjour)
print(bonjour)

Bonjour et bienvenue dans mon antre!

Si je veux connaitre le répertoire courant, il me faut importer le module os et faire appel à la méthode os.getcwd(). Cela signifie get current working directory. (= obtenir le répertoire courant)

#!/usr/bin/env python3
# -*- coding: utf8 -*-

import os

cwd = os.getcwd()
print(cwd)
bonjour = "Bonjour et bienvenue dans mon antre!"
print(bonjour)

/home/benoit
Bonjour et bienvenue dans mon antre!

Le répertoire courant, c’est-à dire l’endroit où le script est lancé, est donc /home/benoit. Si je lance le script dans un émulateur de terminal, il me suffit de taper ./fichier_2.py.

terminal_fichier_2

Déplacement du script dans mon dossier /home/benoit/Documents.

À présent, je vais déplacer ce script intitulé fichier_2.py dans mon dossier Documents. Le chemin absolu devient donc:

/home/benoit/Documents/fichier_2.py

Que devient le répertoire courant? Faisons le test en reprenant le code:

#!/usr/bin/env python3
# -*- coding: utf8 -*-

import os

cwd = os.getcwd()
print(cwd)
bonjour = "Bonjour et bienvenue dans mon antre!"
with open('test_file', 'w') as file_:
    file_.write(bonjour)
print(bonjour)

Dans un environnement de développement intégré IDLE3

Si je lance le script à l’aide de l’environnement de développement intégré IDLE3, le répertoire courant devient /home/benoit/Documents. Quant au fichier test_file, il est créé dans ce répertoire courant.

Dans un émulateur de terminal

Par contre, si je lance le script dans un un émulateur de terminal, le répertoire courant est toujours /home/benoit par défaut. Et le fichier test_file est créé dans ce répertoire courant.

Pour ce qui est du script fichier_2.py:

terminal_fichier_2_2

Tout ceci pour vous dire que cette histoire de répertoire courant peut s’avérer un peu déroutante pour celui qui se lance dans l’apprentissage du Python.

D’aucuns vont me dire qu’il suffit de toujours utiliser le chemin absolu pour ouvrir un fichier mais je crains que ce soit une mauvaise solution. Pourquoi donc? parce que si vous exportez votre programme chez un autre utilisateur, son répertoire courant sera différent (sauf coup de bol) et votre programme ne s’exécutera pas.

Par exemple, le chemin absolu du fichier test_file que je viens de créer en utilisant un émulateur de terminal est : /home/benoit/test_file. Or, tout le monde ne s’appelle pas Benoît. Certains s’appellent Sigismond, Côme, Alceste ou Antiphane. C’est leur droit. Du coup, il y a fort à parier qu’un tel script ne s’exécutera pas (à cause de la ligne 5):

#!/usr/bin/env python3
# -*- coding: utf8 -*-

bonjour = "Bonjour et bienvenue dans mon antre!"
with open('/home/benoit/test_file', 'w') as file_:
    file_.write(bonjour)

Personnellement, pour venir à bout de ce problème, je récupère le répertoire courant grâce à la méthode os.getcwd(), je le stocke dans une variable (ligne  6) et je couple cette dernière avec le chemin relatif du fichier (ligne 9).

#!/usr/bin/env python3
# -*- coding: utf8 -*-

import os

cwd = os.getcwd()
print(cwd)
bonjour = "Bonjour et bienvenue dans mon antre!"
with open(cwd + '/test_file', 'w') as file_:
    file_.write(bonjour)
print(bonjour)

Changer de répertoire avec os.chdir() et la commande cd

la commande cd fournie par l’interpréteur en ligne de commande Bash

Cette commande bash s’utilise dans un émulateur de terminal et elle permet de modifier le répertoire courant. cd signifie change directory. Je rappelle que le répertoire courant d’un émulateur de terminal est toujours par défaut le répertoire utilisateur (/home/benoit en ce qui me concerne). Pour le modifier, il suffit par exemple de rentrer cd Documents et le répertoire courant deviendra /home/benoit/Documents. Observez la capture d’écran ci-dessous et constatez par vous-même que l’invite de commande à changé : benoit@benoit-GA-880GM-UDH:~/Documents$

cd

La méthode os.chdir()

On peut également modifier le répertoire courant dans le script grâce à la méthode os.chdir(). Là encore, chdir signifie change directory.

Les deux codes ci-dessous exécutent le même programme. Le script fichier_2.py est placé dans /home/benoit tandis que le chemin du fichier test_file est /home/benoit/Documents. Ce sont les lignes 5 et 8-9 qui nous intéressent.

#!/usr/bin/env python3
# -*- coding: utf8 -*-

import os
os.chdir(os.getcwd() + "/Documents")
cwd = os.getcwd()
print(cwd)
bonjour = "Bonjour et bienvenue dans mon antre!"
with open('test_file', 'w') as file_:
    file_.write(bonjour)

/home/benoit/Documents

#!/usr/bin/env python3
# -*- coding: utf8 -*-

import os
cwd = os.getcwd()
print(cwd)
bonjour = "Bonjour et bienvenue dans mon antre!"
with open('Documents/test_file', 'w') as file_:
    file_.write(bonjour)

/home/benoit

Aperçu de quelques méthodes du module os.path()

Le code ci-dessous vous montre quelques méthodes du module os.path, à savoir :

Ce n’est qu’un aperçu. Il existe d’autres méthodes que je vous invite à découvrir en consultant la documentation officielle.

#!/usr/bin/env python3
# -*- coding: utf8 -*-

import os.path
os.chdir(os.getcwd() + "/Documents")
cwd = os.getcwd()

bonjour = "Bonjour et bienvenue dans mon antre!"
with open('test_file', 'w') as file_:
    file_.write(bonjour)

absolute_path = os.path.abspath('test_file')
basename = os.path.basename(absolute_path)
dirname = os.path.dirname(absolute_path)
split = os.path.split(absolute_path)

print("Répertoire courant = {}".format(cwd))
print("Chemin absolu = {}".format(absolute_path))
print("Nom de base = {}".format(basename))
print("Nom du répertoire parent = {}".format(dirname))
print("Fractionnement du chemin absolu = {}".format(split))

Répertoire courant = /home/benoit/Documents

Chemin absolu = /home/benoit/Documents/test_file
Nom de base = test_file
Nom du répertoire parent = /home/benoit/Documents
Fractionnement du chemin absolu = (‘/home/benoit/Documents’, ‘test_file’)

La méthode os.listdir()

Cette méthode retourne une liste contenant les noms de toutes les entrées d’un répertoire passé en argument. Je vais appliquer par exemple os.listdir() sur un de mes répertoires intitulé mon_jardin.

#!/usr/bin/env python3
# -*- coding: utf8 -*-

import os
print(os.listdir("/home/benoit/mon_jardin"))

[‘notes_tomates’, ‘note_number’, ‘species.py’, ‘entrylist’, ‘validated’, ‘images_fruits’, ‘images’, ‘legumes’, ‘entrees_agenda’, ‘phototheque.py’, ‘.gitkeep’, ‘images_legumes’, ‘calendrier.py’, ‘accueil.py’, ‘agenda.py’, ‘dossiers_images’, ‘__pycache__’, ‘jardin.desktop’, ‘fruits’, ‘README.md’, ‘module_notes.py’, ‘file_color’, ‘varietes_tomates’]

La méthode os.rename(src, dst)

Renomme le fichier ou le répertoire source (src)  en dst (destination).

#!/usr/bin/env python3
# -*- coding: utf8 -*-

import os
os.rename("/home/benoit/mon_jardin", "/home/benoit/mon_ordinateur")

mon_ordinateur

La méthode os.remove(path)

Supprime le chemin passé en argument (path). Si path est un répertoire, Python lève une exception. Pour supprimer un répertoire, il faut utiliser la commande os.rmdir() qui ne fonctionne que si le répertoire est vide! Si tel n’est pas le cas, Python lève là-encore une exception!

La méthode os.mkdir(path)

Cette méthode créé un répertoire nommé path.

#!/usr/bin/env python3

import os
os.mkdir('/home/benoit/ma_voiture')

ma_voiture


Gravatar de Benoît Boudaud
Original post of Benoît Boudaud.Votez pour ce billet sur Planet Libre.

Articles similaires