leblogdundsi.lesprost.fr | Détails | Hits : 0 | Voter >> Nombre de votes : 0
Catégorie : Accueil > Actualités, blogs
|
|||||||
-
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. Dé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 où 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 là dessus et c'était bon.
Voyons voir comment procéder :
1/ Installation
Rien de plus simple :
- Créez un dossier WinSCP quelque part sur votre disque.
-
Dans ce dossier, créez les sous-dossiers suivants :
- bin
- inc
- log
- 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.
- Décompressez l'archive et copiez le fichier winscp.exe dans le dossier bin.
2/ Paramétrage
- Lancez le fichier wiscp.exe et configurez une nouvelle connexion (il faut bien enregistrer le mot de passe).
-
Donnez à cette configuration un nom explicite et sans caractères spéciaux :

-
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
- 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 wondershaperEt 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é..."); } ?>
-
Compter le nombre de fichiers et dossiers dans un dossier sous Linux - 02-09-2011
C'est tout simple :
Nombre de fichiers :
find /home/fred -type f | wc -l
Nombre de dossiers :
find /home/fred -type d | wc -l
-
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


