The Troll's factory

Geekeries & pensées
-->

Archive pour février, 2010

Configurer ses propres DNS (DNS externes) pour son domaine chez 1&1

Note : Ceci marche évidemment avec n’importe quel domaine, que ce soit un .fr, .com, .coucoucestmoi. Ceci marche avec n’importe quel « type » de domaine 1&1 également : fourni avec un pack hébergement ou pack domaine ou encore autre chose.

Nous allons donc voir aujourd’hui comment configurer des DNS externes (ses propres DNS par exemple) pour son domaine 1&1

La procédure est assez simplissime, aussi je me suis permis de faire un tuto screenshots :

Allez sur le site de 1&1 : en cliquant ici par exemple.

Cliquez en haut à gauche sur le lien « Espace client » :

home page 1and1

home page 1and1

Puis connectez-vous avec votre domaine pour login (sauf si vous connaissez votre identifiant client par coeur, bravo!) et votre mot de passe :

Boîte de connexion espace client 1&1

Boîte de connexion espace client 1&1

Maintenant, cliquez sur cette icône :

icones gestion des domaines

icones gestion des domaines

Sélectionnez le domaine dont vous souhaitez changer les DNS, puis sur « DNS » en haut :

Gestion des domaines

Gestion des domaines

Maintenant cliquez sur « Modifier » :

Cliquer sur modifier

Cliquer sur modifier

Suivez les indications dans l’odre : rentrez votre DNS externe primaire (ici nttserv.fr.nf, mon DNS) puis secondaire (spit.free-h.org le DNS secondaire de mon hébergeur).

Étapes pour rentrer vos DNS

Étapes pour rentrer vos DNS

Voilà c’est terminé, validez tout le bazar et attendez que la MàJ se fasse.

Attention, les MàJ sont non seulement plus ou moins lentes selon les extensions (le .fr par exemple doit attendre la revalidation de l’AFNIC), mais en plus votre FAI peut être lent voire très lent (comme citons Darty, Orange Nord-Pas-de-Calais (DNS de Reims de mémoire), et Numéricâble département 69 (pour ceux que je connais en tout cas) ). Darty étant le pire, jusqu’à 7 jours. Vous pouvez décider de changer les DNS de votre ordinateur si vous en avez marre d’attendre.

posté par Troll dans Scripts, astuces, dév. web,Webmastering & Webmarketing avec 1 commentaire

[PHP] Effectuer un is_file() ou file_exists() sur un fichier distant (HTTP)

Dans la lignée de la précédente astuce sur les fichiers distants en voici une autre, plus courte, mais qui pourrait bien en dépanner plus d’un. En effet la fonction is_file() ou encore la fonction file_exists() sont des fonctions faites pour fonctionner sur le système de fichier local. Et elles ne fonctionneront donc pas si vous cherchez à savoir si le fichier « http://web.com/fichier.blabla » existe ou pas.

L’astuce est toute simple, elle consiste à tenter d’ouvrir le fichier, avec une fonction qui elle, prend en charge le HTTP :

function FichierDistantExiste($url) {
   if(!@fopen($url, 'r')) return false;
   else return true;
}

Ce fut bref, mais j’espère que cela vous sera utile :)

Attention par contre, sauf erreur de ma part certaines configurations PHP (notamment sur des mutualisés évidemment, mais pas tous hein) empêchent fopen() d’utiliser le HTTP. Dans ce cas, on serait bien tenté d’utiliser la fonction file_get_contents() sauf qu’en fait ce n’est qu’une espèce de raccourci pour les fonction fopen(), fgets() et fclose() les un après les autres. Donc si l’un est bridé l’autre devrait l’être aussi. À vous de tester, on ne sait jamais.

posté par Troll dans Scripts, astuces, dév. web avec 7 commentaires

[PHP] Date de dernière modification d’un fichier distant en HTTP

Cette source n’est pas de moi, cependant comme je ne suis pas sûr que tous les gens qui cherchent comment récupérer la date de dernière modification d’un fichier en utilisant le HTTP (fichier distant) arrivent facilement à trouver ce post (en anglais en plus) je vous mets la source ici.

D’ailleurs, au passage, comme je suis un gentil Troll, je vous l’ai traduite :)

