Inscrivez-vous maintenant pour accéder à toutes nos fonctionnalités. Une fois inscrit et connecté, vous pourrez créer des sujets, publier des réponses aux discussions existantes, donner de la réputation à vos collègues, obtenir votre propre messager privé, publier des mises à jour de statut, gérer votre profil et bien plus encore. Si vous avez déjà un compte, connectez-vous ICI autrement Inscription un compte gratuit aujourd'hui!
-
Compteur de contenus
84 -
Inscription
-
Dernière visite
-
Jours gagnés
1
Tout ce qui a été posté par dokkun
-
L'éditeur par défaut de Debian est configuré à l'installation. Si vous êtes (comme moi) un grand habitué de nano et que vous vous retrouvez sous vi/vim, ceci peut-être gênant pour éditer, par exemple, le fichier crontab. Méthode générale: Debian propose l'outilupdate-alternatives pour gérer cela. La commande vous sort tout d'abord une liste des éditeurs disponibles, puis vous demande de faire un choix. Exemple de sortie sur le serveur où je compose ce message :update-alternatives --config editor There are 4 alternatives which provide `editor'. Selection Alternative ----------------------------------------------- 1 /bin/ed *+ 2 /bin/nano 3 /usr/bin/vim.tiny 4 /usr/bin/vim.basic Press enter to keep the default , or type selection number: Dans ce cas là tout va bien. Sur le serveur d'un client, je me suis retrouvé avec l'éditeur joe que je ne connaissais pas du tout. Je suis donc repassé sous nano: update-alternatives --config editor There are 10 alternatives which provide `editor'. Selection Alternative ----------------------------------------------- 1 /bin/ed 2 /bin/nano 3 /usr/bin/vim.tiny *+ 4 /usr/bin/joe 5 /usr/bin/jmacs 6 /usr/bin/jstar 7 /usr/bin/jpico 8 /usr/bin/rjoe 9 /usr/bin/mcedit-debian 10 /usr/bin/vim.basic Press enter to keep the default , or type selection number: 2Using '/bin/nano' to provide 'editor'. Voilà comment en quelques secondes ne plus chercher pendant des heures les commandes d'un éditeur que vous utilisez peu.
-
Ouh qu’il est mauvais ce titre. En même temps, s’il fallait que je détaille le nombre de systèmes de fichiers sous Linux, le titre serait beaucoup, beaucoup trop long. Bref, cet article est destiné aux dépanneurs qui n’ont qu’une machine Windows sous la main, et qui doivent consulter et/ou récupérer du contenu qui se trouve une partition et formatée, par exemple, en ext4 (pas seulement, mais c’est ma démonstration, alors…). Et il existe au moins un outil gratuit pour ça, c’est pas beau ? Ça faisait longtemps que j’avais pas bichonné mes lecteurs qui sont encore menottés. Ceci dit, avec encore une hégémonie au niveau de l’entreprise, Microsoft n’est pas près de disparaître de sitôt. La preuve, plus de quatre mois après l’arrêt de Windows XP, presque 25% des ordinateurs de la planète en sont encore équipés, et il équipe, toutes versions confondues, 90% des ordinateurs. Un taux qui va tendre à baisser rapidement dans les prochains mois, la Chine ayant mis en place un programme ambitieux pour le remplacer par une distribution Linux locale. Les plus fortunés changeront les machines quand Windows 10 aura fait ses preuves. Bref, faut tuer le vieux, et vite. Le pousser dans les orties ne suffira pas. Maintenant, on va tout de même s’approcher du monde libre. En effet, récemment, suite à une panne sur mon ordinateur portable (qui m’avait d’ailleurs conduit à utiliser fortement une tablette), j’ai eu besoin d’accéder à son contenu, et je n’avais qu’une machine Windows et mon Dock PATA/SATA>USB pour ce faire. Et bien évidemment, Microsoft ne sait faire que du Microsoft. Il va donc encore falloir trouver une parade pour pallier ce manque (et non pas pallier à, oui parce que je faisais souvent l’erreur aussi). ATTENTION : ce qui va suivre ne vaut que pour des partitions standards non chiffrées. Si le stockage est plus évolué (RAID, LVM, LUKS), le passage par un LiveUSB Linux s’impose. Linux Reader, le sésame Cet outil de la société DiskInternals, orienté récupération de données en premier lieu (un peu comme Recuva, que j’ai mis en oeuvre pour déterrer des infos négligemment laissées à la poubelle), permet de scanner, d’afficher le contenu des partitions ext2/3/4/HFS/Reiser, et de copier celui-ci le cas échéant sur une destination que saura pleinement exploiter Windows. Il est gratuit pour un usage personnel, et son installation est des plus simples, et petit raffinement, il n’embarque aucun crapware. L’interface Rappelons déjà le contexte : j’ai branché mon SSD sur mon dock SATA/USB, le disque est reconnu, installé, par contre, aucune lettre de lecteur n’apparaît, et pour cause : si l’on jette un œil au gestionnaire de disques logique, voilà ce qu’on peut apercevoir : Bon personnellement je sais exactement à quoi correspondent ces partitions, mais ça ne m’avance pas à grand chose quand Windows ne sait pas aller plus loin que m’afficher la table de partitions. On lance donc le programme, et après quelques instants, on a droit à ça : On voit deux choses : en bas, les deux disques durs détectés, le WDC est un vieux Western Digital Velociraptor 150Go à 10000 tours/minute qui accueille le Windows du test, le Force SSD, comme son nom l’indique, est le SSD de mon ordinateur portable. Au dessus, toutes les partitions détectées, avec, petit raffinement, leurs points de montage lorsqu’utilisées sous Linux. Prévisualisation et récupération Donc ma partition de données sous Linux est montée dans le dossier /home (ce dossier contient d’ailleurs les dossiers de tous les utilisateurs de votre machine). En double-cliquant dessus, on peut dès lors accéder à son contenu. Il n’y a en fait qu’un seul dossier utilisateur, le mien. Et à l’intérieur, énormément de choses, de mes fichiers “standards” à ceux de configuration des applications qui me sont spécifiques (chaque utilisateur peut par exemple avoir sa propre configuration d’un même logiciel, tel Firefox). Ça paraît être un bordel sans nom, mais il faut savoir une chose : traditionnellement au pays de la banquise (la mascotte Linux est un manchot, au cas où vous auriez oublié) les fichiers et dossiers cachés ne le sont pas grâce à des attributs de système de fichiers, mais à un simple “.” (point) au début de leur nom. Et par défaut, dans l’explorateur j’ai bien moins de choses : Bref, je cherchais donc le script PHP que j’ai écrit pour uploader et partager des images sur le serveur de la T-OC (je le partagerais probablement un jour sur Github, si je pense qu’il ressemble à quelque chose). J’ai procédé à quelques changements dernièrement, j’en avais donc une copie dans mon dossier de développement. Je me rends donc dans le dossier dev, et je fais un clic simple sur site_images.php. le contenu s’affiche alors juste au dessous (si ce n’est pas le cas, cliquez sur le menu “View” en haut, puis “Preview Panel”) : Si vous faites un double-clic ce coup-ci, vous aurez alors droit à un assistant permettant de choisir le dossier de destination pour la copie du fichier en question (vous pouvez sélectionner plusieurs fichiers évidemment). Conclusion Voilà, vous savez (presque) tout ce qu’il y a à savoir, je vous laisse fouiller les menus du logiciel pour découvrir toutes les possibilités. J’ai choisi ce petit soft qui est très pratique et surtout à jour (testé sur Windows 7, mais utilisable sur les suivants), mais il existe d’autres projets permettant d’accéder à des partitions “Linux” sous Windows. Les plus anciens se souviendrons d’Explore2fs, dont le développement est abandonné (ne supporte pas ext4 notamment), mais vous avez aussi surtout ext2fsd qui ajoute carrément le support comme n’importe quel autre système de fichiers, ce qui permet d’avoir droit à la fameuse lettre de lecteur. Et lui est à jour, et probablement à conseiller si la fréquence du besoin d’accéder à des partitions ext4 augmente trop souvent. Ou alors, mieux, passez sous Linux !
-
Une réflexion que je me suis faite lorsqu’une fois de plus, j’étais connecté en SSH sur mon serveur et que je voulais avoir la durée d’une des trop nombreuses vidéos qui traînent dessus. Les outils sont nombreux, à peu près autant que les formats de fichiers qu’on peut rencontrer : photo, vidéo, archive, texte… Les méthodes, graphiques ou en ligne de commande, le sont aussi. Voici une sélection d’outils qu’on peut utiliser pour obtenir ces précieuses informations. Les vidéos Commençons par le premier type de fichiers qui m’a inspiré l’article à savoir les vidéos. Que ce soit sous Windows ou Linux, ligne de commande ou pas, il est très facile d’obtenir le poids d’une vidéo. Pour en obtenir la durée, les dimensions de l’image, les codecs utilisés, c’est déjà moins évident. Sous Windows, si tant est que le format de fichier est supporté (ce qui est le cas pour les AVI, MP4, MKV, mais pas les OGV/Webm pour ne citer que les plus répandus), un clic droit sur ledit fichier, on sélectionne propriétés, puis dans la fenêtre nouvellement ouverte, se rendre dans l’onglet “Détails” pour obtenir ces informations. Pour les formats non supportés, mon dévolu s’est jeté sur un outil open-source et multiplateformes, à savoir MediaInfo. Il est donc utilisable sous Windows aussi bien que sous Linux, et pour ce dernier, aussi bien en ligne de commande qu’au travers de l’interface graphique. D’ailleurs, pour l’installer, plusieurs pistes : Sous Windows, on télécharge l’installeur sur cette page Sous Debian, à partir de Wheezy (7.x), il est inclus dans les dépôts, et un simple apt-get install mediainfo suffit. Sous Manjaro/Arch, un pacman -S mediainfo fera l’affaire. Généralement sous Linux, il faudra installer le paquet mediainfo-gui pour disposer de l’interface graphique. Pour s’en servir, au choix : soit vous demandez à votre explorateur de fichiers d’ouvrir votre vidéo avec MediaInfo (qui invoquera mediainfo-gui), soit vous lancez MediaInfo seul, et choisissez le menu “File”, pour choisir “Open”, “Open File”, et vous diriger vers le fichier. Au final, pour les amateurs d’interface graphique, ça donne ça : En ligne de commande, on appelle mediainfo très simplement de la manière suivante : Shell ~/Vidéos/conf]$ mediainfo Internet libre, ou Minitel 2.0 Benjamin Bayart-AoRGoQ76PK8.mp4 General Complete name : Internet libre, ou Minitel 2.0 Benjamin Bayart-AoRGoQ76PK8.mp4 Format : MPEG-4 Format profile : Base Media / Version 2 Codec ID : mp42 File size : 164 MiB Duration : 1h 4mn Overall bit rate mode : Variable Overall bit rate : 357 Kbps Encoded date : UTC 2014-03-02 06:24:34 Tagged date : UTC 2014-03-02 06:24:34 gsst : 0 gstd : 3857205 gssd : BADC28A42MH1408628243196063 gshh : r8---sn-aigllnz7.googlevideo.com Video ID : 1 Format : AVC Format/Info : Advanced Video Codec Format profile : Baseline@L2.1 Format settings, CABAC : No Format settings, ReFrames : 1 frame Format settings, GOP : M=1, N=60 Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 1h 4mn Bit rate : 259 Kbps Maximum bit rate : 790 Kbps Width : 360 pixels Height : 288 pixels Display aspect ratio : 5:4 Frame rate mode : Constant Frame rate : 25.000 fps Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.100 Stream size : 119 MiB (72%) Tagged date : UTC 2014-03-02 06:26:06 Audio ID : 2 Format : AAC Format/Info : Advanced Audio Codec Format profile : LC Codec ID : 40 Duration : 1h 4mn Bit rate mode : Variable Bit rate : 96.0 Kbps Maximum bit rate : 102 Kbps Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 44.1 KHz Compression mode : Lossy Stream size : 44.1 MiB (27%) Title : IsoMedia File Produced by Google, 5-11-2011 Encoded date : UTC 2014-03-02 06:25:17 Tagged date : UTC 2014-03-02 06:26:06 Bon là, aucun filtre, vous avez la totalité des informations. On remarque au passage, d’après les commentaires sur l’audio (la ligne “Title”), que l’encodage est le fait de Google. En effet, c’est une vidéo que j’ai récupéré sur Youtube, avec youtube-dl (la vidéo originale est disponible ici, et je ne peux que vous conseiller de la regarder et en tirer un enseignement si possible positif). En ligne de commande ou par l’interface graphique, nous avons désormais toutes les informations que nous voulons : dimensions, durée, taille de l’image, codecs, taux de compression, ce qui permet, notamment sous Windows, de comprendre pourquoi le Lecteur Windows Media vous insulte avec cet affreux message : Les images Pour les images, la “musique” est à peu près la même (hahahahaarrrrggl). Si Windows vous permettra d’obtenir des infos sur du BMP, du JPG, pas sur que le TIFF ou le PNG soit aussi accessible à cet attardé. MediaInfo saura là encore vous fournir les informations dont vous avez besoin. A un petit détail près : C’est bien, mais ça, je savais déjà. Pour obtenir plus d’informations, il faut ouvrir le menu “Debug”, et cocher “Complete” pour obtenir la totalité des informations concernant notre image. Une fois le bon réglage sélectionné, ça donne ça (faites défiler pour lire la totalité des infos) : Sous Linux, il suffira là encore d’invoquer “bêtement” mediainfo : Shell ~]$ mediainfo 1sbFkS6.jpeg General Complete name : 1sbFkS6.jpeg Format : JPEG File size : 84.2 KiB Image Format : JPEG Width : 841 pixels Height : 675 pixels Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Compression mode : Lossy Stream size : 84.2 KiB (100%) La musique Là encore, Windows ne saura vous donner les infos que des formats plus répandus, WAV et MP3 en tête; il ne saura par contre pas récupérer les infos des fichiers FLAC ou des OGG Vorbis. Plutôt que de les convertir en MP3 juste pour le plaisir de savoir combien de temps dure Highway To Hell (3 minutes 28 secondes– on dirait Hudson Hawk), on fera donc appel à MediaInfo pour nous renseigner sur le ou les morceaux : En ligne de commande, là encore, la procédure est enfantine : Shell ~/Musique/AC.DC-Iron.Man.2.OST-CD-FLAC-2010-GRMFLAC]$ mediainfo 15-ac_dc-highway_to_hell.flac General Complete name : 15-ac_dc-highway_to_hell.flac Format : FLAC Format/Info : Free Lossless Audio Codec File size : 26.3 MiB Duration : 3mn 28s Overall bit rate mode : Variable Overall bit rate : 1 056 Kbps Album : Iron Man 2 OST Track name : Highway to Hell Track name/Position : 15 Performer : AC_DC Producer : Columbia Genre : Rock Recorded date : 2010 Writing application : FLAC 1.2.1 Rip Date : 2011-11-09 Retail Date : 2010-00-00 Media : CD Ripping Tool : EAC Release Type : Retail Catalog : 88697 69168 2 OST : Yes Audio Format : FLAC Format/Info : Free Lossless Audio Codec Duration : 3mn 28s Bit rate mode : Variable Bit rate : 1 056 Kbps Channel(s) : 2 channels Sampling rate : 44.1 KHz Bit depth : 16 bits Stream size : 26.3 MiB (100%) Writing library : libFLAC 1.2.1 (UTC 2007-09-17) Language : English Les archives Jusqu’ici, on cherchait à peu près les mêmes informations : dimensions, codec audio/vidéo, taux de compression. Dans la vidéo, c’est notamment pratique quand un fichier AVI peut contenir aussi bien du divx, que du mpeg, ou des codecs plus anciens et/ou plus exotiques (c’est pareil pour le MKV, notez bien : ce ne sont que des conteneurs), pour vérifier si votre appareil de salon ou votre smartphone (les iPhone et autres Windows Phone sont des demeurés dans le domaine) sera capable de lire le fichier. Dans le cadre des archives, les informations seront différentes : on cherchera principalement à visionner la liste des fichiers, puisqu’en général l’extension de l’archive suffit à déterminer le type de l’archive. Je dis généralement, parce que dans la pratique, on peut avoir des surprises. En effet, un fichier OpenDocument (Texte, tableau, présentation, même combat) est en fait une archive zip qui contient les informations nécessaires qui constituent le texte. La preuve : Shell ~/Téléchargements/testing]$ file Memoire-SecureBoot-EbticemKrouna-2013.odt Memoire-SecureBoot-EbticemKrouna-2013.odt: OpenDocument Text ~/Téléchargements/testing]$ unzip Memoire-SecureBoot-EbticemKrouna-2013.odt Archive: Memoire-SecureBoot-EbticemKrouna-2013.odt extracting: mimetype extracting: Thumbnails/thumbnail.png inflating: layout-cache extracting: Pictures/10000000000001CD000001C2796C6317.jpg inflating: content.xml inflating: styles.xml inflating: settings.xml extracting: meta.xml inflating: manifest.rdf creating: Configurations2/statusbar/ creating: Configurations2/toolpanel/ creating: Configurations2/menubar/ creating: Configurations2/floater/ creating: Configurations2/toolbar/ creating: Configurations2/progressbar/ inflating: Configurations2/accelerator/current.xml creating: Configurations2/popupmenu/ creating: Configurations2/images/Bitmaps/ inflating: META-INF/manifest.xml Oui, c’est bien un OpenDocument, et pourtant unzip sait le traiter tout à fait normalement comme n’importe quelle archive zip. NOTE : On a utilisé ici la commande file pour déterminer le type du fichier. C’est utile surtout sous Linux car l’extension du fichier n’a au final que peu d’importance : mon image TrueCrypt porte l’extension txt, qu’on réserve d’habitude au texte brut. Mais je vous met au défi de l’ouvrir avec un éditeur de texte… Revenons à nos moutons. Sous Windows, il suffira d’ouvrir l’archive dans un utilitaire adapté (généralement, un gestionnaire d’archives) pour en découvrir le contenu sans avoir à l’extraire au préalable. Comme Windows ne sait ouvrir que des archives ZIP, qui ne sont pas les plus répandues de nos jours, j’ai tendance à utiliser 7-Zip, open-source et multiplateforme (même si je ne m’en sers que très peu sous Linux). Il supporte une quantité assez importante de formats d’archive, y compris certains qui ne sont pas des archives à proprement parler (je pense aux images ISO, qu’on utilise pour les CD/DVD et les clés USB). Winrar, qui n’est pas open-source, mais qui est parfaitement utilisable en version gratuite (un message vous rappelant régulièrement de l’acheter–à la manière d’un Sublime Text), sait lui aussi ouvrir la plupart des formats d’archives, y compris celui utilisé par 7-Zip. Sous Linux, il est aussi possible de faire ça graphiquement. Si vous utilisez le bureau KDE, Ark est tout indiqué pour vous rendre ce service. Les Gnomes utiliseront certainement file-roller. Comme je l’ai dit, 7-Zip existe aussi, et son fonctionnement est identique à la version Windows. En ligne de commande, si chaque format d’archive est manipulable avec des utilitaires dédiés, il est possible, quand vous avez 7-Zip d’installé, de l’utiliser comme “visionneuse” universelle, encore qu’on verra après le cas de certains formats plus exotiques pour les Windowsiens, plus habitués aux ZIP et RAR, et pour les plus vieux, les ACE. Réutilisons notre document/archive : Shell /Téléchargements/testing]$ 7z l Memoire-SecureBoot-EbticemKrouna-2013.odt 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=fr_FR.UTF-8,Utf16=on,HugeFiles=on,2 CPUs) Listing archive: Memoire-SecureBoot-EbticemKrouna-2013.odt -- Path = Memoire-SecureBoot-EbticemKrouna-2013.odt Type = zip Physical Size = 775877 Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2013-09-03 08:23:34 ..... 39 39 mimetype 2013-09-03 08:23:34 ..... 9103 9103 Thumbnails/thumbnail.png 2013-09-03 08:23:34 ..... 572 248 layout-cache 2013-09-03 08:23:34 ..... 704512 704512 Pictures/10000000000001CD000001C2796C6317.jpg 2013-09-03 08:23:34 ..... 280263 49417 content.xml 2013-09-03 08:23:34 ..... 91467 6620 styles.xml 2013-09-03 08:23:34 ..... 9757 1711 settings.xml 2013-09-03 08:23:34 ..... 1229 1229 meta.xml 2013-09-03 08:23:34 ..... 899 261 manifest.rdf 2013-09-03 08:23:34 D.... 0 0 Configurations2/statusbar 2013-09-03 08:23:34 D.... 0 0 Configurations2/toolpanel 2013-09-03 08:23:34 D.... 0 0 Configurations2/menubar 2013-09-03 08:23:34 D.... 0 0 Configurations2/floater 2013-09-03 08:23:34 D.... 0 0 Configurations2/toolbar 2013-09-03 08:23:34 D.... 0 0 Configurations2/progressbar 2013-09-03 08:23:34 ..... 0 2 Configurations2/accelerator/current.xml 2013-09-03 08:23:34 D.... 0 0 Configurations2/popupmenu 2013-09-03 08:23:34 D.... 0 0 Configurations2/images/Bitmaps 2013-09-03 08:23:34 ..... 1309 335 META-INF/manifest.xml ------------------- ----- ------------ ------------ ------------------------ 1099150 773477 11 files, 8 folders Rapide explication : 7z est le nom de la commande l est la commande que doit effectuer 7-Zip, ici list; je vous invite soit à lire le manuel de 7z, soit à saisir 7z –help dans votre terminal pour en savoir plus. Voyons maintenant le cas des archives au format tar.gz, tar.bz2, tar.lzma. Si Winrar s’accommode très bien des ces formats sous Windows, sous Linux, plus particulièrement en ligne de commande, les utilitaires de compression les plus usités (zip étant un format peu efficace, et rar un format propriétaire) vont au plus simple, et ne travaillent que sur un seul fichier/flux. C’est là qu’intervient le tarball, (d’où le .tar) format qui au final ne s’occupe que de regrouper plusieurs fichiers en un seul, qu’on peut dès lors compresser au moyen de son choix : gzip, bzip2, lzma (xz, utilisé par Arch/Manjaro, utilise un dérivé d’LZMA), pour les plus utilisés. voyons voir avec l’archive de mac Changer : Shell ~/Téléchargements/testing]$ 7z l macchanger-1.6.0.tar.gz 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=fr_FR.UTF-8,Utf16=on,HugeFiles=on,2 CPUs) Listing archive: macchanger-1.6.0.tar.gz -- Path = macchanger-1.6.0.tar.gz Type = gzip Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2013-03-17 00:17:01 ..... 1146880 352061 macchanger-1.6.0.tar ------------------- ----- ------------ ------------ ------------------------ 1146880 352061 1 files, 0 folders On s’imagine bien qu’il faut plus d’un fichier, qu’il y a au moins le programme lui-même et un fichier README, LICENSE, bref, un ensemble pour que ça fonctionne. Et en effet, en l’occurrence, voilà ce qu’Ark nous dit : Comment donc obtenir le listing en ligne de commande ? pour toutes les archives tarball, quelque soit l’algorithme de compression, c’est la commande tar qui va nous venir en aide : Shell /Téléchargements/testing]$ tar ftz macchanger-1.6.0.tar.gz macchanger-1.6.0/ macchanger-1.6.0/config.h.in macchanger-1.6.0/Makefile.am macchanger-1.6.0/src/ macchanger-1.6.0/src/mac.c macchanger-1.6.0/src/Makefile.am macchanger-1.6.0/src/mac.h macchanger-1.6.0/src/netinfo.h macchanger-1.6.0/src/maclist.h macchanger-1.6.0/src/maclist.c macchanger-1.6.0/src/Makefile.in macchanger-1.6.0/src/main.c macchanger-1.6.0/src/netinfo.c macchanger-1.6.0/configure macchanger-1.6.0/doc/ macchanger-1.6.0/doc/stamp-vti macchanger-1.6.0/doc/Makefile.am macchanger-1.6.0/doc/mdate-sh macchanger-1.6.0/doc/macchanger.texi macchanger-1.6.0/doc/version.texi macchanger-1.6.0/doc/Makefile.in macchanger-1.6.0/doc/macchanger.info macchanger-1.6.0/doc/texinfo.tex macchanger-1.6.0/Makefile.in macchanger-1.6.0/data/ macchanger-1.6.0/data/Makefile.am macchanger-1.6.0/data/wireless.list macchanger-1.6.0/data/Makefile.in macchanger-1.6.0/data/OUI.list macchanger-1.6.0/NEWS macchanger-1.6.0/AUTHORS macchanger-1.6.0/depcomp macchanger-1.6.0/README macchanger-1.6.0/tools/ macchanger-1.6.0/tools/IEEE_OUI.py macchanger-1.6.0/aclocal.m4 macchanger-1.6.0/macchanger.1 macchanger-1.6.0/missing macchanger-1.6.0/configure.in macchanger-1.6.0/install-sh macchanger-1.6.0/ChangeLog Décryptons les trois “switches” utilisés pour obtenir ce listing : f permet de dire à tar de lire un fichier; il va de soit qu’il faut donner le nom du fichier (ici, macchanger-1.6.0.tar.gz) t pour lister le contenu de l’archive z est le plus “tricky”, qui changera suivant l’extension de l’archive. z invoque gzip, jinvoquera bzip2; pour les autres, on préferera ajouter –xz, –lzma, –xz en switch Bien sur, c’est surtout la taille de l’archive qui va déterminer si vous allez simplement chercher la liste ou directement extraire l’archive. Dans le cas de MAC changer, ça ne serait pas grave, et l’extraction prendrait très, très peu de temps. Pour une archive de 600Mo par contre… En mode barbu De manière plus générale, on a vu plus haut que file permettait, dans une certaine mesure, de déterminer le type d’un fichier. Mais il n’existe que sous Linux, une autre méthode un peu plus bourrin consiste à ouvrir le fichier dans un éditeur Héxadécimal, qui va lire en brut le fichier et vous l’afficher tel quel. C’est faisable aussi bien sous Windows que sous Linux (j’utilise Oktetasous KDE, mais wxHexEditor existe aussi), notez. Vous pourrez alors découvrir, au début du fichier, un identifiant de type réel (appelé un peu abusivement selon moi “signature”), identifiant que lit d’ailleurs file pour vous indiquer le type de fichier : On peut voir deux choses dans le “texte” affichable : les deux lettres PK, et le type MIMEvnd.oasis.opendocument.text (je passe sur le reste, très “bouillie” pour le commun des mortels, dont je fais encore partie). file se sert donc du type mime pour dire à quel format nous avons affaire. PK lui, si on se réfère à la liste des signatures, désigne une archive ZIP. Voilà pourquoi unzip se débrouille très bien avec (n’importe quel gestionnaire d’archives supportant le ZIP d’ailleurs). Pour les plus barbus, en regardant les codes hexa-décimaux c’est plus précisément la suite 50 4B 03 04 qui désigne le format ZIP (50 et 4B étant le lettres P et K en ASCII, 03 et 04 des caractères “de contrôle”). Les fichiers “iwd” utilisés par Infinity Ward pour Call of Duty 2 et 4 (et suivants un peu aussi, mais de moins en moins, au profit d’un format binaire compilé) sont d’ailleurs eux aussi ni plus ni moins que des archives ZIP, rendant la construction de mods très facile. Pourquoi vous montrer ça ? Si la plupart du temps les gestionnaires de fichiers sous Linux se basent sur le type MIME pour déterminer le format du fichier, et donc l’application la plus a même de l’exploiter, sous Windows, l’extension (.exe, .jpg, .odt, .zip) est la seule reine pour guider le système vers l’application. Un bon moyen pour contourner certains filtres (proxys d’entreprises, censure de Windows Live Messenger sur certains formats), est donc de changer le type de fichier pour le transmettre. Si on oublie de rétablir “la vérité”, on aura l’impression d’avoir un fichier pourri. Avec les risques que ça comporte : ouvrir un fichier zip avec la visionneuse de photos n’a pas beaucoup de sens par exemple, et pourrait amener, dans le cas de fichiers spécialement formés, à ouvrir une ou plusieurs brèches sur votre machine. Gwenview est une visionneuse d’images. Pas étonnant qu’elle ne sache pas lire une animation flash. Masquer l’extension par défaut (ce qui est le cas de toute installation de Windows, depuis 1995) est d’ailleurs une très bonne opportunité pour les auteurs de virus, qui vont aller cacher leur programme en .jpg.exe : le .exe va donc être masqué par Windows, ne laissant affiché ce qui semble être donc une image, et si on dit aux mecs que c’est une femme à poil, il est évident que le fichier va être exécuté de nombreuses fois. Ayant toujours été un accroc aux extensions de fichiers (les anciens se souviendront probablement des fichiers que manipulaient l’amstrad CPC), J’ai toujours paramétré les Windows qui me passent sous la main pour qu’ils affichent clairement l’extension du fichier. Si vous ne l’avez pas déjà fait, je vous invite d’ailleurs à le faire tout de suite. Méthode la plus simple, Pour Vista et suivants (utilisateurs d’XP, il est urgent soit de mettre à jour, soit de vous libérer), ouvrez le menu démarrer, et commencez à taper “Options des dossiers”, il apparaîtra bien vite dans les résultats de recherche. En cliquant dessus, il vous ouvrira la fameuse fenêtre, et dans l’onglet Affichage, dans la liste les paramètres avancés, déroulez jusqu’à trouver la ligne “masquer l’extension de fichier dont le type est connu”, qui est cochée par défaut: Décochez-là, validez, et hop, l’explorateur affichera dès lors systématiquement l’extension, connue ou pas, si elle est présente évidemment (il est tout a fait possible de n’avoir que des fichiers sans extensions, mais ça rend leur utilisation bien plus compliquée). Dans cette même liste, recherchez la ligne “Ouvrir l’explorateur dans un processus séparé”, ça n’a rien à voir avec le sujet principal du billet, mais ça sera toujours un poil de stabilité de gagné pour votre Windows (une fenêtre récalcitrante, sur un dossier réseau par exemple, ne bloquera plus les autres fenêtres ou le bureau). Voilà ça y est, c’est fini Maintenant, si vous n’arrivez pas à obtenir les informations que vous voulez sur vos fichiers, je ne peux plus rien faire pour vous
-
Un serveur, kézako ? D’abord on va démystifier un peu le bousin : un serveur, ce n’est rien de plus qu’un pc qui a généralement comme caractéristique de fonctionner 24h/24 et 7j/7, 365j/an (+1 pour les années bissextiles), le tout avec seulement le cordon d’alimentation et le câble réseau. Ni clavier, ni souris, ni écran; pas besoin. Ce sont des serveurs qui hébergent vos sites web favoris, et qui sont donc chargés de vous les servir quand vous le leur demandez. Ce sont des serveurs qu’utilise la NSA pour stocker et traiter la quantité faramineuse, au delà de tout bon sens commun, les données acquises illégalement et pour lesquelles ont ne leur demandera jamais des comptes (parce que notre propre gouvernement fait la même chose sur nous). Ce sont des serveurs que Facebook utilise pour vendre vos vies aux publicistes et autres marketeux en manque d’immoralité. Et ce blog est stocké et servi par un serveur. Non, mon serveur est mieux rangé que ça Si c’est tout à fait possible, pour ce billet je n’irais pas jusqu’à dire que vous devriez héberger votre site web, ça demande des connaissances un peu plus poussées que la normale, et ici, je compte rester très accessible, il s’agit de définir le principe. De toute manière, comme pour n’importe quel pc, une fois qu’on a un serveur, on peut en faire pratiquement ce qu’on veut, pour peu qu’on y mette un peu de temps et de connaissance pour avoir le bon résultat. Bref, pour savoir s’il vous faut un serveur, il faut savoir si vous en avez un besoin qui serait mieux servi avec. Mes besoins, un exemple parmi d’autres Pour ma part, j’ai une quantité monstre de fichiers divers et variés, qui vont des séries TV aux iso Linux, aux photos, documents administratifs divers, films HD (pas beaucoup, mais chaque film pèse au minimum 6/7Go, avec une pointe à 30Go, ça grimpe donc très, très vite), sauvegarde de mes jeux Steam, et images de restauration des différentes machines. D’un autre côté, les machines de la maison sont presque toutes équipées de SSD, dont l’espace disque est bien restreint par rapport à un bon vieux disque dur classique. 128Go pour la grosse bertha, 120Go pour l’ordinateur portable. De plus, le nombre d’appareils qui doit y accéder est chez moi assez important, et certains ne sont pas équipés pour stocker autant de données (tablette, smartphones, Xbox 360 qui ne sait rien faire ou presque). Et pour garder toutes ces données en sécurité, un disque dur externe pour amener ces données aux différents matériels est particulièrement fragile (une seule chute et c’est la fin). Et puis j’ai eu mon Home Cinema, qui lui aussi aimerait me lire toutes mes séries, films, musique, en plus de mes DVD/Bluray (pour ça la bibliothèque est juste à côté). Bref, il me fallait une solution élégante et sécurisée pour stocker cette quantité de données, et les servir à mes appareils de la meilleure façon. Ça, c’était mon serveur à ses débuts J’ai donc pensé à un serveur de stockage. Dans le jargon, on appelle ça un NAS, pour Network Attached Storage, autrement dit, stockage attaché au réseau. Oui car il est très facile maintenant de mettre chez vous plusieurs machines en réseau. Vous avez tous une bidule box avec au moins un ordinateur relié dessus soit par un câble Ethernet, soit par Wifi. Ajoutez-y une deuxième machine, et ces deux bébêtes sauront communiquer ensemble pour peu qu’on leur montre la bonne langue. Pour ma part je l’ai monté à la main mon NAS, parce que j’ai choisi d’apprendre à bricoler et surtout que j’ai utilisé du matériel de récupération. Si vous avez le courage et la curiosité je vous invite à faire de même, vous en apprendrez beaucoup. Sinon, depuis plusieurs années ce sont développées des solutions toutes faites, qui ne vous demanderont que d’acheter les disques à mettre dedans, et de le configurer ensuite entièrement à la souris. Ils sont gentils hein ? Bref, les solutions pour avoir son “serveur” ne manquent plus, et les progrès sur les interfaces de gestion font qu’il vous est inutile de connaitre les arcanes de son fonctionnement, même si je pense que c’est toujours un plus, surtout quand ça ne fonctionne plus bien. Oui parce que ça peut arriver aussi, car ça reste du matériel informatique. Un NAS Synology, forcément plus classe que mon montage RAID ? L’unité d’intervention de la Police Nationale ? Et justement, un des risques quand ça ne fonctionne plus est que vous perdez tout. Je l’ai évoqué dans le cas du disque dur externe, une seule chute peut suffire à le tuer, et donc vos données avec si elles ne sont pas copiées ailleurs. Oui, vous pouvez avoir un second disque externe en secours, mais ça vous oblige à prendre du temps pour recopier le contenu de l’un vers l’autre régulièrement, c’est chronophage et ennuyeux. Eh bien dans un NAS, on peut faire la même chose, automatiquement, de manière transparente pour vous, ça s’appelle le RAID. Son R veut dire redondant, et l’une des utilisation de cette redondance est le mode miroir, ce qui veut dire qu’une donnée va être reproduite en un ou plusieurs exemplaires à différents endroits (typiquement différents disques) pour palier à la mort de l’un des disques. Le tout sans que vous ayez à intervenir, à part remplacer l’ancien disque par un nouveau, et là encore, vous n’avez à vous occuper de rien d’autre, le NAS se charge de lui redonner des données. La voilà la sécurité ! Bien sur ce n’est pas le Saint-Graal, et je vous invite à sauvegarder en plus les données les plus importantes sur un autre support, car il n’est pas impossible, même si très peu probable, que tous les disques “lâchent” en même temps, ce qui pourrait arriver en cas d’incident électrique grave (orage du diable). Pour les fichiers importants évidemment; mes sauvegardes Steam par exemple ne sont pas vitales. Il me serait possible de récupérer certaines séries TV qui sont récentes sur Internet. Mais à moins de poster tout comme un furieux, la montagne de photos persos que je stocke n’existe que chez moi, donc ça, je sauvegarde. L’intérêt supplémentaire d’un NAS, c’est que vous pourrez organiser une gestion des droits. C’est à dire que certaines personnes n’auront pas accès à certaines infos. C’est pratique même en famille, et ça vous évite d’avoir autant de disques dur que de types de contenus à stocker. Je le rappelle, un disque mobile est un disque en danger permanent. Y compris pour du vol. La plupart des NAS du marché (la marque Synology est une référence dans le genre) à prix réduit proposent deux emplacements pour disques dur. Plusieurs “modes” RAID sont alors accessibles : RAID0, RAID1, JBOD. RAID0 va répartir les lectures et les écritures en parallèle sur les deux disques, ce qui augment la performance dans les deux cas. Sauf que si l’un des deux disques meurt, vous perdez tout. JBOD ne sert qu’à “coller” les disques bout à bout, et ne fait aucune copie des données, là encore, zéro sécurité. C’est le RAID1 qui est le fameux mode miroir. Son inconvénient est que comme les deux disques fonctionnent exactement de la même manière, vous n’avez l’impression de n’en voir qu’un. Si vous achetez deux disques de 2To, vous ne verrez que 2To d’espace, puisqu’il utilise le double pour chaque donnée. Bref, une fois les disques installés et prêts à servir, le NAS vous permet de créer des dossiers partagés qui seront accessible par votre réseau maison. Et tout se fait avec des clics dans une interface Web. Disk Station Manager, l’interface des Synology Bien plus que du stockage Comme je disais, les NAS ont grandi ces dernières années, et maintenant, il savent faire bien plus que de proposer des dossiers partagés et autres serveurs FTP. Je parlais d’usage au début de l’article, de besoin. Je ne me voyais pas balader en permanence mon disque dur externe de ma chambre au salon pour regarder mes vidéos, sachant que j’ai un escalier à monter/descendre à chaque fois. Il faut donc une solution plus pratique et moins risquée. Avec mes données stockées sur un NAS relié au réseau, l’une des solutions à ce problème est le DLNA, mais vous pourrez aussi voir le terme uPnP. Il s’agit d’annoncer sur votre réseau local que votre NAS sait servir des fichiers multimédia : photo, musique, vidéo. Le tout sans avoir besoin de configurer quoi que ce soit, dehors d’avoir les deux machines reliées à votre réseau. Je n’ai pas appris à mon lecteur Bluray où se trouvait le serveur DLNA. Je n’ai pas appris à mon serveur DLNA qu’il y avait un lecteur Blu-Ray à fournir. L’un passe son temps à dire qu’il est là, l’autre l’entend et ils se parlent (“T’as quoi dans tes dossiers ?” “J’ai ça, si ça t’intéresses” “Ça a l’air cool, je vais regarder celui-là tiens”), c’est aussi bête que ça. Et la seule chose que vous ayez à faire, c’est de dire à votre NAS quel dossier il doit scanner pour le DLNA. Chez moi, j’ai limité aux vidéos, et ça représente déjà plus de 3500 fichiers, ce qui prend un peu de temps au démarrage. Mais si vous souhaitez revivre l’enfer des soirées diapos en regardant vos milliers de photos sur votre télé, c’est possible aussi ! Il y a quelques temps, j’ai commencé plusieurs développements web dont ma base de données de films “physiques” (que je partagerais bien un jour avec vous, si j’ai le courage de finir ce qui est en cours dessus). Il faut un environnement “web” pour ça, et bien il existe des solutions pour certains NAS, de la même façon que pour le DLNA, sous forme de plugin. Même si j’ai choisi une autre solution chez moi (la virtualisation, mais là, on dépasse le cadre accessible du billet). Vous pourriez très bien avec cet environnement héberger votre propre blog, même si là encore, ce n’est pas ce que j’ai choisi pour celui-ci, car il y a un problème : une connexion ADSL se prête très mal à fournir du contenu, typiquement un site web, surtout s’il atteint une certaine notoriété. Je l’avais dit, ça demande un peu plus de technique et de réflexion, mais l’idée est là. Une fois la machine en place, les possibilités sont nombreuses. Ça a de la gueule comme ça, mais derrière, c’est autre chose Il faut donc un réseau solide ? C’est une contrainte mais oui: le réseau doit être solide, et si possible puissant. Un NAS en Wifi ne sera utile que pour de petits fichiers, car les débits requis pour de plus gros contenus ne sont pas facile à atteindre, même avec un bon Wifi 802.11n (le petit nom de la révision qui permet 150Mbps en moyenne, en théorie). Encore plus si les appareils qui doivent y accéder sont eux aussi en Wifi, car ils devront alors tous se partager ces 150Mbps. Préférez donc toujours le câble Ethernet pour le relier à votre réseau, et si possible, en Gigabit Ethernet si votre bidulebox et le NAS le permettent. Car en Gigabit, le débit théorique est de 120Mo/s. Avec un appareil en Wifi 802.11n qui peut lire à une vitesse maximale de 10Mo/s, il est possible de servir d’autres appareils dans des conditions décentes, alors qu’en Ethernet classique (dit Fast Ethernet), le débit théorique n’est alors plus que de 12Mo/s, et là, un seul appareil va saturer tout, et quand un deuxième s’en mêle, c’est la bérézina. Et puis le Gigabit, quand les deux appareils sont reliés avec de tels débits, permet d’utiliser certains gros fichiers directement depuis le NAS sans avoir à les recopier localement (typiquement, mes isos Linux quand je crée les LiveUSB ou les teste en machine virtuelle). Avec donc des performances dans la moyenne des disques mécaniques classiques d’il y a 3/4 ans. Cool hein ? Non, là, ça va trop loin Et moi, est-ce que j’en ai besoin ? Je l’ai dit très tôt, tout est une question d’usage. Si vous n’avez pas beaucoup de fichiers, ou pas beaucoup d’appareils, un “simple” disque dur externe pourra suffire. Si vous commencez à vouloir chercher à monter vos propres projets Web, et que vous voulez garder la main dessus, le besoin d’une machine dédiée pour les héberger commencera à se faire sentir. Plus récemment, je me suis intéressé à la domotique, qui consiste (entre autres) à contrôler directement les appareils de votre maison à partir d’un terminal informatique, le tout piloté par un serveur. Monter son propre serveur est un autre moyen d’en apprendre plus sur le fonctionnement d’un ordinateur, sans mettre en péril sa machine de travail (si c’est un ordinateur portable, ou pire, une tablette–mécréant !– ça sera dur de démonter). C’est aussi l’occasion d’en apprendre plus sur des systèmes d’exploitation qui ont peu de choses en commun avec Windows.
-
Quand vous utilisez PuTTY sous Windows, les fichiers de clés privées utilisées sont au format ppk (qui doit vouloir dire PuTTY Private Key), qui n’est utilisable que par lui (enfin, pas que). Fort heureusement, il n’y a pas besoin de recréer un jeu de clé quand vous changez d’environnement et surtout de logiciel. Pour ce faire, c’est le petit utilitaire PuTTYgen qui va nous servir. PuTTYgen, générateur et convertisseur de clés depuis 1999 Ce petit programme devrait déjà être installé, puisqu’il devrait vous avoir servi pour créer votre accès. Si on vous a juste fourni la clé et que PuTTYgen n’est pas présent sur votre machine, vous pouvez le récupérer sur le site du développeur du programme. Il faut cliquer sur le bouton “Load” entouré sur la capture ci-dessus, et sélectionner votre fichier .ppk préféré. Le résultat devrait ressembler à ça : Ensuite, il faut cliquer sur “Conversions” dans le menu, et sur “Export OpenSSH key”, puis choisir un nom de fichier, n’importe lequel. Il faudra ensuite le poser dans un dossier utilisable sous Linux. UPDATE : Sur le blog Sam et Max, Sam nous apprend que PuTTY existe aussi sous Linux. Deux possibilités : soit vous l’utilisez, mais c’est pas super intégré à votre environnement de bureau, soit vous utilisez leur méthode pour installer puttygen et convertir la clé si vous n’avez pas de Windows sous la main. La méthode est donnée pour Ubuntu, mais sous Manjaro/Arch, il est inclus dans le paquet putty. Un simple pacman -S putty suffira à l’installer. Les commandes seront ensuite les mêmes. Le client OpenSSH, la vraie geekerie commence Bien, nous voilà sous Linux, notre fichier se trouve dans notre dossier utilisateur (techniquement vous pouvez le ranger où vous voulez), et nous cherchons à accéder à notre machine distante. Shell ls -l total 12 drwxr-xr-x 2 root root 4096 1 déc. 10:27 fbx -rw-r--r-- 1 root root 1922 2 janv. 09:47 linksys.py -rw------- 1 root root 883 7 avril 2013 viedugeek.ssh root@viedugeekFS:~# Remarquez bien les droits d’accès sur le fichier (viedugeek.ssh ici). Le fichier ne doit pouvoir être lisible que par son propriétaire, sinon ssh refusera de l’utiliser, car trop sensible. Pour ça, un simple chmod 0600 viedugeek.ssh suffit. Sinon, pour accéder à votre machine, une seule ligne de commande suffit, et vous vous retrouvez sur votre serveur distant : Shell ssh viedugeek@distant.server -i /root/viedugeek.ssh The authenticity of host 'distant.server (1.2.3.4)' can't be established. RSA key fingerprint is e5:2c:f5:fe:18:bb:b0:2c:56:ee:16:51:ca:3f:b6:a5. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'distant.server' (RSA) to the list of known hosts. Linux heberg 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Jan 3 16:25:00 2014 from 5.6.7.8 viedugeek@heberg:~$ Le prompt (viedugeek@heberg ici) doit vous renseigner du succès de la connexion. Options supplémentaires et automatisation C’est la version la plus simple. Je vais vous présenter une version un peu plus complète, qui permet plusieurs choses : Shell ssh viedugeek@distant.server -i /root/viedugeek.sh -p 22 -D 9999 Décortiquons cette commande relativement simple (si, si, vous allez voir) : ssh est évidemment le nom du programme viedugeek@distant.server désigne l’utilisateur et l’adresse du serveur -i /root/viedugeek.sh permet de sélectionner l’identité, la clé privée donc -p 22 désigne le port sur lequel se connecter; souvent, par “sécurité”, le port par défaut du serveur SSH est changé pour éviter des attaques simples dessus, il faut donc le spécifier à la commande -D 9999 permet de créer un tunnel et assigne un port local par lequel vous pouvez faire passer des applications par ce tunnel; pratique pour passer un proxy dans une entreprise où les VPN sont proscrits C’est bien, c’est mieux, mais ça fait toujours très long à taper tous ces caractères. Deux solutions s’offrent à vous : créer un script shell dans /usr/bin, ou bien créer un alias plus court dans le fichier ~/.bashrc, qui charge les paramètres lors de la connexion. Je préfère cette solution, qui ne nécessite pas l’accès à root sur la machine pour créer le script. On va la jouer court, comme d’habitude, et une seule commande va nous servir à ajouter l’alias au fichier : Shell echo "alias hbconnect='ssh viedugeek@distant.server -i /root/viedugeek.ssh -p 22 -D 9999'" >>~/.bashrc Le double chevron servira à ajouter l’alias à la fin du fichier, et si celui-ci n’existe pas, il le créera (peu probable, mais sait-on jamais). Conclusion J’aurais tant à dire sur les possibilités qu’offre OpenSSH ou les possibilités de personnalisation du shell sous Linux, il en faudrait un bouquin. Les réglages sont nombreux, aussi bien pour le client que pour le serveur. Pour ce dernier, on pourra lire par exemple ces bonnes pratiques pour une sécurisation.
-
J’ai déjà abordé le fichier de configuration .bashrc qui se trouve à la racine du dossier utilisateur. J’y ai notamment ajouté du git, et de quoi utiliser nano au lieu de vi… Mais on peut y mettre vraiment plein, plein de choses pratiques. À l’image du bureau, sachez que votre bash est très configurable, on peut lui faire faire tout et n’importe quoi (sisi, c’est possible) pour gagner du temps au quotidien. Si sur un poste de travail “graphique” ça ne parait pas si utile, sur serveur, généralement administré à distance avec SSH, c’est plus que bienvenu. Voyons donc ce qu’il est possible de faire. Note d’emblée : je n’ai beau évoquer principalement que Debian, car c’est la seule “autre” distribution que j’utilise vraiment en dehors de Manjaro, mais évidemment, ses dérivées (Ubuntu/Mint en tête), et en général n’importe quel “Linux” qui utilise bash comme interpréteur shell est évidemment concerné. Les alias, un gain de temps appréciable Premiers exemples, sur la gestion de fichiers Les alias permettent de définir voir redéfinir des commandes. C’est notamment utile pour appliquer par défaut un comportement. Sous Debian, on en trouve déjà quelques uns qui sont commentés (pas ici, car je les utilise) : Shell # You may uncomment the following lines if you want `ls' to be colorized: export LS_OPTIONS='--color=auto' eval "`dircolors`" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' alias l='ls $LS_OPTIONS -lA' # # Some more alias to avoid making mistakes: alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' Une fois n’est pas coutume, commençons par le deuxième bloc d’alias. Il faut savoir que par défaut, les commandes rm (suppression), cp (copie) et mv (déplacement/renommage) sont “directes”, notamment elles ne vous demandent pas de confirmation si un fichier existe déjà (copie et déplacement), où si c’est bien le bon fichier à “purger”. Le paramètre -i permet de passer en mode interactif, à savoir qu’il vous demandera de confirmation pour supprimer/écraser un fichier. Comme il n’est pas possible de revenir en arrière, vous poser la question juste avant de valider est un bon moyen d’éviter certains dégâts (genre un rm -r mal placé à cause d’un /en trop ?) Concernant les modifications sur ls, deux choses à distinguer. dircolors et l’export d’LS_OPTIONS permettent d’ajouter la coloration du listing en fonction de la nature des fichiers/dossiers, et de leurs droits. C’est assez simple à comprendre, rien de transcendant. Encore qu’LS_OPTIONS va nous resservir juste après, pour les alias. Ici, non seulement on “transforme” ls pour qu’il utilise $LS_OPTIONS, mais on ajoute également deux “commandes” qui utilisent ls de manière différente : ll permet d’éviter de devoir taper à chaque fois ls -l –color=auto, à savoir un affichage détaillé du contenu du dossier courant (ou celui spécifié dans la ligne de commande) l permet d’ajouter les fichiers cachés, en excluant les . et .. (c’est l’option -A; l’option -a permet de les afficher aussi). Je vais aller plus loin, car en fouillant le bashrc sur Manjaro, on trouve quelques pépites. D’abord, vous aurez probablement remarqué que les fichiers et dossiers sont affichés par ordre alphabétique, indépendamment de leur type. Mais quand vous utilisez un gestionnaire de fichiers “graphique”, les dossiers sont affichés en premier. Il est possible de retrouver ce comportement. Simplement, on modifiera la ligne définissant LS_OPTIONS pour qu’elle ressemble à ceci : Shell export LS_OPTIONS='--color=auto --group-directories-first' L’option –group-directories-first est je pense assez explicite pour les anglophones, puisqu’elle indique à ls de regrouper (group) les dossiers (directories) en premier (first). Qui a dit que c’était compliqué Linux ? Une dernière modification avant de passer à d’autres alias. Sachez qu’on peut modifier la façon dont la date s’affiche pour quelque chose de plus “explicite”. Par défaut sous Debian, vous n’avez que le mois, le jour, et l’heure : Shell root@master:/home# l total 40 -rw-r--r-- 1 root root 608 janv. 11 2014 ftp.sh drwxr-xr-x 2 root root 4096 juil. 30 00:08 kvm_games -rw-r--r-- 1 root root 2087 févr. 3 2014 kvm_games.xml drwxr-xr-x 4 root root 4096 juil. 29 22:42 script drwxr-xr-x 4 root root 4096 oct. 9 04:41 vm_backup -rwxr-xr-x 1 root root 2256 août 4 20:05 vm_backup.sh Passé une certaine date vous vous asseyez sur l’heure qui est remplacée par l’année. Donc pour avoir des dates/heures complètes plus simplement, on va ajouter ça à LS_OPTIONS : Shell export LS_OPTIONS='--color=auto --group-directories-first --time-style=+"%d.%m.%Y %H:%M"' Je vous invite à regarder la page de manuel de date pour découvrir toutes les options possibles applicables à –time-style. Sachez simplement que ça donne la date au format jour/mois/année avec l’année sur quatre chiffres, suivi de l’heure de modification au format 24h. Le résultat ? Shell root@master:/home# l total 40 -rw-r--r-- 1 root root 608 11.01.2014 12:57 ftp.sh drwxr-xr-x 2 root root 4096 30.07.2014 00:08 kvm_games -rw-r--r-- 1 root root 2087 03.02.2014 10:32 kvm_games.xml drwxr-xr-x 4 root root 4096 29.07.2014 22:42 script drwxr-xr-x 4 root root 4096 09.10.2014 04:41 vm_backup -rwxr-xr-x 1 root root 2256 04.08.2014 20:05 vm_backup.sh grep, le chercheur doué Un autre utilitaire auquel on fait très souvent appel est grep. On l’utilise d’ailleurs parfois en combinaison avec ls, parfois avec ps, parfois avec netstat… Bref, c’est un filtre qui sert très, très souvent. On va le rendre un peu plus “fancy” en lui demandant de “surligner” les résultats de recherche, comprendre qu’il va afficher en rouge le mot recherché dans les lignes qu’il renverra : Shell alias grep='grep --color=tty' –color peut prendre plusieurs valeurs qui définiront le contexte dans lequel la couleur apparaîtra, je vous laisse consulter la page de manuel pour découvrir les options disponibles. Un peu de diagnostic ? Deux utilitaires permettent de rapidement savoir si le serveur a besoin d’air ou pas, à savoir df etfree. Le premier s’occupe des partitions, le deuxième de la mémoire vive. Sauf que par défaut il donne les tailles en kilooctets, ce qui est clairement peu adapté de nos jours, à l’ère des Go sur la RAM et des To pour les disques durs. On va donc redéfinir les commandes en leur adjoignant les options nécessaires : Shell alias df='df -h' # Tailles "humaines" alias free='free -m' # Affiche en Mo Avec -h, df adaptera l’affichage avec l’unité la plus adaptée (Mo, Go, To). free affichera désormais les quantités de RAM en Mo, plutôt qu’en ko par défaut. Un gain de temps pour les plus mauvais en calcul mental qui ne savent pas diviser par 1024 (puisqu’on travaille en binaire), et rend l’affichage plus agréable Les connexions distantes J’allais parler des alias pour les connexions SSH, mais en fait, j’en ai déjà parlé dans le billet sur la conversion des clés PuTTY. Les commandes de mises à jour Dernier alias, que j’utilise en différentes “saveurs” suivant la distribution que je manipule. Il est très utile car j’ai actuellement à charge ce qui correspond à six machines Debian (quatre virtuelles sur deux physiques), une CentOS, et trois Manjaro (je serais bientôt “débarrassé” de deux des Manjaro, car ce ne sont pas mes machines). Quand il s’agit de mettre à jour tout ça, comment dire… ça pique d’avoir à taper du apt-get update && apt-get upgrade (bien long), yum update (un peu plus court) et autres pacman -Syu (plus cryptique celui-là). Par chance, je n’ai pas de Gentoo sous la main, et je ne m’en porte pas plus mal, merci. Bref, j’ai donc concocté un alias “maj” qui permet d’éviter de taper de manière répétitive toutes ces commandes. Parfois plusieurs versions, choisissez celle qui vous correspond le mieux (notamment pour ceux qui comme moi, ont la mauvaise habitude de se connecter directement avec le compte root). Sous Debian : Shell #Pour root alias maj='apt-get update && apt-get upgrade' #Pour un utilisateur standard alias maj='sudo apt-get update && apt-get upgrade' Sous Fedora/CentOS : Shell alias maj='sudo yum update' Sous Manjaro/arch : Shell #Pacman seul alias maj='sudo pacman -Syu' #en incluant les paquets AUR alias maj='yaourt -Syua' Notez que je n’appelle pas yaourt avec sudo, car il l’appelle de lui-même au besoin. Notez aussi, pour Debian, l’utilisation du &&, qui indique de ne lancer la deuxième commande que si la première a abouti avec succès. Ceci afin d’éviter de casser votre distribution, par exemple si l’un des dépôts que vous utilisez ne répond pas, qu’il évite de ne mettre à jour qu’une partie des paquets, ce qui pourrait s’avérer dangereux et/ou rendre la distribution instable. Votre dossier de scripts perso, grâce à PATH Avec le temps, on accumule les scripts fait maison, ou ceux qu’on a piqué sur d’autres sites. Si on est organisé, on a rangé ça dans un dossier /home/script (par exemple), mais pour les appeler, on s’arrache à chaque fois à écrire /home/script/mon_script.sh blablabla ce qui, même en abusant de la touche Tab (pour auto-compléter la frappe), reste lourd, surtout si on doit enchaîner les commandes persos. C’est là qu’on va faire intervenir PATH. $PATH quand on cherche à savoir ce qu’il y a dedans, est une variable dite globale (présente en mémoire, accessible par n’importe quel processus), qui contient les chemins vers les dossiers des exécutables. Sur une Debian, en tout cas sur celle de ma VM d’hébergement, ça correspond à ça : Shell seboss666@heberg-new:~$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games Les différents chemins sont séparés par “:”. L’idée est donc d’ajouter /home/script aux chemins présents dans PATH. On procède en ajoutant cette ligne à votre .bashrc : Shell export PATH=/home/script:$PATH Vous pouvez aussi entrer cette commande directement dans le shell, sans avoir à tout redémarrer, le résultat est immédiat. Le export est nécessaire pour rendre la variable globale (on l’exporte du script qui l’exécute/la crée/la modifie, sinon elle disparaît avec la fin du script). Un extracteur d’archive universel ? Facile Je n’ai même pas honte de vous partager cette “fonction” trouvée dans mon propre .bashrc sous Manjaro. Après tout, c’est utilisable aussi sous Debian et sous CentOS, alors pourquoi s’en priver ? On pourrait coller cette routine dans un script, et utiliser l’option décrite juste au dessus. Mais là, je trouve l’astuce élégante, et permet de montrer comment peut fonctionner bash, et son fichier bashrc. Il est donc question ici non pas de définir un alias, mais carrément une fonction, qui appellera les outils adéquats en fonction du type d’archive. C’est assez basique, puisque ça se base sur l’extension du fichier, alors qu’on a vu dans l’article sur la recherche d’information que l’extension n’était pas toujours une donnée fiable. Mais ça marche quand même, et ça réduit pas mal l’écriture, alors pourquoi se priver ? Donc voilà la fonction : Shell # ex - archive extractor # usage: ex <file> ex () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1;; *.7z) 7z x $1 ;; *) echo "'$1' cannot be extracted via ex()" ;; esac else echo "'$1' is not a valid file" fi } Très simple, j’avais prévenu : on l’appelle par son petit nom avec le nom de l’archive à décompresser, et il suffit de laisser faire la magie. En fait de magie, juste un test pour vérifier qu’on lui donne bien un fichier, si c’est le cas il teste l’extension, s’il la connaît, il appelle l’outil adapté pour l’extraire, sinon il indique qu’il ne connaît pas. Si ce n’est pas un fichier “valide” (comprendre fichier standard), il n’essaie même pas d’extraire, il vous annonce que ce n’est pas ce qu’il attend. Basique, parce qu’il n’y a pas beaucoup de gestion d’erreur là-dessus : que ce passe-t-il si on ne lui donne pas d’argument (de fichier à extraire) ? Si on lui en donne plus d’un? À moins d’une erreur sortie par les outils de décompression, même en cas d’erreur le script renvoie le code 0 (qui indique que tout s’est bien passé, alors que ce n’est pas le cas). Que se passe-t-il si l’un des outils (notamment unrar, qui n’est pas fourni par défaut dans la plupart des distributions, car non libre) est absent ? Ça pourrait vous faire un petit exercice si vous voulez en apprendre un peu plus sur la programmation de script shell. Ça pourrait aussi faire l’objet d’approfondissement qui aboutirait sur un article, pourquoi pas ? Vous avez deux heures Conclusion Je n’ai donné que quelques exemples “simples” de ce que le shell permet. Si j’ai ajouté le support de git (indisponible sous Debian malheureusement, à cause d’une version trop ancienne), certains ajoutent aussi des raccourics de commande git, d’autres vont jusqu’à modifier leur prompt d’une manière assez impressionnante (le prompt devenant presque un centre de notifications à lui seul). Le champ des possibles en terme de fonctionnalités peut devenir très large, jusqu’à inclure des scripts dans d’autres langages que le shell. Quand bien même, juste en shell on pourrait par exemple ajouter un mécanisme de corbeille à rm, plutôt que de supprimer directement et définitivement les fichiers/dossiers concernés (un autre exercice avec celui de l’amélioration de l’extracteur ?). Par ailleurs, j’aborde ici la modification du bashrc de votre utilisateur habituel (qu’il soit root ou un autre). Si l’on veut que les ajouts soient accessibles à tous les utilisateurs (avec les risques que ça peut comprendre parfois), on préférera ajouter nos modifications dans le fichier /etc/bash.bashrc qui lui est global (il est d’ailleurs le premier invoqué lors du lancement de bash, vient ensuite le fichier utilisateur). Petite note amusante de fin : la variable PATH existe aussi sous Windows, et remplit en théorie le même objectif. Seulement, elle est beaucoup moins utilisée car la souris règne en maître sur ce système. Tentez, je vous assure, ouvrez une console (tapez “cmd” dans le champ de recherche du menu démarrer, et validez), et tapez echo %PATH%. Magie, ça marche, par contre c’est encore plus moche que sous Linux !
-
Faisons les présentations FPM est un moteur d’exécution de PHP qui, comme son nom l’indique, se veut plus rapide qu’une exécution standard. Il est très adapté dans le cas d’applications web. Bien que n’importe quel serveur web supportant CGI peut en tirer partie, sa popularité tient surtout à son utilisation conjointe avec Nginx, un serveur web qui est particulièrement performant comparé à Apache. D’ailleurs, ma machine virtuelle à la maison utilise, entre autres, ces deux gaillards, installés grâce au script d’autoinstall de nicolargo. Je décrirais ici les manipulations qui ont été faites sur une Debian Wheezy 64bit, qui ici est virtualisée dans une machine KVM (ce qui n’a aucune espèce d’importance, Il est théoriquement possible d’adapter pour d’autres distributions (à vérifier notamment les emplacements des fichiers de configuration). Ensuite, toutes les commandes sont présentées comme saisies directement avec le compte root, ajoutez sudo en cas de besoin. Installation/préparation Grâce à ce magnifique outil que représentent les dépôts et apt, une seule commande permet d’installer les deux paquets qui nous seront nécessaires : Shell apt-get install libapache2-mod-fastcgi php5-fpm Ensuite, pour ne pas créer de conflits, je conseille de couper les services qui seront concernés par les modifications de configuration : Shell #méthode "moderne" service apache2 stop service php-fpm stop #méthode "standard" /etc/init.d/apache2 stop /etc/init.d/php-fpm stop Configuration de php-fpm Personnellement j’ai choisi de faire écouter fpm sur un port réseau plutôt que sur un (ou une, je sais plus trop) socket local. J’ai donc modifié le fichier /etc/php5/fpm/pool.d/www.conf, en particulier la ligne suivante : Shell ;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000 J’ai donc commenté l’ancienne configuration et ajouté la nouvelle. Évidemment, pensez à vérifier que le port est libre avant. Pourquoi le réseau ? Théoriquement, le gain de vitesse serait plus élevé en passant par une socket locale, car on évite la ré-encapsulation du “trafic” PHP en passant par l’interface loopback. Mais l’utilisation du réseau permet de rester stable sur de plus grosses charges, et dans le cadre d’une infrastructure qui séparerait le traitement de PHP du serveur web pur (comme ça pourrait être le cas de la base de données), c’est de toute façon la seule solution. Je pense donc à ceux qui, contrairement à moi, voudraient faire la bascule sur une infrastructure qui accueille plus de monde que mes ~50 visiteurs par jour. D’ailleurs, voilà le genre d’erreur sur laquelle vous pourriez tomber en cas de saturation de socket : PHP connect() to unix:/var/run/php5-fpm.sock failed or **apr_socket_recv: Connection reset by peer (104)** Note : si vous avez fait des modifications sur la configuration de PHP à l’époque de mod-php5 (dans le fichier /etc/php5/apache2/php.ini), il faudra les reporter dans le fichier/etc/php5/fpm/php.ini. Vous pourriez tenter un diff sur les deux fichiers pour vérifier les points à reporter, ou plus bourrin, écraser le “nouveau” fichier avec votre ancien. Mais là, si ça pète, je répond de rien, je n’ai pas procédé de la sorte. Sinon FPM reprend tous les fichiers de configurations annexes de PHP (lien symbolique de conf.d vers le dossier parent), donc les extensions installées continueront théoriquement de fonctionner. Configuration de fastcgi CGI est une interface pour l’exécution de scripts. Pour utiliser FPM avec Apache, on a donc installé le module fastcgi. Et histoire de gagner du temps, puisque ce sera la seule méthode d’exécution de PHP pour tous les vhost, on va procéder de manière globale, directement au niveau d’Apache. Voilà ce qu’on doit entrer dans le fichier /etc/apache2/conf.d/mod_fastcgi.conf (le créer s’il n’existe pas) : Apache < IfModule mod_fastcgi.c> FastCGIExternalServer /usr/sbin/php5-fpm -host 127.0.0.1:9000 AddHandler php5-fastcgi .php Action php5-fastcgi /usr/sbin/php5-fpm.fcgi ScriptAlias /usr/sbin/php5-fpm.fcgi /usr/sbin/php5-fpm <Directory /usr/sbin> Options ExecCGI FollowSymLinks SetHandler fastcgi-script Order allow,deny Allow from all </Directory> </IfModule> Notez bien que l’on renseigne l’adresse réseau de php-fpm. Pourquoi un fichier dans conf.d plutôt que modifier directement dans mods-available ? Pour garder la configuration d’origine en cas de souci. Ensuite, on désactive “l’ancien” module mod-php5, et on active le nouveau mod-fastcgi, sinon, ça ne servirait à rien : Shell a2dismod php5 a2enmod fastcgi Vraiment ne pas oublier de désactiver mod-php5, sinon c’est lui qui restera en service, avec FPM qui attendra désespérément dans le vide. Oui oui, on en a fait l’expérience Remise en service Les services sont installés, configurés, activés, y’a plus qu’à lancer : Shell #Méthode moderne service php-fpm start service apache2 start #A l'ancienne /etc/init.d/php-fpm start /etc/init.d/apache2 start Étape subsidiaire : Une fois que vous avez définitivement validé la bascule, vous pouvez supprimer le paquet libabache2-mod-php5 pour être sur de ne pas le voir réactivé par accident, ce qui pourrait causer les mêmes désagréments que le passage de mod-php5 à php-fpm (en particulier si vous modifiez la configuration de php). Conclusion : Let the magic begins Personnellement, je n’ai pas fait de vérifications chiffrées de l’amélioration de performances, mais vu comment Piwik fuse, j’aurais tendance à dire que ça répond bien. La consommation mémoire est un peu plus élevée, mais rien de mortel non plus. La génération des miniatures d’images dans WordPress est plus rapide aussi (moins d’attente après l’upload). Bref, c’est du bon. Pour la sortie d’Apache 2.4, le wiki propose une méthode légèrement différente. Je ne sais pas s’il faut la recommander aux utilisateurs d’Ubuntu qui y ont accès. De toute façon, cette installation d’FPM n’est qu’une première étape d’une migration prévue vers Nginx. Comprenez donc que je ne me sens pas plus concerné que ça.
-
Que doit-on modifier ? Les articles sont stockés dans la table wp_posts. Si on regarde de plus près, on constate qu’elle contient beaucoup d’articles, plus que ce qui est publié sur le blog ! 919 lignes pour un peu plus de 60 articles, what the ? En effet, cette table garde aussi la trace de toutes les révisions des articles (le champpost_status permettant de définir le… statut de l’entrée : publish, inherit). Il nous faudra modifier deux choses en particulier : les liens du champ ‘guid’ (qui permettent de “nommer” les articles en interne, mais qui contiennent le domaine), et les liens qui se trouvent dans le contenu même des articles/révisions (dans le champ ‘post_content’). Fort heureusement, il n’est pas nécessaire de tout faire à la main (vous imaginez modifier 900+ lignes ?), et il existe plusieurs façons de faire. Aussi, je ne peux que conseiller de faire une sauvegarde avant pour être sûr. Pour ça, PHPMyAdmin ou mysqldump feront l’affaire. Pour ce dernier, la commande est simple : Shell mysqldump -u user -ppassword bbase_wordpress >dbbackup.sql Voir la page de manuel pour les options plus précises. Et suivant la quantité de modifications à apporter, il est préférable de couper l’accès au site. Dans la suite de l’article, je remplace blog.viedugeek.info par test.viedugeek.info/blog, qui vous vous en doutez n’existe pas. Avec le client MySQL Probablement le plus “direct”, mais nécessite de travailler en direct sur la base. Je vais tout de même rappeler, pour les têtes en l’air comme moi, comment se connecter à une base MariaDB (ou MySQL, c’est pareil, je vais pas le répéter à chaque fois ) : Shell mysql -u user -ppassword base_wordpress Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 2208 Server version: 10.0.15-MariaDB-1~wheezy-log mariadb.org binary distribution Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. MariaDB [base_wordpress]> Evidémment on remplace user, password et base_wordpress par les utilisateur/mot de passe/nom de la base hein MariaDB dispose d’une fonction très pratique, replace(), qui permet de procéder à des remplacements. Commençons par le guid, avec la commande suivante : MySQL UPDATE wp_posts SET guid = replace(guid, 'blog.seboss666.info','test.seboss666.info/blog'); Sans préciser de condition WHERE, MariaDB va traiter toutes les entrées de la table wp_posts. Ne pas paniquer si la commande prend du temps, vu le nombre de lignes. Il faut ensuite s’occuper du contenu. La commande est pratiquement identique : MySQL UPDATE wp_posts SET post_content = replace(post_content, 'blog.seboss666.info','test.seboss666.info/blog'); Et voilà, ça devrait faire l’affaire. Avec PHPMyAdmin (commande directe) Si vous avez un accès “complet” à PHPMyAdmin (j’ai eu le tour une fois avec un PHPMyAdmin castré, sous prétexte de sécurité–on pouvait tout de même importer des sauvegardes, allez comprendre…), vous pouvez saisir directement des commandes SQL. Il suffit juste de prévoir de sélectionner la bonne base de données, et les commandes sont alors strictement les mêmes que celles saisies dans le client MariaDB directement. En modifiant une sauvegarde C’est un autre moyen de faire, un poil plus dangereux parce que plus “généraliste”, mais ça fonctionne aussi. Elle est surtout plus adaptée si d’aventure, vous ne pouviez pas exécuter directement des commandes. C’est peut-être plus adapté dans le cadre d’un hébergement mutualisé, ou si vous avez peur de saisir directement des commandes SQL. Donc pareil, on fait une sauvegarde (par PHPMyAdmin ou mysqldump), sauf que ce coup-ci, on va en faire une copie, et modifier cette copie à l’aide d’un bon éditeur de textes disposant de la fonction remplacer. Et encore, quand je dis “bon”, même le bon vieux Notepad de Windows propose la fonctionnalité. Car oui, la sauvegarde SQL est un gros fichier texte qu’il suffit d’ouvrir avec votre éditeur. Ensuite, il suffit d’ouvrir le menu “Édition”, et de sélectionner “Remplacer…” (ou plus rapide, le raccourci clavier Ctrl+H) qui conduit à l’ouverture de la fenêtre suivante : On fait comme c’est montré, à savoir blog.seboss666.info dans le champ “à remplacer”, et test.seboss666.info/blog dans le champ remplacement. Et on clique ensuite sur “Remplacer tout”, qui devrait vous dire combien de “liens” (occurrences) il a modifié. Il n’y a plus alors qu’à sauvegarder, puis importer la sauvegarde dans la base (soit avec le client en ligne de commande, soit avec PHPMyAdmin). Des commandes “portables” En effet, d’une part je n’ai abordé que deux outils, qui sont parmi les plus utilisés pour manipuler des bases de données MySQL/MariaDB, mais elles sont utilisables à priori dans d’autres outils, (je pense à SQLBuddy, abandonné mais toujours fonctionnel), voire même en utilisant un script maison (PHP, Python, faites votre choix). De plus, j’ai abordé le cas pratique des noms de domaine lors d’une migration d’un blog WordPress, mais sachez que vous pouvez remplacer à peu près n’importe quelle information de n’importe quelle base avec ces commandes, moyennant un poil d’adaptation évidemment. Notez aussi que si vous utilisez des extensions de nature à stocker le nom de domaine du site, il faudra aussi y prêter attention. Je pense entre autres aux commentaires, car même si j’utilise Disqus, une copie des commentaires est stockée au cas où je déciderais de m’en passer. Bref, si vous avez le savoir pour manipuler de la base de données, la gestion des plugins WordPress ne devrait pas être trop difficiles pour vous.
-
L’utilisation de vim peut paraître déroutante au premier abord, surtout lorsque l’on a toujours utilisé des éditeurs graphiques. Et pourtant, il ne faut en aucun cas se fier à son apparente austérité : vim est un outil très puissant avec lequel vous ne serez jamais limité. C’est d’ailleurs pour cela qu’il est tant apprécié des développeurs et administrateurs système. Et ça tombe bien, puisque Open Vim est un site qui vous propose de vous familiariser avec les commandes les plus utiles de vim. Laissez-vous guider par le tutoriel interactif et testez en direct le résultat grâce au simulateur intégré. Certes, ce tutoriel ne vous apprendra pas tout, mais il reste un excellent point de départ pour qui veut apprivoiser le célèbre éditeur. Pour finir, sachez que vim intègre de base un tutoriel. Pour cela, il suffit de lancer la commande vimtutor dans votre terminal. Q: Comment générer une chaîne aléatoire? R: Prenez un débutant, mettez le devant vim et demandez lui de quitter
-
Venant tout juste de changer de Mac, je découvre Mountain Lion et je me suis dit qu’il était temps de mettre un peu d’ordre dans mon environnement de développement. J’avais l’habitude d’utiliser MAMP pour le développement web, car celui-ci a l’avantage indéniable de fournir un package prêt à l’emploi, le tout en un clic. Revers de la médaille, il nous rend tributaire des versions de logiciels qu’il propose et s’intègre parfois mal avec d’autres environnements. Ainsi, nous verrons dans ce tutoriel comment mettre en place un stack AMP (Apache, MySQL et PHP) sous Mac OSX simplement et rapidement, le tout en utilisant au maximum les outils déjà intégrés au système. Note : ce tutoriel a été réalisé sous Mountain Lion, mais il devrait fonctionner pour les autres versions. En effet, les versions précédentes (Snow Leopard et Lion) possèdent, elles aussi un serveur Apache intégré. Si vous rencontrez des difficultés, n’hésitez pas à laisser un commentaire à la suite de l’article. Installer Apache Première bonne nouvelle, Apache est déjà intégré à votre système. Pour en avoir la preuve, lancez donc la commande suivante : 1 httpd -v Le retour devrait ressembler à ceci : 1 2 Server version: Apache/2.2.22 (Unix) Server built: Aug 24 2012 17:16:58 L’administration d’apache se fait grâce aux commandes suivantes : 1 2 3 4 sudo apachectl start sudo apachectl restart sudo apachectl stop sudo apachectl graceful # relance apache en attendant la fermeture des connexions établies Le document root En vous rendant sur http://localhost, vous devriez voir le célèbre “It Works”. Pour le moment, le document root se trouve dans : 1 /Library/WebServer/Documents/ Sur les anciennes versions de l’OS, les utilisateurs disposaient d’un dossier Sites dans leur répertoire personnelet l’on pouvait accéder à celui-ci via l’adresse http://localhost/~user (notez l’utilisation du tilde dans l’adresse). Nous allons utiliser ce système. On commence donc par créer le répertoire Sites s’il n’existe pas déjà (c’est votre cas si vous êtes sous Mountain Lion). 1 mkdir ~/Sites Création d’un fichier de configuration pour votre utilisateur : 1 sudo vim /etc/apache2/users/votreuser.conf Note : si vous ne connaissez pas votre utilisateur, lancer la commande suivante : 1 whoami On y insère la configuration suivante : 1 2 3 4 5 6 7 8 <Directory "/Users/votreuser/Sites/"> Options Indexes MultiViews AllowOverride All Order allow,deny Allow from all </Directory> Include /Users/votreuser/Sites/httpd-vhosts.conf Le include à la ligne 8 permet d’apporter un peu de commodités dans la gestion des vhosts car le fichier de conf sera disponible à la racine de ~/Sites, donc accessible rapidement. Notez que vous pourriez très bien mettre vos vhosts à la suite du fichier votreuser.conf. Il faut donc créer le fichier alloué à la configuration des vhosts : 1 touch ~/Sites/httpd-vhosts.conf On vérifie les permissions du fichier “votreuser.conf” qui doivent être à 644 : 1 sudo chmod 644 /etc/apache2/users/robin.conf On test les changements : 1 2 3 4 sudo apachectl restart cd ~/Sites/ touch index.html echo "It works from my personal folder" > index.html Rendez vous sur http://localhost/~votreuser/index.html. La page devrait afficher votre texte “It works from my personal folder”. Édition d’un vhost Les vhosts vous permettront de tester plusieurs sites en utilisant des noms de domaine en local. On édite le fichier httpd-vhosts.conf : 1 vim ~/Sites/httpd-vhosts.conf On y ajoute la configuration suivante : NameVirtualHost *:80 <Directory "/Users/votreuser/Sites"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> <VirtualHost _default_:80> ServerName localhost DocumentRoot /Library/WebServer/Documents </VirtualHost> <VirtualHost *:80> ServerName site1.local DocumentRoot "/Users/votreuser/Sites/site1" </VirtualHost> La dernière section est celle que vous devrez copier/coller pour créer autant de vhost que nécessaire. Bien sûr, nous ne disposons pas d’un nom de domaine réel pour tester le vhost et nous n’en avons d’ailleurs pas besoin. Nous allons tout simplement ajouter un host dans le fichier /etc/hosts : 1 sudo vim /etc/hosts On ajoute la ligne suivante (à la fin du fichier) : 1 127.0.0.1 site1.local Cette ligne aura pour effet de faire pointer le nom de domaine site1.local sur localhost. Pour tester, l’on créé un dossier site1 dans ~/Sites : mkdir ~/Sites/site1 touch ~/Sites/site1/index.html echo "It Works from site1" > ~/Sites/site1/index.html On relance Apache : 1 sudo apachectl restart On se rend sur http://site1.local pour tester le résultat. Installer PHP Comme pour Apache, la procédure se révèle simplissime. Il suffit de décommenter la ligne du module php5 dans le httpd.conf : 1 sudo vim /etc/apache2/httpd.conf On décommente la ligne suivante : 1 LoadModule php5_module libexec/apache2/libphp5.so On redémarre Apache : 1 sudo apachectl restart On teste le fonctionnement de php avec notre fichier créé précédemment : 1 2 mv ~/Sites/site1/index.html ~/Sites/site1/index.php echo '<?php phpinfo(); ?>' > ~/Sites/site1/index.php Puis on pointe sur l’adresse http://site1.local. Si tout s’est bien passé, le phpinfo() devrait s’afficher. Note : la configuration de php se situe dans /etc/php.ini.default (à renommer en php.ini). cd /etc sudo cp php.ini.default php.ini sudo chmod ug+w php.ini sudo chgrp staff php.ini Installer MySQL Avant d’installer MySQL, rendez vous dans Préférences systèmes->Système et confidentialité. Après avoir dévérrouillé le cadenas, cochez “n’importe où” pour la section “Autoriser les applications téléchargées de”. Sur le site de MySQL, on télécharge la version 64 bits sous format d’archive DMG (Mac OS X ver. 10.6 (x86, 64-bit), DMG Archive) Le site : http://dev.mysql.com/downloads/mysql/ Note : vous n’êtes pas obligé de vous inscrire pour télécharger MySQL Une fois l’archive décompressée et lancée, il vous suffit d’installer les 3 composants : Pour démarrer/arrêter MySQL, rendez vous dans vos préférences systèmes : Pour tester MySQL : 1 /usr/local/mysql/bin/mysql -v Cela devrait vous ouvrir un shell MySQL en affichant le numéro de version. Pour le quitter, faites Ctrl + C. Pour utiliser le binaire directement, on ajoute celui-ci à notre path (à adapter selon votre configuration). SI vous débuter et utilisez bash, créer tout simplement un fichier .bash_profile dans votre home. 1 vim ~/.bash_profile Ajoutez-y la ligne suivante : 1 export PATH="/usr/local/mysql/bin:$PATH" On teste sans le chemin absolu : 1 mysql -v Un mot de passe root pour MySQL Il est important de définir un mot de passe root pour MySQL à l’aide de la commande suivante : 1 mysqladmin -u root password 'motdepasse' Faites attention à bien utiliser les simples quotes. Installer phpMyAdmin Se rendre sur la page de download de phpMyAdmin : http://www.phpmyadmin.net/home_page/downloads.php On récupère le fichier phpMyAdmin-3.5.3-all-languages.zip. Une fois décompressé, on renomme le dossier en phpmyadmin puis on le place à la racine dans ~/Sites. On fixe un problème d’erreur 2002 : 1 2 sudo mkdir /var/mysql sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock On pointe sur l’adresse http://localhost/~votreuser/phpmyadmin/ Il suffit alors de se connecter avec l’utilisateur root et le mot de passe que vous avez configuré dans l’étape précédente. En bonus : un script pour générer vos vhosts Dans le but de simplifier un peu plus la procédure d’ajout de vhosts, j’ai créé un petit script bash dédié à cette tâche qui : éditera le fichier /etc/hosts créera un repertoire dédié au site dans ~/Sites (s’il n’existe pas déjà) éditera un vhost dans votre httpd-vhosts.conf redémarrera Apache pour prendre en compte les changements Pour l’utiliser Récupérez le script sur Github : 1 curl -OL https://raw.github.com/robinparisi/scripts-osx/master/vhosts-generator.sh Rendez-le exécutable : 1 chmod +x vhosts-generator.sh Editez la partie concernant le user : 1 USER="votre_user_ici" Lancez-le (sans oublier sudo nécessaire car demande l’édition du fichier hosts et le contrôle d’Apache) : 1 sudo ./vhosts-generator.sh Choisir un nom de domaine (celui que vous entrerez dans votre navigateur pour accéder au site en local) et un nom pour le répertoire du site. Et voilà, vous avez maintenant un environnement de développement fonctionnel et pleinement intégré à votre système. Si vous testez ce tutoriel depuis une autre version de Mac OS X, n’hésitez pas à valider la procédure dans les commentaires. Bon dev à tous
-
Voici une petite astuce pour éditer un ou plusieurs fichiers directement depuis la ligne de commande avec Sublime Text. Cette manipulation se révèle extrêmement pratique si vous avez l’habitude d’utiliser le terminal au lieu du Finder pour naviguer dans votre arborescence de fichiers (plus rapide pour l’édition de fichiers cachés ou non accessibles par défault depuis le Finder). Configuration Commencez par créer un répertoire bin dans votre home (si ça n’est pas déjà fait) : 1 mkdir ~/bin N’oubliez pas d’éditer la variable d’environnement PATH pour y ajouter le dossier bin (exemple avec ma configuration) : 1 export PATH=/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/bin:/usr/local/git/bin:~/bin On créé un lien symbolique pointant vers le binaire de Sublime Text dans le dossier bin : 1 ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" ~/bin/subl On recharge la configuration pour prendre en compte les changements (dans mon cas, la variable PATH se trouve dans mon .zshrc) : 1 source .zshrc Utilisation Exemple d’édition d’un fichier : 1 subl /etc/php.ini La liste des commandes (subl –help) : Sublime Text 2 Build 2217 Usage: subl [arguments] [files] edit the given files or: subl [arguments] [directories] open the given directories or: subl [arguments] - edit stdin Arguments: --project <project>: Load the given project --command <command>: Run the given command -n or --new-window: Open a new window -a or --add: Add folders to the current window -w or --wait: Wait for the files to be closed before returning -b or --background: Don't activate the application -s or --stay: Keep the application activated after closing the file -h or --help: Show help (this message) and exit -v or --version: Show version and exit --wait is implied if reading from stdin. Use --stay to not switch back to the terminal when a file is closed (only relevant if waiting for a file). Filenames may be given a :line or :line:column suffix to open at a specific location.
-
Si vous avez comme moi l’habitude de switcher entre plusieurs serveurs SSH, vous devez probablement avoir mis en place une petite routine pour gérer toutes ces connexions. Personnellement, j’avais pris l’habitude d’utiliser de simples alias placés dans le fichier de configuration de mon Shell, mais au fur et à mesure que le nombre de serveurs à gérer augmentait, il devenait difficile pour moi de m’y retrouver. Je me suis alors mis en quête d’un petit soft qui serait capable de gérer l’ensemble de mes connexions simplement et je suis tombé sur un script bash écrit par Errol Byrd (j’ai malheureusement perdu le lien initial) que j’ai modifié à ma sauce. SSH-Manager permet : d’ajouter/supprimer des serveurs de se connecter rapidement à un serveur en utilisant un système d’alias de garder un oeil sur la liste des serveurs disponibles de vérifier l’état des serveurs (simple ping) d’exporter sa configuration pour la retrouver sur un autre ordinateur (le script utilise un fichier nommé ssh_servers placé à la racine de votre répertoire personnel) Comme c’est un script bash, il fonctionne bien entendu sur Linux et OSX. Installation du script ssh-manager On commence par récupérer le script sur Github puis on le rend exécutable. 1 2 3 4 cd ~ wget --no-check-certificate https://raw.github.com/robinparisi/ssh-manager/master/ssh-manager.sh chmod +x ssh-manager.sh ./ssh-manager.sh Pour plus de commodité, vous pouvez créer un alias vers le script : 1 alias sshs="~/ssh-manager.sh Utilisation du script ssh-manager Ajouter un serveur : 1 sshs add <alias>:<user>:<host>:[port] Supprimer un serveur : 1 sshs del <alias> Se connecter à un serveur : 1 sshs cc <alias> Voir la liste des serveurs : 1 sshs
-
Officiellement, la fin de FeedBurner, le service de flux RSS proposé par Google n’a pas encore été annoncée mais dans les faits, nul doute que celle-ci ne saurait tarder. Maintenant, si vous utilisiez le service sur votre blog ou votre site, il va vous falloir passer à une solution alternative. En ce qui me concerne, j’ai choisi de passer à URI.LV, un service proposé par Maxime Valette dont vous connaissez probablement le site VDM. Vous y retrouverez les fonctionnalités qui ont su faire la notoriété de FeedBurner : un système de statistiques le gestion du protocole PubSubHubbub qui permet la mise à jour des flux en temps réel l’abonnement par newsletter le cache des fichiers RSS La mise en place est enfantine et contrairement à FeedBurner, ce sera l’adresse de votre flux qui apparaîtra dans le lecteur de vos abonnés (grâce à un système de redirection). Ce point est essentiel puisqu’il supprimera toute dépendance vis-a-vis du service et il vous suffira alors de supprimer la redirection pour utiliser à nouveau le système natif de votre blog. La procédure de migration se déroule en 3 étapes : inscription et création de votre flux sur URI.LV redirection du flux natif (http://votresite.fr/feed) vers celui du service URI.LV désactivation du flux sur feedburner et redirection vers le flux natif de votre blog (c’est cette étape qui vous permettra de ne pas perdre d’abonnés en cours de route) Pour ceux qui utilisent Nginx, voici un exemple de redirection à mettre en place dans votre fichier de conf : 1 2 3 if ($http_user_agent !~ (FeedValidator|uri.lv)){ rewrite ^/feed$ http://feeds.uri.lv/elliptips redirect; } Je pense que la fermeture prochaine de Feedburner sera une bonne leçon pour tous ceux qui considèrent les services du géant Google comme éternels. Ne vous méprenez pas sur mes intentions : j’utilise leurs produits au quotidien (trop à mon goût) et je les trouve très pratiques. Néanmoins, il est judicieux comme pour tout service externalisé d’être conscient de votre dépendance et des conséquences qu’un arrêt brutal de celui-ci pourrait entraîner. C’est une problématique qui revient sans fin et la chute prochaine de Reader en est l’exemple parfait : beaucoup de services étaient basés sur Reader et tandis que certains doivent s’en mordre les doigts, d’autres sauront certainement tirer profit de cette ouverture (coucou Feedly).
-
Google AdWords… C’est quoi ? Pour qui ? Comment je fais ? Si vous avez déjà entendu parler de Google AdWords au détour d’une conversation ou d’un article de blog sans vraiment y prêter attention, voici un petit article qui devrait vous éclairer sur ce qu’il faut savoir sur Google AdWords. Google AdWords, kézako? Il s’agit du programme publicitaire de Google qui permet à un annonceur d’afficher un « lien commercial » sur les pages de recherche Google quand un utilisateur semble intéressé par son service/produit. Il s’agit en fait du rectangle coloré en haut des pages de résultats Google et de la colonne située sur le côté droit quand vous faites une recherche. Un lien commercial, à la différence d’un lien naturel, est un lien pour lequel l’annonceur devra payer un certain montant pour chaque clic d’un utilisateur sur son annonce (c’est en fait le prix de la transformation de cet utilisateur en client potentiel). Ces liens sponsorisés sont censés être en relation avec la recherche effectuée dans la barre de recherche. Si vous recherchez par exemple un vol pour Madrid dans votre barre de recherche en saisissant « vol madrid », les premiers liens et ceux sur la droite seront des liens commerciaux vous suggérant en principe des vols avec pour destination Madrid. Si vous cliquez sur un lien, l’annonceur (la compagnie low-cost par exemple) devra alors payer une certaine somme à Google AdWords pour cette place privilégiée et avoir apporté un client potentiel (vous) sur son site. En quoi AdWords peut vous être utile ? Si vous venez tout juste de débuter une activité et que votre référencement naturel sur le web (SEO) n’est pas encore optimal, de la publicité sur AdWords (SEA) peut vous aider à apparaître dans les premiers résultats sur une page de recherche presque instantanément après la création de votre campagne. Le référencement naturel et le référencement payant sont en effet complètement indépendants l’un de l’autre. Etant donné l’aspect pécuniaire de la publicité sur moteur de recherche, il est important de savoir quel est l’objectif que vous souhaitez atteindre grâce à AdWords. En effet, qu’attendez-vous de cette publicité ? Souhaitez-vous gagner en popularité, vendre un produit ? Ces objectifs vous permettront par la suite de définir quels sont les indicateurs de performance qui seront intéressants pour vous (est-ce le taux de conversion ? le taux de clics ? le nombre d’impressions ?). Comment marche Google AdWords ? Pour que votre annonce apparaisse lorsqu’un internaute semble intéressé par votre produit/service, vous achetez ce qu’on appelle des mots clés. Ce sont des mots/expressions pour lesquels vous souhaiteriez apparaître quand un utilisateur les saisit dans sa barre de recherche. Plusieurs entreprises sont souvent en compétition pour ces mots clés et c’est alors qu’une « enchère » (réalisée par Google et qui se fait seule) a lieu afin de savoir à quelle place apparaîtra votre annonce pour ce mot clé. L’enchère est effectuée à chaque fois que la requête d’un utilisateur correspond à un mot clé que vous avez acheté. Votre position à la suite de cette enchère dépendra alors de votre score de qualité et de votre Coût Par Clic maximum (CPC max). Le score de qualité est une notation de 1 à 10 de votre mot clé faite par Google, le meilleur score étant 10. Cette notation s’effectue au travers de différents critères comme la présence du mot clé acheté dans votre annonce, l’organisation de votre compte AdWords, le temps de chargement de votre page de destination ou encore le taux de clics de votre annonce. Le CPC max, quant à lui, correspond au prix que vous êtes prêt à payer pour un clic sur votre annonce. Votre rang correspond donc au résultat de cette formule : Score de qualité du mot clé * CPC max Le prix n’est donc pas l’unique critère lors de cette enchère et vous pouvez donc jouer sur ceux composant votre score de qualité afin d’améliorer votre position sur la page de résultats. Quels sont les paramètres de ma campagne que je maîtrise ? Google AdWords vous permet de maîtriser certains paramètres, en voici quelques uns. Tout d’abord, vous maîtrisez la durée de votre campagne publicitaire, sa date de début mais aussi sa date de fin si vous en désirez une. Vous pouvez également choisir quand vous souhaitez diffuser votre annonce (jours de la semaine, heures de la journée, etc). Vous maîtrisez également votre budget, c’est-a-dire la somme que vous êtes prêt à dépenser quotidiennement ou encore la zone géographique et la langue des internautes que vous ciblez (est-ce la France entière ? une ville seulement ? seulement les anglophones vivant en France ? etc). Par ailleurs, concernant vos mots clés, vous pouvez maîtrisez leur option de correspondance (souvent appelée « matchtype »), c’est-a-dire le degré de « ressemblance » qui doit exister entre la requête saisie par l’utilisateur et votre mot clé acheté. Et dans tout ça… ça va me coûter combien ? Vous vous doutez bien que je ne peux pas vous dire exactement combien va vous coûter votre campagne AdWords mais que je ne peux vous donner que quelques éléments de réponse J Le centre d’aide de Google vous répond bien sûr que vous dépensez seulement ce que vous voulez (ce qui est vrai en soi car vous choisissez vous-même la somme maximale que vous êtes prêt à dépenser quotidiennement). Pour vous donner un ordre d’idées, 30€ par jour peuvent être suffisants pour un petit commerçant, si sa campagne est optimisée régulièrement (les grosses firmes pouvant dépenser jusque plusieurs centaines de milliers d’euros par jour pour leurs campagnes AdWords). Il est même probable que vous ne dépensiez pas tout ce budget! Vous pouvez cependant avoir une idée plus précise d’un budget optimal une fois que vous avez mis votre campagne en ligne. Vous pourrez en effet savoir leCPC moyen de votre mot clé (c’est-a-dire le prix moyen que vous avez payé pour un clic) après le lancement de votre campagne et les premières diffusions de votre annonce. Vous pourrez également vérifier le nombre de clics moyen pour votre mot clé par mois grâce au générateur de mots clés. Il faut savoir qu’un budget trop restreint peut vous faire perdre des clics potentiels par exemple (car votre annonce n’apparaît plus une fois votre budget quotidien épuisé). Par ailleurs, sachez que vous pouvez modifier celui-ci jusqu’à 10 fois par jour et que ce montant ne sera jamais dépassé. Si c’est si simple, pourquoi tout le monde ne le fait pas ? Justement parce que… ce n’est pas forcément si simple (et que c’est payant, certes) ! La mise en place d’une campagne AdWords n’est pas compliquée en soi mais une optimisation efficace se doit d’être quasi-quotidienne et cela peut s’avérer être chronophage. Une campagne ne peut pas être lancée et laissée en ligne, « à l’abandon » (enfin, techniquement si, mais vous risquez vraiment de jeter de l’argent par les fenêtres). Par ailleurs, tout le monde ne fait pas de la publicité avec AdWords, car il y a tout simplement un pré-requis qui n’est pas des moindres : avoir un site web ! En effet, la redirection d’un lien sponsorisé avec AdWords se fait toujours vers un site web ! Ca m’intéresse… Je démarre par où ? Si vous pensez que la publicité sur Google peut vous être bénéfique, voici les premiers pas pour la création d’un compte : Aller sur adwords.google.fr afin de créer votre compte. Une fois votre compte crée, allez dans l’onglet « Campagnes », cliquez sur « + nouvelle campagne ». Choisissez le réseau sur lequel vous souhaitez diffuser votre annonce (le réseau de recherche est le réseau à choisir pour une diffusion sur les pages de résultats Google). Pour un meilleur contrôle de vos campagnes, choisissez l’option « Toutes les fonctionnalités ». Choisissez la zone géographique que vous ciblez, l’enchère par défaut et le budget quotidien que vous souhaitez associer à cette campagne. Ajoutez éventuellement des extensions d’annonces (vous pourrez aussi le faire plus tard si vous n’en souhaitez pas dans un premier temps). Créez votre annonce, choisissez vos mots clés, mettez une enchère standard pour ceux-ci. Passez à l’étape « Facturation ». Quelques instants après la confirmation de vos informations, votre annonce devrait apparaître sur les pages de résultats Google pertinentes. Cet article n’étant qu’une petite explication du fonctionnement de Google AdWords, je vous propose de vous rendre sur le centre d’aide Google AdWords (actualisé très régulièrement) pour de plus amples informations ou encore sur la page YouTube de l’université Google AdWords.
-
J’ai pris l’habitude depuis que je fais du développement web d’utiliser phpMyAdmin pour gérer mes bases de données. C’est quand même plus pratique que la ligne de commande et ça permet de faire pas mal de choses. Récemment, un ami m’a fait découvrir Sequel Pro , un petit soft de gestion de base de données MySQL vraiment sympa. Bien que le logiciel ne propose pas toutes les fonctionnalités de phpMyAdmin, il reste une excellente alternative à celui-ci en proposant une interface agréable et possède un éditeur de requêtes assez puissant. Si vous gérez plusieurs serveurs, c’est à mon avis l’outil qu’il vous faut, car plutôt que d’installer de multiples versions de phpMyAmin, Sequel Pro vous permet d’ajouter des serveurs en favoris. En utilisant des clés SSH, vous n’aurez même plus à taper de mot de passe pour vous connecter à une base, ce qui est à mon sens assez pratique. Pour le reste, c’est pleinement compatible avec Lion et entièrement gratuit !
-
La semaine dernière, le disque dur de mon MacBook Pro s’est mis à émettre de gros « TIC », symptôme légèrement inquiétant pour un ordinateur âgé de seulement 3 mois. Après une rapide visite chez le réparateur Apple du coin, le verdict est tombé : disque dur HS… Pour la petite histoire, les « TIC » sont en théorie normaux car ils correspondent au parcage des têtes de lecture, un dispositif de sécurité dont le but est de protéger les données de votre disque dur en cas de chute de l’ordinateur. Toutefois, si le bruit se répète trop souvent tout en étant trop fort, cela signifie probablement que votre disque doit être remplacé et je vous conseille alors fortement d’effectuer une sauvegarde. Dans mon cas, j’ai profité de l’occasion pour remplacer le disque dur fraîchement installé par un SSD, car je trouve la technologie de parcage des têtes franchement foireuse sur les modèles installés de base dans les ordinateurs de la pomme (mon premier MacBook avait eu un problème similaire et il suffit de parcourir les forums pour s’en persuader). Je vous livre ici la procédure que j’ai suivie et qui me paraît être la plus simple et la plus rapide pour installer un SSD dans un MacBook Pro et y transférer ses données. Je précise, le tuto est orienté débutant, si vous êtes déjà un as de la maintenance informatique, vous pouvez ne suivre que les étapes logiciel (ou troller dans les commentaires puisque le sujet s’y prête). Pourquoi un SSD ? Ils sont bien sûr plus rapides que les disques durs traditionnels, mais aussi plus solides, car ils ne possèdent pas d’éléments mécaniques (le stockage se fait sur mémoire flash, ce qui les rapproche du fonctionnement de nos clés USB). Par conséquent, ils consomment aussi moins de courant et s’avèrent totalement silencieux. Le remplacement d’un HDD par un SSD est probablement l’intervention qui vous sera profitable en terme de performance brute. En effet, les gens ont souvent tendance à croire que la mémoire vive est fautive lorsque l’ordinateur se met à ralentir. Il suffit pourtant d’ouvrir le moniteur d’activité pour constater que la vitesse de lecture/écriture du HDD est bien souvent en cause. Pour ma part, je pense avoir réellement gagné en productivité, car il n’y a quasiment plus aucune latence à l’ouverture de mes applications (Photoshop qui était par exemple assez long à se lancer démarre maintenant en 3 secondes chrono). Quel SSD choisir ? Nous avons vu les avantages des SSD, mais il existe malheureusement un inconvénient de taille, leur prix. Toutefois, ceux-ci tendent à devenir de plus en plus abordable. Évitez de vous faire avoir par les différences de prix extrêmes que l’on observe d’un modèle à l’autre : à la façon des câbles HDMI, deux SSD de même capacité avec plusieurs dizaines d’euros d’écart auront des performances plus ou moins identiques (je parle en répercussion réelle sur votre utilisation, par exemple sur le temps de lancement d’un programme). Soyez sans crainte, les fabricants sauront vous charmer avec leurs courbes et graphiques incompréhensibles, mais au final, la différence ne sera pas ou peu perceptible à votre niveau. De ce fait, si vous optez pour un modèle de 120 GB, il vous en coûtera environ 85 euros pour un SSD de la marque Samsung. De nos jours, cette capacité peut sembler dérisoire, mais ce sont encore une fois les fabricants qui, à grands coups de Go en veux-tu en voilà, ont su changer nos habitudes. Si vous voulez un conseil, vous n’avez que peu d’intérêt à conserver l’intégrale de LOST en HD sur votre ordinateur personnel Si vous souhaitez tout de même traiter des fichiers volumineux (pour du montage vidéo par exemple), le mieux est encore d’investir dans une baie 2,5 pouces pour utiliser votre HDD en tant que disque dur externe (nous en aurons d’ailleurs besoin pour la suite). De ce fait, vous bénéficierez des performances du SDD pour vos applications et de la capacité de stockage du HDD pour vos fichiers. Il existe même des adaptateurs permettant de remplacer le lecteur optique de votre MacBook par un disque dur mais ça n’est pas l’objet de ce tuto. Ok, j’ai mon SSD, on commence par quoi ? Il existe de nombreuses façons de mettre en place un SSD dans un MacBook pro. La plus rapide selon moi est d’effectuer une copie “binaire” du HDD vers le SSD. Ainsi, il vous suffira une fois le clone effectué de remplacer le HDD par le SSD puis d’allumer votre mac. Vous retrouverez alors immédiatement votre environnement prêt à à être utilisé, comme vous l’aviez laissé auparavant. Pour ceux qui souhaite réinstaller un système neuf sur leur nouveau SSD, deux solutions s’offrent à vous : vous disposez du DVD d’installation d’OSX, dans ce cas, il vous suffit de booter dessus pour lancer l’installation après avoir installé le SSD vous avez obtenu Mountain Lion (le petit dernier d’OSX) directement avec votre MacBook et vous ne possédez donc pas le DVD d’installation. Pas de panique, Mountain Lion vient avec une partition de recovery permettant de réinstaller proprement l’OS. Ici, l’astuce est de booter sur cette partition (en maintenant option au démarrage) puis de lancer le processus de réinstallation en choisissant comme périphérique cible le SSD. Comme énoncer précédemment, nous allons dans notre cas opter pour la technique du clone que nous effectuerons avec l’excellent Carbon Copy Cloner. Ne vous inquiétez pas, le logiciel est payant, mais vous pourrez l’utiliser dans sa version complète pendant 30 jours. L’intérêt est qu’il créera pour nous la fameuse partition recovery (utile pour réparer ou réinstaller OSX) sur le SSD. Les prérequis un boitier 2,5 pouces sata un petit cruciforme de précision (un Philips #0 pour être exact). un torx 6 ou 8 (cela dépend du modèle) pour les vis du disque dur Note : les petits coffrets de tournevis contiennent souvent une grande quantité d’embouts. Si vous ne disposez pas des bons outils, je vous déconseille très fortement de forcer, auquel cas vous pourriez abimer les pas de vis et ne plus pouvoir ouvrir votre MacBook (en tout cas pas avec un outil conventionnel, je vous vois venir bande de sauvages ^^). Installation et transfert des données vers le SSD Commencez par déballer votre nouveau SSD puis placez-le dans le boitier 2,5 pouces Comme on est jamais trop prudent, nous allons commencer par vérifier le HDD ainsi que les permissions. Ouvrez l’utilitaire de disque dans Applications-> Autres.Débutez en lançant une vérification des permissions puis une vérification du disque dur. Réparez si nécessaire. Brancher le boîtier 2,5 pouces en USB à votre Mac. OS X va alors vous demander d’initialiser le disque. Faîtes le puis dans l’utilitaire de disque, cliquer sur votre SSD. Nous allons formater le disque au format Mac OS étendu. Pour cela, allez dans l’onglet effacer puis réglez comme ceci :format : Mac OS étendu (journalisé) nom : Macintosh SSD (par exemple) cliquez ensuite sur effacer. Notre SSD est maintenant prêt. Téléchargez Carbon Copy Cloner puis lancez le. Cliquez sur essai. Dans disque source, choisissez votre HDD (qui doit s’appeler Macintosh HD) puis dans disque sélectionnez Macintosh SSD. C’est tout en ce qui concerne les réglages, vous pouvez lancer la copie en cliquant sur Cloner. Étape supplémentaire pour Mountain Lion : le logiciel va alors vous avertir que le disque SSD ne dispose pas de partition de recovery. Ouvrez Disk Center, puis sélectionnez le SSD, vérifiez que le petit menu déroulant affiche bien « Mountain Lion » puis cliquez sur « Créer une partition recovery HD pour ce volume ». Une fois la partition recovery créée, le logiciel vous ramène sur l’écran de clone. Relancez le clone : l’opération devrait prendre 1 h pour environ 100 Go de données à cloner. Redémarrez votre Mac en laissant la touche option enfoncée. Vous devriez être capable de démarrer sur le SSD toujours branché en USB pour tester que tout fonctionne. Si c’est effectivement le cas, passez à la suite du tuto. Sinon, allez directement à la case commentaire, ne passez pas par les étapes suivantes, ne touchez pas 20 000 francs (non vraiment n’hésitez pas à demander de l’aide). Il va maintenant falloir éteindre votre ordinateur pour le démonter. À partir de là, vous pouvez soit imprimer la suite du tuto ou alors utiliser un autre ordinateur pour continuer à suivre. Aller hop, on coupe le Mac ! Retourner l’ordinateur.À l’aide du petit tournevis cruciforme, retirez les 10 vis présentes sur le capot. Attention, les 3 vis en haut à droite sont plus longues que les autres (sur les derniers modèles de MacBook pro, ça n’est pas le cas sur les unibody). Déposez les vis dans un petit récipient puis soulevez le capot (si vous peinez, utilisez un petit tournevis plat). Touchez un bord métallique du châssis pour implorer votre MacBook de ne pas succomber à l’opération (en vrai, cela sert à vous décharger de votre électricité statique qui en général ne fait pas bon ménage avec les composants électroniques). Localisez l’emplacement du disque dur en bas à gauche, puis encore à l’aide du cruciforme, retirez les deux vis de la barre qui maintient le HDD. Enlevez cette barre puis faites glisser doucement le disque dur vers le haut pour le sortir de son logement en prenant garde de ne pas tirer sur la nappe. Débrancher la nappe du disque dur. Il faut maintenant transférer les 4 vis (deux de chaque côté du disque) sur le SSD. C’est là que le tournevis torx entre en jeu. Une fois les vis transférées, rebranchez le disque dur sur sa nappe puis glissez-le de nouveau dans son support (en commençant par les deux trous du bas). Replacez la barre qui maintient le disque à l’aide des deux vis. Refermez le capot en prenant soin de ne pas vous tromper dans la longueur des vis. Démarrez votre Mac. That’s all Important : à lire pour la suite Vous lirez à de nombreux endroits sur la toile qu’un disque SSD a un nombre de cycles d’écriture limité et qu’il ne fonctionnera plus au-delà d’un certain temps d’utilisation. Il est vrai que la durée de vie d’un SSD est limitée, mais après tout, c’est le même postulat pour chacune des choses qui nous entoure. Donc pas de panique, contrairement à ce que vous pourrez lire sur certains forums, il ne sert à rien de compter avec angoisse les cycles d’écriture de votre précieux disque. Cependant, un SSD n’a pas le même fonctionnement qu’un disque dur mécanique et il existe donc des astuces pour améliorer sa durée de vie. Mais comme nous avons déjà suffisamment travaillé pour le moment, nous verrons la suite au prochain numéro (bon OK j’avoue, l’article n’est pas encore écris).
-
Voici comme promis (désolé pour le retard) un article regroupant quelques astuces pour optimiser le SSD de son MacBook et par la même occasion, en améliorer la durée de vie. Encore une fois, n’hésitez pas à poster en commentaire vos propres astuces que je me ferais un plaisir d’ajouter ici même Sélectionner le SSD comme disque de démarrage Comme Maxime l’a très justement fait remarquer dans les commentaires, la première manipulation consiste à sélectionner le SSD comme disque de démarrage dans Préférence système -> démarrage. Vous verrez que le changement est flagrant avec un ordinateur capable de booter et d’arriver sur le bureau en moins d’une dizaine de secondes. Installez Trim Enabler Le TRIM est une fonctionnalité intéressante dont le but est d’optimiser les performances d’accès aux disques SSD. Malheureusement, Apple active le TRIM uniquement pour les périphériques livrés de base avec leurs machines. Si vous avez installé vous même un SSD, pas de panique, il vous suffit d’installer TRIM Enabler puis d’activer la fonctionnalité de TRIM. Libérez de l’espace disque disque Les SSD de faibles capacités sont devenus relativement abordables. Bien sûr, si vous choisissez d’installer un SSD de 128GB, il vous faudra probablement bousculer un peu vos habitudes et faire de la place sur le disque. Pour cela je vous conseille vivement d’utiliser Disk Inventory X qui grâce à un rapport très visuel vous permet d’identifier immédiatement les fichiers prenant le plus d’espace. Empêcher les sauvegardes locales de Time Machine Time Machine est bien pratique, le problème, c’est qu’il a tendance à sauvegarder régulièrement des informations sur le disque local lorsque le disque de backup n’est pas disponible. Pour désactiver cette fonctionnalité, une seule option, la ligne de commande. Dans le terminal, taper la commande suivante pour désactiver les sauvegardes locales de Time Machine : 1 sudo tmutil disablelocal Pour la réactiver : 1 sudo tmutil enablelocal Désactiver le capteur de mouvement brusque Vous l’avez probablement déjà entendu sur le disque dur de votre MacBook, le capteur de chute permet de parquer les têtes du disque pour limiter la casse en cas d’impact. Vous l’aurez compris, cette technologie est complètement inutile sur un SSD qui ne contient aucun élément mécanique. Pour vérifier l’état du capteur, entrer la commande suivante dans le terminal : 1 sudo pmset -g Pour désactiver le capteur de chute (Sudden Motion Sensor ou SMS) : 1 sudo pmset -a sms 0 Le mystérieux fichier sleepimage Peut-être vous en êtes-vous rendu compte avec Disk Inventory X, il existe sur OS X un fichier dans lequel les données en RAM sont sauvegardées lorsque l’ordinateur se met en veille. L’on pourrait se dire que ce fichier n’est pas gênant, mais il provoque selon moi des accès au disque inutiles et pires, prend la place complète offerte par la RAM. Pour être plus clair : Vous possédez 8 GB de RAM, et, peu importe la quantité réelle de RAM utilisée, à partir du moment où votre ordinateur se mettra en veille, le fichier sleepimage utilisera 8GB sur le disque. Personnellement, je possède 16GB donc je vous avoue que j’ai très vite cherché une solution pour désactiver ce comportement. Pour afficher la taille de ce fichier : 1 du -h /private/var/vm/sleepimage J’ai trouvé la solution sur le topic suivant (https://discussions.apple.com/thread/4492672?start=0&tstart=0). Il faut donc feinter un peu. Je vous l’accorde, cette solution n’est pas très propre (voir pas du tout), mais c’est la seule qui a fonctionné dans mon cas : On commence par supprimer le fichier : 1 sudo rm /private/var/vm/sleepimage Puis on en créé un nouveau vide : 1 sudo touch /private/var/vm/sleepimage Si l’on s’arrête là, le système remplira automatiquement ce fichier avec les données de la RAM. On applique donc au fichier un flag qui spécifiera au système que ce fichier est “verrouillé” : 1 sudo chflags uchg /private/var/vm/sleepimage À noter que vous verrez sur de nombreux autres blogs la commande suivante : sudo pmset -a hibernatemode 0. Elle ne fonctionne pas en ce qui me concerne et n’empêche en aucun cas la création du fichier sleepimage. Utiliser un disque dur externe pour vos médias Le dernier point est un conseil. Pour économiser la place et potentiellement la durée de vie de votre SSD, un bon compromis est de ne pas l’utiliser pour y stocker vos fichiers de “passages”. Ainsi, réservez vos films HD et autres fichiers médias à votre disque dur externe. L’intérêt d’un SSD est surtout de pouvoir en faire profiter les différentes applications qui elles utilisent énormément les accès disques. Bien entendu, si vous utilisez votre Mac pour de la MAO ou du montage vidéo, ce conseil n’a pas lieu d’être (mais il vous faudra probablement investir dans un SSD de capacité honorable). Enfin, si vous pensez que le cycle limité d’écriture d’un SSD en fait un objet “fragile”, je vous conseille de lire le dossier suivant chez PC Word : Test de la durée de vie d’un SSD. Conclusion Vous trouverez ça et là d’autres optimisations qui sont à mon goût un peu tirées par les cheveux. Je ne dis pas qu’elles ne sont pas efficaces, mais selon moi, la simple activation du TRIM est déjà une bonne chose pour améliorer les performances d’accès au disque
-
InstantClick accélérer la navigation sur son site web
un sujet a posté dokkun dans Optimisation de sites
InstantClick est une petite bibliothèque JavaScript bien sympathique puisque celle-ci permet d’accélérer la navigation sur un site internet. Pour cela, InstantClick va précharger les pages lors de la navigation en se basant sur trois types d’évènements au choix : au hover sur un lien au hover sur un lien et après un délai au mousedown (un lien n’est ouvert que lorsque le bouton de la souris est relâché, on gagne donc quelques millisecondes qui participent tout de même à donner cette impression de vitesse) Si vous êtes un peu dubitatif sur le fonctionnement, je vous encourage à faire le test du clic sur la page suivante. Ainsi, on remarque que le délai écoulé entre le hover sur un lien et le clic est en général situé entre 200 et 500 ms. InstantClick va alors tirer profit de ce délai pour faire une requête en utilisant le combo pushState + Ajax (plus connu sous le nom de pjax) et propose de ce fait plusieurs avantages : les fichiers JS et CSS ne sont pas recompilés à chaque changement de page le chargement est casi imperceptible (pas de flash) la navigation n’est pas cassée (un point crucial dans l’expérience utilisateur) Maintenant, si vous choisissiez d’implémenter la lib sur votre site, je vous encourage à bien réfléchir avant au type d’évènement que vous souhaitez utiliser : L’évènement hover sur un site contenant énormément de liens pourrait entrainer trop de requêtes superflues vers le serveur (et donc surcharger celui-ci inutilement) L’évènement mousedown sera inefficace avec l’utilisation d’un trackpad. J’ai fait le test sur mon mac, le mousedown levé par un clic au trackpad génère un délai d’environ 7 ms (contre 100 ms avec le bouton physique). L’évènement hover + délai semble lui être un bon compromis, à condition que le délai soit en dessous de la barre des 100 ms (sinon le mousedown lui sera préférable) Pour finir, sachez qu’il ne vous suffira pas de charger InstantClick pour que tout se fasse comme par magie et vous aurez probablement besoin de faire quelques ajustements pour éviter le conflit avec vos autres scripts (notamment parce que l’évènement DOMContentLoaded ne sera pas déclenché par la lib).De plus, il faut être conscient que le script permettra d’accélérer la navigation et non d’améliorer les performances globales de votre site. -
Guide Debian 7 (partie 8/8) : Derniers conseils ! Cet article fait partie d’une série de billets portant sur la mise en place d’un serveur sous Debian Wheezy (sommaire du guide Debian Wheezy). Derniers conseils Nous voilà enfin arrivés au bout de ce guide portant sur l’installation d’un serveur sous Debian Wheezy (oui je sais, j’ai mis le temps ). De mon côté, je me permets quelques derniers conseils qui je l’espère pourront vous être utiles : n’hésitez pas à vous abonner à la liste de diffusion Debian pour être averti le plus rapidement possible des failles de sécurité (http://lists.debian.org/debian-security-announce/) n’installez que le nécessaire sur votre serveur, et surtout, évitez de copier des fichiers de configuration en provenance du web dans tous les sens sans véritablement comprendre leur utilité. Une configuration minimale correctement maîtrisée est préférable à une configuration non comprise. mettez en place une politique de backup simple et automatisée (je vous prépare un petit billet sur le sujet) préférez un hébergement virtuel (snapshots, déploiement rapide, flexibilité…) et surtout adapté à vos besoins ! A vous de jouer ! N’hésitez pas à participer dans les commentaires de cet article pour révéler vos trucs et astuces concernant la sécurité d’un serveur Debian (et plus généralement d’un serveur Linux). J’essaierai de tenir à jour ce billet régulièrement en y ajoutant vos retours et améliorations.
-
Guide Debian 7 (partie 7/8) : surveiller votre serveur avec Glances Introduction Nous venons de mettre en place notre serveur et il serait maintenant intéressant de pouvoir surveiller l’utilisation des différentes ressources (RAM, CPU, disque, etc…). Pour cela, nous allons utiliser Glances, un petit utilitaire développé en Python par Nicolargo qui permet de surveiller simplement un serveur en mode texte, c’est à directement depuis le terminal. Glances peut être comparé à un logiciel tel que htop en étant toutefois beaucoup plus agréable à utiliser selon moi (ne vous enflammez, ça reste de la ligne de commande ) Installation de Glances Glances étant développé en Python, nous allons passer par le gestionnaire de paquet officiel du langage, c’est à dire pip. On commence par installer les outils nécessaires : 1 aptitude install python-dev python-pip Puis on installe Glances via pip : 1 pip install glances Pour mettre à jour Glances par la suite : 1 pip install --upgrade Glances Utilisation de Glances Concernant l’utilisation, c’est très simple, il suffit de lancer la commande glances après vous être connecté via SSH : 1 glances Je pense que l’interface parle d’elle même, sachez juste que le code couleur s’interprète de la façon suivante : VERT : la statistique est “OK” BLEU : la statistique est “CAREFUL” (à surveiller) VIOLET : la statistique est “WARNING” (en alerte) ROUGE : la statistique est “CRITICAL” (critique) L’aide de Glances, accessible en tapant h : 1 2 3 4 5 6 7 8 9 10 a Classer automatiquement les procel Show/hide logs c Classer les processus par CPU% b Bytes or bits for network I/O m Classer les processus par MEM% w Suppression des alertes warning p Classer les processus par ordre ax Supression de toutes les alertes i Sort processes by I/O rate 1 Global CPU or per-CPU stats d Montrer/cacher les IO disques h Show/hide this help screen f Montrer/cacher les statistiques st View network I/O as combination n Montrer/cacher IO réseau u View cumulative network I/O s Show/hide sensors stats q Quitter Glances (ESC ou Ctrl-C marc y Show/hide hddtemp stats Vous pouvez aussi accéder à une documentation plus complète sur Github. Enfin, sachez que Glances dispose d’un client Android et d’un client web (et comme c’est Open Source, rien ne vous empêche de développer le vôtre ).
-
Guide Debian 7 (partie 6/8) : l’importance des mises à jour Introduction Il est essentiel de maintenir votre serveur à jour, dans une optique de sécurité bien sûr, mais aussi en vue d’obtenir les versions optimisées de chacun de vos logiciels. La procédure manuelle n’est pas très complexe. On commence par synchroniser la liste des paquets : 1 aptitude update Puis on lance la mise à jour : 1 aptitude dist-upgrade L’utilitaire cron-apt Cron-apt est un petit utilitaire qui va nous aider dans la gestion des mises à jour sur notre serveur. On installe le paquet cron-apt : 1 aptitude install cron-apt On édite le fichier de configuration : 1 vim /etc/cron-apt/config Il faut alors spécifier le gestionnaire de paquet à utiliser (dans mon cas aptitude) et une adresse mail de réception pour les rapports : 1 2 APTCOMMAND=/usr/bin/aptitude MAILTO="votre_mail@example.com" Dès lors, la vérification des mises à jour se fera tous les jours à 4h et vous recevrez un rapport sur votre boîte mail. Mises à jour automatiques Avec la configuration précédente, les mises à jour sont uniquement téléchargées sans être appliquées. Sachez qu’il est possible de lancer automatiquement l’installation de celles-ci. Attention : j’insiste sur le fait que cette configuration n’est pas souhaitable sur un serveur dont les services sont critiques. Il peut arriver qu’une mise à jour se passe mal et empêche le service de redémarrer (souvent à cause d’un fichier de configuration écrasé). Toutefois, si vous souhaitez ne pas trop vous prendre la tête sur votre serveur perso, vous pouvez activer cette fonctionnalité en créant un fichier contenant la commande adéquate dans le répertoire action.d : 1 touch /etc/cron-apt/action.d/5-install Puis on y insère la ligne suivante : 1 dist-upgrade -y -o APT::Get::Show-Upgraded=true Et voilà, les mises à jour se feront maintenant de manière automatique
-
Guide Debian 7 (partie 5/8) : Fail2ban, gardien de votre serveur introduction Fail2ban est un petit programme chargé de surveiller les logs de votre serveur à la recherche de comportements suspects. Pour reprendre la métaphore utilisée dans un article précédent, si votre serveur était votre maison et SSH la porte d’entrée, fail2ban serait un imposant molosse attendant tranquillement sur le pas de la porte d’éventuels voleurs (en théorie, il ne fera rien au facteur). Fail2ban se configure simplement via un système de prison et permet de bannir les IP dangereuses en ajoutant dynamiquement des règles à IPTables. Installation On commence par l’installer : 1 aptitude install fail2ban Rapide configuration pour bannir les tentatives infructueuses de connexion via SSH : 1 vim /etc/fail2ban/jail.conf On bannit après 3 tentatives de connexion pour 15 minutes (rien ne vous empêche d’être beaucoup plus sévère) : 7 maxretry = 3 Conseil : évitez d’utiliser une valeur trop haute pour la durée de bannissement. En effet, si vous vous bannissez par erreur (ce qui n’arrivera pas si vous utilisez un certificat SSH), vous devrez attendre, ce qui peut poser problème en cas d’urgence. Dans tous les cas, trouvez le juste milieu, et, si une IP est trop insistante, vous pourrez prendre les mesures nécessaires pour la bannir plus longtemps. Prise en compte des changements : 1 /etc/init.d/fail2ban restart Il est possible de vérifier les bans en surveillant les logs : 1 tail –f /var/log/fail2ban.log Revevoir des mails de fail2ban Par défaut, fail2ban utilise sendmail pour l’envoi de rapport, et ça tombe plutôt bien, puisque nous aussi. On édite de nouveau le fichier jail.conf : 1 vim /etc/fail2ban/jail.con Modification de l’adresse mail destinée à recevoir les rapport : 1 destemail = votremail@domain.com Et l’étape à ne pas oublier, on active l’action permettant l’envoi de rapport : 1 action = %(action_mwl)s Les actions disponibles : action_ => simple ban action_mw => ban et envoi de mail action_mwl => ban, envoi de mail accompagné des logs
-
Guide Debian 7 (partie 4/8) : gérer le trafic entrant et sortant avec Iptables Introduction Nous avons vu dans un article précédent comment sécuriser la porte d’entrée de notre serveur, c’est-à-dire l’accès SSH. C’est un début, mais n’oubliez pas que les fenêtres, elles, sont toujours ouvertes… Dans l’état actuel, tout le trafic devrait être autorisé en entrée et sortie sur votre serveur (j’utilise le conditionnel, car parfois, les prestataires mettent à disposition un pare-feu intermédiaire). Pour réguler ces entrées/sorties, nous allons utiliser Iptables, un logiciel qui permet de configurer les règles du pare-feu, le tout en ligne de commandes. Il faut savoir que les règles Iptables sont réinitialisées à chaque reboot du serveur. La meilleure solution consiste donc à les placer dans un petit script qui s’occupera de mettre en place vos règles au démarrage de la machine. Le script Bonne nouvelle, nul besoin de réinventer la roue, car il existe sur le net une multitude de scripts pour gérer le firewall. Nous allons utiliser le script de Nicolargo (qui au passage tient un excellent blog: http://blog.nicolargo.com/ ). J’ai forké le script pour mes propres besoins et pour être sûr que celui-ci reste accessible. On commence donc par le récupérer depuis Github : 1 2 wget --no-check-certificate https://raw.github.com/robinparisi/debian-scripts-autoinstall/master/firewall.sh mv firewall.sh /etc/init.d/firewall.sh On rend le script exécutable : 1 chmod +x /etc/init.d/firewall.sh Configuration 1 vim /etc/init.d/firewall.sh La configuration du script est rapide : # Services that the system will offer to the network TCP_SERVICES="22" # SSH UDP_SERVICES="" # Services the system will use from the network REMOTE_TCP_SERVICES="80 443 25" # web browsing REMOTE_UDP_SERVICES="53" # DNS # FTP backups # Allow backups to an external FTP FTP_BACKUPS="" Attention : le port SSH est ici le 22, mais n’oubliez pas que nous l’avons changé. Adaptez donc la conf au port choisi ! Pour l’envoi de mail, il faut ajouter le port 25 dans REMOTE_TCP_SERVICES. Il est possible de tester la configuration en appliquant les règles pendant 30 secondes pour s’assurer que tout va bien : 1 /etc/init.d/firewall.sh test Essayez de vous reconnecter au serveur avec SSH durant ce laps de temps. Si tout se passe bien, vous pouvez alors activer les règles en lançant la commande suivante : 1 /etc/init.d/firewall.sh start Si un jour vous avez besoin d’effacer les règles (tout autoriser en entrée et sortie), lancez la commande suivante : 1 /etc/init.d/firewall.sh clear Warning !!! : ne lancez jamais la commande stop sur une connexion distante, car elle aurait pour effet de couper totalement l’accès au serveur (refuser tout le trafic entrant). J’ai modifié le script pour faire en sorte que cette action requiert une confirmation de votre part, mais je préfère le redire ici Ajouter le script au démarrage 1 update-rc.d firewall.sh defaults pour l’enlever : 1 update-rc.d -f firewall.sh remove Pour aller plus loin Il faut l’avouer, ce genre de script est bien pratique, mais il ne vous dispense pas de comprendre les règles Iptables qui s’appliquent sur votre serveur. Pour rappel, vous pouvez obtenir à tout moment la liste des règles grâce à la commande suivante : 1 iptables -L Renseignez-vous sur le sujet, et surtout, évitez à tout prix de faire des copier/coller de règles en provenance d’internet que vous ne comprenez pas, car c’est en général le meilleur moyen pour se retrouver sur le pas de la porte à tambouriner comme un couillon après s’être enfermé dehors (j’en connais qui se remémorent des soirées sympathiques ). J’ai bloqué ma connexion SSH… Et voilà, on fait l’idiot dans le fond depuis le début des explications… mais maintenant, qui a l’air malin ?! Ne vous inquiétez pas, tout n’est pas perdu Deux cas peuvent se présenter : Vous avez joué avec des règles Iptables mais sans éditer le script. Dans ce cas un reboot du serveur depuis son interface suffira à rétablir les bonnes règles. Vous avez édité ou mal configuré le script puis appliqué directement les règles. Ici, il faudra passer par la console de récupération de votre prestataire. En montant la partition de votre serveur, vous serez capable d’éditer le script puis de rebooter le serveur.
-
Guide Debian 7 (partie 3/8) : envoyer des mails depuis la ligne de commande Introduction Le but de cette partie est de permettre l’envoi de mails depuis la ligne de commande. Ainsi, je ne vous parlerai pas ici de l’installation d’un serveur de mails complet, car cette étape serait bien trop longue et fastidieuse étant donné le résultat attendu. Comment ça marche ? Nous allons utiliser pour cela un client SMTP léger, dont le rôle sera d’envoyer les e-mails en passant par un relai SMTP. Dans la majorité des cas, ce relai sera mis à votre disposition par votre prestataire. Ce type d’envoi sera particulièrement utile pour les utilitaires capables de générer des rapports (fail2ban, cron-apt, …) de leur activité et de les envoyer par mail à l’administrateur du serveur, c’est à dire vous. Mon prestataire ne propose pas de relai SMTP Selon le prestataire que vous aurez retenu, vous vous retrouverez généralement face à deux cas de figure : Testons l’envoi de mail Dans un premier temps, nous allons devoir tester l’envoi de mail car il est possible que votre prestataire l’ait déjà configuré pour vous (chez certains prestataires, les fichiers de confs sont préremplis à l’installation de la distribution) : Lancer la ligne suivante en y insérant votre adresse mail (il est possible que le mail arrive dans vos spams) : 1 echo "Mail envoyé le $(date)" | mail -s "Test envoi de mail depuis $HOST" votre_adresse@exemple.com À partir d’ici, si l’envoi fonctionne, nul besoin d’aller plus loin. Dans le cas contraire, il va nous falloir installer ssmtp. Ne paniquez pas, la configuration est enfantine. Méthode ssmtp (passer par le SMTP de votre prestataire) [source : http://doc.ubuntu-fr.org/ssmtp] Nous allons commencer par installer le client ssmtp : 1 aptitude install ssmtp Pour tout envoi de mail, un système UNIX tentera de faire appel à la commande sendmail (ceci pour une raison historique). La commande sendmail peut être founie par l’utilitaire sendmail, postfix, ou dans notre cas, par ssmtp. 1 whereis sendmail Si vous obtenez un retour semblable à l’exemple ci-dessous, c’est que la commande sendmail se trouve sur votre sytème. 1 sendmail: /usr/sbin/sendmail /usr/lib/sendmail /usr/lib64/sendmail /usr/share/man/man8/sendmail.8.gz Il faut maintenant vérifier que ssmtp est l’utilitaire qui se cache derrière cette commande : 1 ls -la /usr/sbin/sendmail La réponse attendue : 1 lrwxrwxrwx 1 root root 5 20 déc. 2010 /usr/sbin/sendmail -> ssmtp* Ici, l’on voit que lors d’un appel à sendmail, le sytème appellera en fait le client ssmtp au travers d’un lien symbolique. Configuration de ssmtp 1 vim /etc/ssmtp/ssmtp.conf Afin d’être le plus clair possible, je vous place ici la configuration de mon serveur ( hébergé chez Ikoula). À vous de l’adapter avec les informations de votre prestataire. # The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com mailhub=mail.ikoula.fr # Where will the mail seem to come from? #rewriteDomain= # The full hostname hostname=ik34.ikoula.com # Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address #FromLineOverride=YES Le point à noter est que l’utilisation du SMTP de votre prestataire ne semble pas requérir d’authentification. Ne vous y trompez pas, l’envoi vous est autorisé, car effectué depuis une de leur machine, c’est pourquoi il vous serait impossible d’utiliser leur serveur SMTP depuis une machine située à l’extérieur du réseau sans vous identifier au préalable. À ce stade, testez de nouveau l’envoi de mail grâce à la commande donnée en début de ce chapitre. Si vous obtenez une erreur, passez à la section suivante. Un cas particulier, l’envoi de mail depuis root Vous l’aurez compris, l’envoi de mail jusque ici se fait en tant que root. Chez certains prestataires, il est possible que l’envoi depuis root soit refusé. Un exemple de refus : send-mail: RCPT TO:<parisi.robin@gmail.com> (554 5.7.1 <root@ik34.ikoula.com>: Sender address rejected: Access denied) Nous allons pour cela ruser en modifiant l’adresse d’expédition du compte root. 1 vim /etc/ssmtp/revaliases Je rajoute alors la ligne suivante : 1 root:homer@mail.ikoula.com Notez que l’utilisateur n’a aucunement besoin d’exister sur votre serveur. En clair, vous pouvez mettre à peu près n’importe quoi (cette donnée sera utilisée pour le champ from), cela pour la simple et bonne raison que nous n’attendons aucune réponse aux mails qui seront envoyés. De l’envoi et simplement de l’envoi, souvenez-vous ! À partir de ce point, les futurs paquets que vous installerez devraient être capables d’envoyer des mails s’ils sont lancés avec les privilèges du compte root. N’hésitez pas non plus à utiliser la commande mail au sein de vos scripts, pour être averti par exemple de la bonne exécution d’une tâche. Méthode exim4 (pas de SMTP chez votre prestataire) Dans ce cas, nous allons utiliser un compte mail qui nous permettra de gérer l’envoi. Deux solutions s’offrent à vous : En ce qui me concerne, j’ai pris l’habitude de créer une adresse dédiée à l’envoi de mail depuis le serveur du type ne-pas-repondre@mondomaine.fr. Je vous laisse vous renseigner sur la façon de créer une boîte mail avec votre domaine. Nous allons maintenant configurer exim4 pour envoyer les mails en passant par votre compte : vim /etc/exim4/update-exim4.conf.conf À adapter selon vos informations de connexion : dc_eximconfig_configtype='satellite' dc_other_hostnames='' dc_local_interfaces='127.0.0.1' dc_readhost='mon-domaine.com' dc_relay_domains='' dc_minimaldns='false' dc_relay_nets='' dc_smarthost='mail.gandi.net:587' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='true' dc_mailname_in_oh='true' dc_localdelivery='mail_spool' Dans mon cas, je passe par le SMTP de Gandi (mail.gandi.net sur le port 587). Il vous faudra donc trouver ces informations pour votre prestataire. Dans /etc/exim4/passwd.client 1 *:NOM-UTILISATEUR@DOMAINE.FR:MOT-DE-PASSE-DU-COMPTE Cette ligne nous permet de nous identifier avec notre compte auprès du serveur SMTP. Puis l’on termine en rechargeant la configuration d’exim4 : 1 update-exim4.conf Arrivé à ce point, vous devriez être capable d’envoyer des mails grâce à la commande utilisée plus haut. Limites d’envoi Il est important de comprendre que ces techniques permettent un envoi de mail “modéré” depuis la ligne de commande (ou depuis un script PHP, Python, Ruby, etc…). Au-delà d’un certain quota, le SMTP refusera de transmettre vos emails. Pour de l’envoi de masse (newsletter) et pour éviter de finir dans les spams, préférez une solution spécialisée (Mailchimp propose par exemple l’envoi de newsletter gratuitement jusqu’à 2000 inscrits). le prestataire dispose d’un STMP en interne pour l’envoi de mail depuis ses serveurs (parfois, la distribution est préconfigurée pour utiliser ce SMTP (ex: Ikoula) le prestataire ne dispose pas d’un SMTP en interne (ex: Dedibox). Dans ce cas, nous allons utiliser un autre relai SMTP utiliser un compte type gmail, outlook, etc… créer un compte mail chez votre prestataire de nom de domaine
-
Guide Debian 7 (partie 2/8) : sécuriser l’accès SSH Introduction De la même façon que vous ne laissez pas la porte ouverte en sortant de chez vous, la porte d’entrée de votre serveur, c’est-à-dire l’accès SSH, requiert un minimum de sécurisation. Modifier le mot de passe root En général, après la commande d’un serveur dédié ou virtuel, votre prestataire vous transmettra les informations de connexion par mail, en y joignant le mot de passe du compte root. Il est important de changer celui-ci immédiatement dès votre première connexion. Pour cela, lancez la commande suivante en root : 1 passwd Je ne vous ferai pas l’affront de vous expliquer pourquoi un mot de passe suffisamment complexe pour ne pas être trouvé pas une attaque de type bruteforce ou dictionnaire est très largement souhaitable Ajout d’un nouvel utilisateur Pour la suite, et pour des raisons de sécurité évidentes, nous n’utiliserons pas le compte root pour les connexions à distance. C’est pourquoi nous allons créer un groupe contenant des utilisateurs qui seront autorisés à se connecter via SSH. 1 groupadd sshusers On créé ensuite un nouvel utilisateur puis on l’ajoute au groupe qui sera autorisé à se connecter via SSH. useradd -m homer passwd homer usermod -a -G sshusers homer Configuration de ssh 1 vim /etc/ssh/sshd_config On commence par changer le port par défaut : 1 Port 2222 Note : Vous pouvez utiliser n’importe quel port, pour peu que celui-ci ne soit pas réservé par un autre service. Avoir un port non standard vous permettra d’éviter une partie des attaques automatisées que l’on rencontre chez certains prestataires . Et comme j’entends déjà les experts hurler, je précise que oui, l’obscurantisme n’est en aucun cas un gage de sécurité. Toutefois, je peux vous assurer qu’un simple changement de port sur une dedibox permet de souffler un peu au niveau des tentatives de bruteforce SSH (les IP des machines sont connues et les scripts kiddies s’en donnent à coeur joie). Pour conclure, n’oubliez jamais qu’un attaquant qui se focalisera sur votre serveur n’aura aucun mal à déterminer sur quel port tourne le daemon SSH. Le compte root n’est pas autorisé à se connecter directement depuis SSH : 1 PermitRootLogin no Seul les utilisateurs appartenant au groupe sshusers sont autorisés à se connecter (il faut ajouter cette ligne) : 1 AllowGroups sshusers on vérifie que la version 2 du protocole est utilisée : 1 Protocol 2 On redémarre le daemon SSH : 1 /etc/init.d/ssh restart À ce stade, ne surtout pas fermer l’ancienne connexion, au risque de ne plus pouvoir se reconnecter par la suite. Ce que je vous conseille, c’est d’ouvrir un nouvel onglet dans votre terminal et de tester la connexion avec le port et l’utilisateur adéquat. Authentification par un système de clé publique/clé privée L’authentification par clé publique/privée se révèle pratique dans le cas où vous souhaitez ne pas avoir à taper le mot de passe à chaque connexion. Cette technique permet de renforcer la sécurité, car elle demande à l’utilisateur d’être en possession de deux informations pour se connecter au serveur (une clé privée et le mot de passe de cette clé). Je ne détaillerai pas ici le fonctionnement du protocole, sachez juste que nous allons avoir besoin de deux choses : une clé privée, que l’on gardera précieusement sur notre ordinateur, dans le dossier .ssh de notre répertoire personnel une clé publique, que l’on enverra dans le dossier .ssh de l’utilisateur sur le serveur Pour générer tout ça, rien de plus simple, il suffit de lancer la commande suivante sur votre ordinateur . 1 ssh-keygen -t rsa Répondre aux questions : 1 2 3 Enter file in which to save the key (/Users/votre_user/.ssh/id_rsa): faire entrée Enter passphrase (empty for no passphrase): choisir un mot de passe qui protègera la clé La phrase de passe (ou passphrase) sert en fait à décrypter votre clé privée. Il est possible de ne pas en mettre, mais dans ce cas, une personne qui mettrait la main sur votre clé privée serait tout à fait apte à se connecter au serveur. Bref, il serait idiot de se priver d’une protection supplémentaire, donc choisissez un mot de passe avec soin. Il faut maintenant copier la clé publique dans le répertoire .ssh de votre utilisateur (celui avec lequel vous vous connectez sur le serveur) : Pour cela, lancer la commande suivante depuis votre ordinateur : 1 ssh <user>@<ip_du_serveur> -p <port> "echo $(cat ~/.ssh/id_rsa.pub) >> .ssh/authorized_keys" Note : il se peut que le répertoire .ssh n’existe pas dans le home de votre utilisateur sur le serveur. Il suffit de se connecter sur celui-ci et de le créer : cd mkdir .ssh touch .ssh/authorized_keys Si tout s’est bien passé, vous devriez être en mesure de vous connecter au serveur en utilisant le système de clé. À la première connexion, le mot de passe servant à décrypter la clé privée vous sera demandé. Sur OSX, le système vous proposera de l’enregistrer dans le trousseau d’accès. Sous un système Linux, il est possible qu’il en fasse de même (sinon, utilisez ssh-agent pour ne pas avoir à retaper ce mot de passe). Si vous le souhaitez, vous pouvez aussi utiliser uniquement le système de clés pour vous connecter au serveur en passant le paramètre PasswordAuthentication sur no dans le fichier /etc/ssh/sshd_config. De ce fait, seule une personne possédant la clé privée et son mot de passe sera apte à se connecter. Cependant, si jamais vous perdez cette clé, vous serez incapable de vous connecter par la suite. Faites donc attention si vous optez pour cette solution Rendez-vous demain pour la troisième partie de ce guide qui portera sur l’envoi de mail depuis votre serveur