Le Blog d'un DSI

Ce blog présente les trucs et astuces que j'ai mis en pratique sur la gestion quotidienne de l'informatique d'une PME éditrice de portails web à haute disponibilité.

leblogdundsi.lesprost.fr | Détails | Hits : 0 | Voter >> Nombre de votes : 0

  • Flux RSS Flux RSS "Le Blog d'un DSI" : Flux RSS

  • Activer les logs de requêtes MySQL à la volée - 01-02-2012

    Voici une astuce pour activer/désactiver les logs de requêtes (general log) de MySQL sans avoir à redémarrer le service.

    1. Préparation du serveur

    Il va quand même falloir redémarrer le service au moins une fois pour activer un paramètres par défaut : l'emplacement du fichier de log.

    Ceci est facultatif mais nous évitera d'avoir à le respécifier à chaque fois.

    Pour ce faire, il suffit d'éditer le fichier my.ini (ou my.cnf sous Linux) et d'ajouter/modifier la directive suivante :

    general_log_file  = E:/MySQL/Logs/query.log

    il faut donc logiquement redémarrer le service pour prendre en compte ce paramètre.

    2. Activation du log à la volée

    Dans une invite de commande MySQL ou tout autre outil capable d'exécuter des requêtes mysql avec un utilisateur ayant des droits d'admin, il faut lancer la commande suivante :

    SET GLOBAL general_log = 'ON';

    Les logs sont activés et ajoutés au fichier défini ci-dessus.

    3. sactivation des logs

    Il suffit de repasser le paramètre à OFF :

    SET GLOBAL general_log = 'OFF';

    Le fichier de log est alors déverrouillé par MySQL et nous pouvons le manipuler comme nous le souhaitons (déplacement, suppression,...)


  • Renvoyer le contenu d'une page web sur la sortie console avec Wget - 18-01-2012

    Wget est un outil très pratique pour récupérer le contenu d'une page web (exécution de script ou récupération du contenu HTML pour tests).

    Par défaut, il crée un fichier dans le dossier courant mais dans le cas d'exécution d'un script, il peut être plus intéressant d'avoir le résultat directement sur la console.

    Ceci est facilement faisable avec la commande suivante :

    wget -qO- <url>
    

  • Sauvegarde mirroir via SFTP avec WinSCP - 02-01-2012

    Je cherchais depuis quelques temps une solution, libre de préférence ou tout du moins gratuite, pour effectuer la sauvegarde en ligne de mon dossier de données perso.

    J'ai environ 25 go de données en constante augmentation et ue ligne ADSL limitée, il me fallait donc impérativement une solution qui puisse faire une sauvegarde différentielle, comme le fait très bien Robocopy en local, le tout devant tourner sous Windows.

    J'ai donc lancé quelques tests sur plusieurs utilitaires pouvant synchroniser des fichiers via FTP :

    • Syncback SE : fonctionne plutôt bien pour faire de la sauvegarde vers FTP, jusqu'au jour je me suis aperçu qu'il modifiait en local les dates des fichiers pour permettre de retrouver les fichiers modifiés => Exit SyncBack
    • Cobian backup : je n'ai pas réussi à faire du différentiel.

    j'ai ensuite testé les solutions de backup en ligne, mais je n'ai pas non plus trouvé mon bonheur (trop cher, trop lent ou trop limité,...)

    Voyant que le FTP risquait de me limiter, je me suis ensuite tourné vers les solutions utilisant le SFTP ( je disposais déjà chez OVH d'un hébergement mutualisé de 100 Go accessible par SFTP pour 4 ou 5 €/mois).

    J'ai testé RSync pour Windows. Ca fonctionnait bien mais ce n'était pas très stable et en cas de coupure de la connexion, il fallait reprendre de zero.

    J'ai alors trouvé la solution au travers de l'utilitaire Open Source WinSCP que j'utilisais déjà pour accéder à des machines Linux. Un petit script dessus et c'était bon.

    Voyons voir comment procéder :

    1/ Installation

    Rien de plus simple :

    1. Créez un  dossier WinSCP quelque part sur votre disque.
    2. Dans ce dossier, créez les sous-dossiers suivants :
      • bin
      • inc
      • log
    3. Téléchargez la version portable de WinSCP 5 (la 4 gère mal les accents dans les noms de fichier) : http://winscp.net/eng/download.php.
    4. Décompressez l'archive et copiez le fichier winscp.exe dans le dossier bin.

    2/ Paramétrage

    1. Lancez le fichier wiscp.exe et configurez une nouvelle connexion (il faut bien enregistrer le mot de passe).
    2. Donnez à cette configuration un nom explicite et sans caractères spéciaux :

       
    3. Configurez le script WinSCP pour le backup :
      Créez un fichier backup.script dans le dossier inc et insérez le contenu suivant (en l'adaptant à vos chemins):

    option batch on
    option confirm off
    
    open <nom de la session précedemment créée>
    
    option transfer binary
    
    synchronize remote <D:\dossier-local> </home/fred/dossier-distant> -delete -criteria=size
    
    close
    exit
    1. Créez à la racine du dossier le fichier backup.bat et insérez le contenu suivant :
    @echo off
    del log\synchro.log
    bin\winscp.exe /console /script=inc\backup.script /log=log\backup.log

    3/ Lancement de la sauvegarde

    Il suffit de lancer le fichier backup.bat.

    En cas de problème, consultez le fichier log/backup.log.

    La synchro initiale va être très longue, mais les suivantes ne prendront en compte que les fichiers modifiés depuis le dernier lancement et sera beaucou plus rapide.

    WinSCP, en cas de coupure de connexion reprend là où il s'était arrêté.

     

    Conclusion

    Cette solution fonctionne tellement bien chez moi que je l'utilise désormais au travail pour faire des backup distants sur des serveurs qui comportent plusieurs millions de fichiers répartis sur plus de 150 Go (il a fallu plus d'une semaine pour la synchro initiale entre les 2 hébergeurs, mais maintenant quelques heures suffisent toutes les semaines).


  • Limiter la bande passante sur un serveur Linux - 18-10-2011

    Il existe pour limiter la bande passante sur une machine linux un outil très pratique : WonderShaper

    Il s'installe très simplement sur Ubuntu :

    apt-get install wondershaper
    

    Et s'utilise tout aussi facilement :

    wondershaper <interface réseau> <downspeed> <upspeed>

    (les vitesses de connexion sont en kbits)

    Et pour le désactiver :

    wondershaper clear <interface réseau>

  • PHP sous Windows : envoyer des mails via un serveur SMTP avec authentification - 07-10-2011

    Par défaut, sous Windows on peut utiliser le paramètre SMTP du fichier php.ini pour envoyer des mails à l'aide de la fonction mail(). Le seul inconvéniant est que l'on ne peut pas utiliser un serveur SMTP qui nécessite une authentification.

    On peut utiliser des classes php telles que phpMailer, mais quand on a juste besoin d'une simple fonction mail, c'est peu pratique. La solution consiste à utiliser sendmail sous Windows.

    Si, si, c'est possible, la preuve !

    Le paramétrage ci-dessous a été testé sur une distrib XAMPP mais je pense qu'elle doit fonctionner quelque soit la solution retenue.

    Nous considérons que le dossier d'installation de XAMPP se trouve dans C:\xampplite. Aadaptez les chemins au besoin.

    1/ Installation de sendmail sous Windows

    Sendmail est déjà livré avec Xampp (dans le dossier C:\xampplite\sendmail) mais ne fonctionne pas correctement.

    Nous allons donc télécharger la dernière version et remplacer la version actuelle dans C:\xampplite\sendmail

    2/ Paramétrage de php.ini

    Le fichier php.ini se trouve dans le dossier C:\xampplite\php

    Rendez-vous dans la section [mail function] et modifiez-la comme suit :

    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    ;SMTP = localhost
    
    ; http://php.net/smtp-port
    ;smtp_port = 25
    
    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = frederic@lesprost.fr
    
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    sendmail_path = "\"C:\xampplite\sendmail\sendmail.exe\" -t"
    
    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =
    
    ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
    mail.add_x_header = Off
    
    ; Log all mail() calls including the full path of the script, line #, to address and headers
    ;mail.log = "C:\xampplite\apache\logs\php_mail.log"

    (Pensez à adapter le chemin de sendmail)

    3/ Paramétrage de sendmail.ini

    Le fichier sendmail.ini se trouve dans le dossier C:\xampplite\sendmail

    Il faut éditer les paramètres suivants :

    [sendmail]
    
    smtp_server=<adresse de votre serveur SMTP>
    smtp_port=<port du serveur SMTP (25 par défaut)>
    
    auth_username=<login de connexion>
    auth_password=<mot de passe de connexion>
    

    Vous pouvez en profiter pour jeter un oeil aux autres paramètres qui pourront vous être utiles (expéditeur par défaut, activation des logs,...)

    4/ Faisons un test

    N'oubliez pas de redémarrer Apache pour prendre en compte les changements.

    Ensuite, créez un script mail.php dans votre dossier source et lancez-le:

    <?
    $to = "<email destinataire>";
    $subject = "Essai de mail";
    $body = "Coucou";
    $headers = "From: <email expéditeur>" . "\r\n";
    if (mail($to, $subject, $body, $headers)) {
        echo ("Message envoyé !");
    } else {
        echo ("Message non envoyé...");
    }
    ?>


  • Suppression de vieux fichiers - 16-08-2011

    Voici un script BATCH Windows qui permet de paramétrer une liste de dossiers dans lesquels il est nécessaire de faire du ménage (anciennes copies, fichiers de logs,...)

    le script en question :

    call :Purge 15 "C:\logs"
    call :Purge 10 "F:\fichiers2\temp"
    
    goto :eof
    
    :Purge
    SET jours=%1
    SET dossier=%2
    
    forfiles.exe /p %dossier% /s /m *.* /d -%jours% /c "cmd /c del /q @path"

    Il suffit de dupliquer l'appel à la fonction (call :Purge...) en spécifiant le nombre de jours à conserver et le fichier à purger.

    L'utilitaire forfiles.exe est très intéressant car il permet de sélectionner une liste de fichiers selon un critère temporel (attribut /d,  soit avec un nombre de jours, soit une date fixe) et d'exécuter dessus la commande de sont choix (attribut /c).


  • Supprimer à distance un utilisateur du groupe Admin local - 28-07-2011

    Voici comment supprimer à distance et en une ligne un utilisateur du groupe Administrateur local d'une machine XP, Vista :

    1/ Récupérez psexec sur le site le Microsoft / Sysinternals

    2/ Lancer la commande suivante :

    psexec.exe \\<machine distante> -u <domaine>\<admin> -p <mdp admin> Net localgroup "Administrateurs" <utilisateur à supprimer> /delete


  |  Retour Haut