// Récupérer la date de dernière modification d'un fichier distant (la fonction retourne un timestamp unix, cf. http://wiki.pcinfo-web.com/timestamp )
function RecupDateModifDistant( $uri )
{
// default
$unixtime = 0;
$fp = fopen( $uri, "r" );
if( !$fp ) {return;}

$MetaData = stream_get_meta_data( $fp );

foreach( $MetaData['wrapper_data'] as $response )
{
// Dans le cas d'une redirection vers une autre page / un autre fichier
if( substr( strtolower($response), 0, 10 ) == 'location: ' )
{
$newUri = substr( $response, 10 );
fclose( $fp );
return RecupDateModifDistant( $newUri );
}
// Dans le cas où on a bien l'en-tête "last-modified"
elseif( substr( strtolower($response), 0, 15 ) == 'last-modified: ' )
{
$unixtime = strtotime( substr($response, 15) );
break;
}
}
fclose( $fp );
return $unixtime;
}

Voilà, pour toute demande d’explication du code, les commentaires sont là pour ça, ils vous attendent pour vous faire des calins ! (gratuit !)

posté par Troll dans Non classé,Scripts, astuces, dév. web avec 1 commentaire

Lyon, la ville aux mille bourgeois…et de qualité !

Le mois prochain à Lyon s’organise la Foire de Lyon,un évènement pas tant festif que commercial, mais qui pourrait tout de même faire penser à une bonne sortie en famille ou entre amis, plutôt tourné vers les moins de 50 ans dirons-nous.

Cependant, quand on se balade sur le site Internet de la Foire de Lyon, que voit-on dans le « Bilan 2009 » ? On voit écrit le paragraphe suivant :

Des visiteurs de qualité :
– 62% des visiteurs sont de CSP moyennes et plus (contre 44% sur le Rhône).
– 60% des visiteurs ont une maison individuelle avec un jardin et 65% sont propriétaires.



Ça laisse à réfléchir sur les intentions très festives et conviviales des organisateurs : Si vous faites partie des classes moyenne basse et basse, vous n’êtes tout simplement pas un visiteur de qualité ! D’ailleurs, vous feriez mieux de ne pas venir, ça fera plus de place pour les « vrais visiteurs », ceux qui ont assez de fric à balancer dans une montagne de choses inutiles qu’ils auront la place de ranger dans le coffre de leur 4×4 polluant à souhait garé sur une place pour handicapé parce que c’était juste à côté de l’entrée de la Foire.


Si la thématique de cette année, sur le Japon, m’avait interpellé et interessé, de pareils propos ne me donnent pas envie de grand chose d’autre que de faire passer l’info sur à quel point on prend définitivement de manière absolue dans le commerce et marketing français le peuple pour un pigeon à lait (la vache à lait est encore trop intelligente pour être utilisée comme qualificatif à ce niveau là !).


Si vous aussi vous trouvez ça horriblement malvenu mais en même temps tellement représentatif de l’idéologie capitaliste et commerciale en France, je vous invite à partager cet article ou même à faire passer le lien vers la page incriminée sur Twitter / Facebook et tous les médias auxquels vous avez accès ! ;-)

D’ailleurs en passant, n’hésitez pas à visiter mon profil Twitter !

posté par Troll dans Coups de gueule avec aucun commentaire

Les tâches planifiées sous Linux (cron, crontab) : seconde approche

Bonsoir la compagnie,

Après avoir fait joujou une première fois avec les tâches planifiées sous cron gnu/linux, je vous avais promis de vous en dire plus sur les procédés et les possibilités du système de planification des tâches de GNU/Linux : cron.

Résumé de ce que vous savez déjà faire si vous avez lu la première partie sur les tâches planifiées cron :

  • Créer une tâche planifiée simple qui lance un fichier exécutable avec l’utilisateur courant (celui qui a créé le cron) à l’aide la commande crontab
  • Faire des tâches planifiées à exécution unique (planification non régulière/récurrente)
  • (Utiliser un autre éditeur pour la commande crontab -e)

Ce que je vais vous apprendre en plus dans cet article :

  • Gérer des dates complexes : Répétitions, récurrence des tâches planifiées (jokers, répétitions, sélections multiples)
  • Définition d’un fichier personnalisé de tâches planifiées
  • Définir une tâche exécutée par un utilisateur précis.
  • Éxécuter une tâche planifiée dans un répertoire particulier.
  • Éxécuter une tâche planifiée graphique.
  • Gérer les sorties des commandes exécutées par CRON : logs, mails, etc.

Je vous donnerai également quelques filons pour l’utilisation de PHP avec CRON.


Retour sur la planification des tâches : la syntaxe des dates avancées avec CRON.

Je ne refais pas les explications sur les dates simples dans CRON, c’est le sujet de la première approche (dont vous avez les liens au début de cet article). Nous allons voir comment créer une tâche récurrente, à l’aide des jokers, répétitions et sélections multiples.


Le joker : *

Comme dans beaucoup d’applications informatique, le joker chez Cron est l’étoile « * ». Ainsi, si vous remplacez un quelconque paramètre d’une date par une étoile, cela signifie pour cron « quelque-soit la valeur de ce paramètre ».

Exemple : Quelque-soit le jour, je veux que à 7h05 tu dises bonjour, durant tout le mois de février :

05 07 * 02 * echo 'Hello World !'

Ici nous avons remplacé le numéro du jour dans le mois, ainsi que le jour de la semaine (qui est également susceptible de varier !) par le joker « * », ainsi, quelque-soit les valeurs de ces paramètres, si les autres paramètres (heure, minute, mois) sont vérifiés, CRON dira bonjour au monde.


La répétition : /

Le joker permet de spécifier, au maximum, une répétition toutes les unités de temps d’un paramètre précis. En effet, si je mets un joker pour l’heure, alors cela sera exécuté toutes les une heure, puisque cela sera « quelque-soit l’heure ». Ainsi, avec les jokers, vous pouvez répéter au mieux : tous les jours, toutes les heures, toutes les minutes, tous les lundis, tous les mois… Bref, pas terrible comme flexibilité tout de même. C’est à cela que sert la répétition, elle vous permet de dire tous les combien de variation d’un paramètre vous voulez que cela se répète. Une variation d’un paramètre, c’est +1 minutes, +1 heure, +1 jour, etc. …

L’opérateur de répétition s’utilise comme suit : valeur_param/intervalle_de_repetition

Ainsi, si je veux que toutes les 15 minutes, une action se répète, quelque-soit la date :

*/15 * * * * /usr/bin/monaction

On utilise ici également le joker, puisque l’action se répète quelque-soit la minute, l’heure, ou la date…




Les intervalles et les sélections multiples

Vous pouvez également définir plusieurs valeurs d’un paramètre pour lesquelles la tâche sera exécutée. On procède soit en donnant un intervalle de valeurs, soit une liste de valeurs.

Opérateur d’intervalle : -

Utilisation : borne1-borne2 ou borne1 et borne2 sont les bornes de l’intervalle ( [borne1 ; borne2] ) et incluses.

Exemple : La précédente action se répète toutes les 15 minutes, du 1er au 10 du mois

*/15 * 1-10 * * /usr/bin/monaction

Opérateur de valeurs multiples : ,

Utilisation : valeur1, valeur2, valeur3…

Exemple : La précédente action se répète toutes les 15 minutes mais seulement entre 02h et 03h puis entre 05h et 06h

*/15 2,5 * * * /usr/bin/monaction



Définir une fichier cron personnalisé : Cron en mode admin

Jusqu’à présent, vous avez utilisé la commande crontab afin de modifier votre fichier cron et d’ajouter ou de supprimer des tâches.

En réalité vous n’avez utilisé que le côté « utilisateur » de cron. La suite n’est ouverte qu’à un accès root, autrement dit l’administateur de la machine, car elle permet notamment de décider de sous quel utilisateur vont être exécutées les tâches, ce que nous verrons en même temps.

Si ce mode d’utilisation de cron n’est réservé qu’à l’administateur, c’est pour plusieurs raisons :

  1. Il va permettre, comme je l’ai dit, de choisir l’utilisateur qui exécute la commande
  2. Le répertoire dans lequel nous allons créer le fichier appartient à root
  3. Seul root peut demander à cron de recharger les fichiers de configuration, or nous en aurons besoin car comme nous allons éditer de simples fichiers, la commande crontab ne sera pas là pour, à la fin de l’édition du fichier, dire à cron « Hey hey, ouhou, on a modifié le fichier là, viens y jeter un coup d’oeil » et par défaut cron ne verra donc pas vos modifs sans reload, et donc sans droits d’admin.




Créer votre fichier de tâches planifiées : le répertoire /etc/cron.d/

Vous êtes donc maintenant loggé en root, ou, si vous n’avez pas le su sur votre machine, vous exécuterez le reste des commandes avec un « sudo » devant.

Les fichiers de tâches planifiées sont placés dans le répertoire /etc/cron.d/, qui appartient à root.

Créons-y un fichier :

vim /etc/cron.d/monfichiercron

Voilà, tout le travail est fait… ou presque. Dans ce fichier, vous pouvez placer des tâches planifiées exactement de la même façon qu’avec la commande crontab à la différence prêt… qu’il faut spécifier l’utilisateur d’exécution !

Cela donne :

mm HH JJ MM joursemaine utilisateur /chemin/commande

Exemple, je suis l’utilisateur Troll, je veux que l’utilisateur Toto fasse le ménage dans son dossier personnel chaque semaine (vision geek du Range ta chambre ! maternel/paternel), on dira qu’on est un peu radical, si le dimanche il n’a pas vidé son dossier perso (il est censé le faire le samedi) tant pis : tout poubelle !
Note : A NE PAS TESTER CHEZ VOUS ! Vous risqueriez d’avoir de sérieux ennui ^^

01 00 * * sun toto rm -fR /home/toto/*

Bien sûr l’utilisateur peut aussi être root… But, be careful !

Ensuite, une fois que vous avez sauvegardé votre fichier, il faut dire à cron de le relire pour l’intégrer :

(encore une commande à faire en root, si vous avez bien lu le début de ce paragraphe !)
/etc/init.d/crond reload

Cron a bien rechargé s’il dit ça normalement :

Reloading crond: [ OK ]




Les autres fichiers préconfigurés de cron :

Cron a également des dossiers préconfigurés, dans lesquels il vous suffit de mettre un script (ou un lien symbolique, solution la plus souvent utilisée) exécutable.

Ces dossiers sont les suivants :

  • /etc/crond.daily : exécution quotidienne (chaque jour à 4h02)
  • /etc/crond.hourly : exécution chaque heure (chaque heure + 1 minute)
  • /etc/crond.weekly : exécution hebdomadaire (le dimanche à 4h22)
  • /etc/crond.monthly : exécution mensuelle (le 1er du mois à 4h42)

Comme je suis gentil, je vous donne même les commandes :

Création d’un script exécutable dans un dossier :
(en root encore et toujours)
vim /mon/chemin/de/fichier && chmod +x /mon/chemin/de/fichier

Création d’un lien symbolique dans /etc/crond.daily (par exemple) pointant vers /mon/chemin/de/fichier :

ln -s /mon/chemin/de/fichier /etc/crond.daily/monscript && chmod +x /etc/crond.daily/monscript

L’avantage du lien symbolique c’est que vous pouvez mettre votre script dans un dossier où vous le retrouvez et vous pouvez placer un lien dans plusieurs dossiers /etc/crond.XXX/ sans avoir à modifier tous les fichiers quand vous modifiez le script (principe du lien symbolique).




Éxécuter des tâches planifiées dans un répertoire particlier

Il peut s’avérer que vous ayiez besoin d’exécuter une commande qui va chercher des fichiers ou autres dans son répertoire courant et qui sera donc perdue si vous la lancez avec cron de la manière /chemin/commande

Pour cela, utilisez tout simplement la commande cd :

03 01 * * * tutu cd /home/tutu/scripts/ && ./macommande




Éxécution d’une tâche planifiée graphique

La console, y’a rien de mieux, ça plante pas, ça vous cache rien… Mais c’est pas très esthétique. Puis si vous voulez par exemple lancer Amarok pour vous reveiller en musique, Amarok va avoir besoin d’une interface graphique (sauf si vous connaissez une interface ligne de commande pour amarok, auquel cas je veux bien que vous partagiez l’info avec moi !).

Pour cela, procédez comme suit : placez DISPLAY=:0 après le jour de la semaine, ou après le nom d’utilisateur quand celui-ci est spécifié.

Si vous utilisez une commande composée, du type :

/chemin/premierecommande && /chemin/deuxiemecommande

(ce qui est notamment le cas lorsque vous exécutez dans un répertoire particulier) alors vous devez mettre le DISPLAY=:0 juste avant la commande qui aura besoin de l’affichage.

Gérer les sorties des commandes exécutées par CRON : logs, mails, etc.

Par défaut, notamment lors de la définition d’une tâche planifiée avec crontab -e, si votre commande génère une sortie vous devez – en théorie (désactivé sur certaines distrib’) – recevoir un « mail » ( dans /var/spool/votrelogin ) avec la sortie générée.

Ce n’est pas vraiment un mode très pratique pour logger et retrouver les sorties de vos tâches planifiées préférées.

Je vais donc vous montrer comment enregistrer dans un fichier log la sortie de vos tâches planifiées.

En fait, cela revient au même que pour enregistrer dans un fichier log une commande console standard. Cela revient à faire comme ceci :

Enregistrer tout dans monfichier.log (sortie normale + erreurs)
/chemin/macomandequigenereunesortie > monfichier.log 2>&1

Enregistrer seulement les erreurs dans monfichier.log :

/chemin/macomandequigenereunesortie > /dev/null 2> monfichier.log

Ne rien enregistrer :

/chemin/macomandequigenereunesortie > /dev/null 2>&1

Attention, tel que c’est présenté ici, chaque nouvelle exécution remplace le contenu de monfichier.log

Si vous voulez logger sur plus d’un seul lancement, vous devez créer le fichier monfichier.log avant (ce qui n’était pas nécessaire précédemment) et remplacer systématiquement dans les précédentes commandes, le « > » par « >> » (enfin presque, pas tous, regardez ci-dessous).

Ce qui donne :

/chemin/macomandequigenereunesortie >> monfichier.log 2>&1
/chemin/macomandequigenereunesortie > /dev/null 2>> monfichier.log
/chemin/macomandequigenereunesortie > /dev/null 2>&1


Annexes : Utilisation de PHP avec CRON

Pour lancer une tâche écrite en PHP avec cron, saisissez une tâche de la manière suivante :

mm HH JJ MM joursemaine [user] /usr/bin/php -f /chemin/de/fichier.php

Ou, ce qui est conseillé avec PHP, avec exécution dans un repértoire particulier :

mm HH JJ MM joursemaine [user] cd /chemin/de/ && /usr/bin/php -f ./fichier.php

Bien évidemment, vous pouvez logger dans un .log avec les .php comme avec n’importe quelle autre commande.

Voilà, c’est terminé : des remarques, des erreurs à signaler, des questions -> Les commentaires sont là pour ça ! J’espère avoir été clair et que cet article sera utile au plus grand nombre :-)

posté par Troll dans Administration serveur,Scripts, astuces, dév. web avec 22 commentaires

Faire fonctionner le tapping (ou tap-click, clic tappé) de votre TouchPad sous Fedora 11 (FC11)

Par défaut sous Fedora 11, le tapping n’est pas activé pour votre touchpad, notamment sur les Dell.

La manipulation à effectuer pour le faire fonctionner est en réalité très simple même si elle n’est pas facile à trouver.

Tout d’abord, ouvrez une console et tapez :

 gpointing-device-settings



Éditez à votre convenance les options pour le TouchPad, notamment pensez à activer le tapping.

Ensuite, cliquez sur « OK » en bas à droite. Si vous êtes sous GNOME, cela devrait maintenant fonctionner après redémarrage. Si vous êtes sous KDE (mais vous pouvez tenter sous Gnome aussi si la précédente manip’ n’a pas suffit), tapez ceci en console :

sudo cp -v /usr/share/hal/fdi/policy/20thirdparty/10-synaptics.fdi /etc/hal/fdi/policy/



Ensuite, éditez le fichier /etc/hal/fdi/10-synaptics.fdi avec l’éditeur de votre choix (en root), et décommentez les lignes suivantes :


<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">3</merge>
<merge key="input.x11_options.TapButton3" type="string">2</merge>

Redémarrez, cela devrait maintenant fonctionner :-)

Si vous avez un quelconque problème avec la manip’, n’hésitez pas à laisser un commentaire :-)

posté par Troll dans Non classé avec 1 commentaire