[API OVH] Reboot d’un VPS via un script PHP

OVH possède une API qui peut s’avérer très pratique pour automatiser des tâches du manager : https://api.ovh.com

J’ai choisi d’utiliser le PHP pour ces scripts car il est déjà installé sur mes machines, je n’ai donc pas besoin de supplément.

Premier test, lister mes VPS

Je commence gentils, je fais un script qui listera simplement les VPS disponible chez OVH.

Télécharger et décompressé la dernière version de « php-ovh » et ces dépendances : https://github.com/ovh/php-ovh/releases

Ensuite on crée un tocken via cette URL : https://api.ovh.com/createToken/?GET=/vps ou on ne va autoriser que le GET sur /vps.

On va obtenir la page suivante, il va falloir conserver Application Key, Application Secret & Consumer Key pour les mettre dans le script :

OVH api keys résulstatOn va pouvoir créer le script suivant (pensez à recopier vos Application Key, Application Secret & Consumer Key dans les variables) :

Lancement du script, voici le résultat :

vks00000.ip-XX-XX-XX.eu c’est le nom de mon VPS (pour l’exemple), ça fonctionne.

Les choses sérieuses :  un reboot

Même script avec action cette fois, pour tester le reboot d’un VPS via un script.

De nouveau la création d’API  avec l’url https://api.ovh.com/createToken/?POST=/vps/vks00000.ip-XX-XX-XX.eu/reboot. Ici on va autoriser le POST sur /vps/vks00000.ip-XX-XX-XX.eu/reboot.

Au lancement on obtient le numéro de la tâche :

Et ça fait bien redémarrer le VPS…

La finalité

De temps en temps mon VPS est inaccessible. C’est très variable (1 à 2 fois par mois environ) et je ne trouve pas la cause (OVH / système  / attaque ?). La seul solution pour le faire repartir c’est un reboot via le manager OVH. En attendant de trouver la cause (je ne désespère pas) j’ai mis en place ce script sur un serveur tiers afin de déclencher un reboot si le serveur est inaccessible.

En tâche planifiée :

 

Incitateur anti-pub… Pourquoi faire ?

J’ai décidé sur mon blog d’inciter les gens à installer un anti-pub je vais vous expliquer pourquoi.

Les pieds dans le plats

Imaginons que votre prestataire de mail n’active pas l’anti-spam par défaut.  Pas sympa pour Madame Michu qui ne sait pas forcément installer un  anti-spam, tant pis elle subira… (ironie) Et les pauvres gens qui veulent vivre du spam, quelqu’un y pense ? Mais un anti-spam n’empêchera pas Monsieur Michu, s’il le souhaite, d’aller voir les promotions sur le viagra dans son dossier spam  !

Mettre un anti-spam pour ses emails c’est comme mettre un stop-pub sur sa boîte aux lettres (papier) et, par prolongement, installer un  anti-pub sur son navigateur.

Dans mon idéal les anti-pub seraient installés par défaut sur tous les navigateurs… Mais comme les principaux navigateurs sont InternetExplorer, Firefox et Chrome je doute que cela arrive un jour :

  • Mozilla Firefox est largement financé par Google. Google étant le principal annonceur sur Internet avec la régie Adsense
  • Google Chrome.. hum même problème…
  • Microsoft Internet Explorer : pas vraiment d’arguments solides mais  pas convaincu non plus… (oui c’est un procès d’intention)

Le financement du web

Pour les sites à petit revenu, blog, ect.. Aujourd’hui le coût d’un hébergement web est relativement négligeable  par rapport à beaucoup d’autres dépenses du quotidien. Pour 1€, 2€/mois et  vous avez une plateforme personnelle sans publicité. Sans compter les  hébergeurs associatifs gratuits, le RHIEN, l’auto-hébergement

Pour les sites à fort trafic des modèles économiques sont à trouver mais ils en existent déjà, en voici déjà une liste non exhaustive qui fonctionnent sans pub :

Si tout le monde bloque la pub Internet ne sera plus gratuit

Publicité != Gratuité

La publicité à un coût,  un coût non négligeable. Nous payons ce coût quand nous achetons des  produits d’entreprise qui font de la publicité. Donc de mon point de vue : « argument rejeté »

La neutralité du net

La neutralité du réseau n’a rien à voir là dedans, tant que c’est désactivable et que c’est sur le FreeBox.

Par rapport à Free, Benjamin Bayart semble être du même avis et vous l’expliquera bien mieux que mois sur le blog de FDN

Quand  à l’argument qui consiste à dire qu’avec la publicité les sites sont indépendants financièrement et donc libres. A ceux-là je répondrai en leur  demandant de regarder une très bonne émission d’arrêtsurimages traitant du sujet. Pour faire court, si vous voulez parler d’une marque/entreprise et qu’elle vous finance à travers la publicité, allez vous le faire ? La réponse est évidemment « non » c’est votre source de revenu… Est-ce que c’est ça la liberté ?

Pour toutes ces raisons : multiplions/facilitons les installations d’anti-pub sur nos ordinateurs !

Installer l’incitateur de pub WordPress

J’ai développer un plugin wordpress : adblock invit

Installer l’incitateur de pub sur mon site

Je partage avec vous le bout de script (certainement à améliorer, je ne suis pas développeur) pour que vous puissiez faire la même chose si le cœur vous en dit.

Créer un répertoire ‘testads’ accessible en http qui contiendra le fichier banners.js :

Puis copiez ce bout de code juste avant la fin de votre </body> sur toutes les pages :

3, 2, 1… Inciter !!!!

Edit : Renommage du fichier ads.js en banners.js pour coller avec la liste Fanboy’s d’adblock (merci @mart-e)

Edit2: Ajout de la licence au script (très important !) :-p

Cet article, à l’époque fessait suite à la polémique de Free avec son anti-pub installé par défaut sur la Freebox  et aux nombreuses discussions qui en ont découlé (ça aura surtout eu ce mérite.

Script de sauvegarde Mysql par base « mysql_dump.sh »

EDIT – 13/05/2013 : v0.3 du script avec prise en compte des suggestions d’améliorations de David M + Trap

EDIT – 06/12/2012 : v0.2 du script avec prise en compte des commentaires de l’article

Un énième script de sauvegarde à plat de bases Mysql sur internet. Celui-ci crée un fichier texte (.sql) par base et compresse le tout ensuite.

J’utilise ce script depuis plus de 3 ans, ça tourne bien et surtout ça dépanne bien !

Attention : ce script est à coupler avec un système de sauvegarde complet et distant…

Préparation

Il faut créer un utilisateur Mysql (appelé dump) avec des droits restreints en lecture sur toutes les bases :

Le script

Copier le contenu du script dans un fichier mysql_dump.sh puis faite un chmod +x mysql_dump.sh afin de le rendre exécutable. Ajouter ensuite ce script dans vos tâches crons pour qu’il s’exécute toutes les nuits (par exemple).

Note : les remarques sont les bienvenus…

emailPoubelle.php – script libre d’email jetable

Ayant un serveur & des noms de domaines, j’utilise pour chaque site où je m’inscrit une adresse email spécifique. Je fonctionnais jusqu’à présent en catch-all (*@mercereau.info -> MonEm@il) mais c’est quand même le meilleur moyen de prendre du SPAM. Du coup j’ai fais une mini interface en PHP pour créer des alias facilement (des emails poubelles) & j’ai évidemment publier les sources ! (A installer sans modération)

Présentation

emailPoubelle.php est donc une page qu’il faut typiquement inclure dans votre site.

Le script dépend de Postfix & de la lib pear Net_DNS2.

Installation

Installation des dépendances :

srv:~$ pear install Net_DNS2

Télécharger & décompresser les sources :

srv:~$ mkdir -p /www/emailPoubelle/postfix
srv:~$ cd /tmp
srv:~$ wget -O emailPoubelle.zip http://forge.zici.fr/p/emailpoubelle-php/source/download/master/
srv:~$ unzip emailPoubelle.zip
srv:~$ cp emailpoubelle-php-master/* /www/emailPoubelle

Configurer Postfix :

srv:~$ vi /etc/postfix/main.cf
[...]
virtual_alias_maps = hash:/www/emailPoubelle/postfix/virtual
srv:~$ touch /www/emailPoubelle/postfix/virtual
srv:~$ /usr/sbin/postmap /www/emailPoubelle/postfix/virtual
srv:~$ chown www-data /www/emailPoubelle/postfix/virtual
srv:~$ chown www-data /www/emailPoubelle/postfix/virtual.db

N’hésitez pas à me faire des retours, le modifier, le partager…. bref pleins de trucs en « er »!

La pluralité est une force !

Brider la bande passante sous linux (Traffic Shaping)

Afin de brider la bande passante d’un serveur en giga (ici on la limité à 500mbps) utilisez ce script :

#!/bin/bash
#
#  tc uses the following units when passed as a parameter.
#  kbps: Kilobytes per second
#  mbps: Megabytes per second
#  kbit: Kilobits per second
#  mbit: Megabits per second
#  bps: Bytes per second
#       Amounts of data can be specified in:
#       kb or k: Kilobytes
#       mb or m: Megabytes
#       mbit: Megabits
#       kbit: Kilobits
#  To get the byte figure from bits, divide the number by 8 bit
#

#
# Name of the traffic control command.
TC=/sbin/tc

# The network interface we're planning on limiting bandwidth.
IF=eth0             # Interface

# Download limit (in mega bits)
#DNLD=1mbit          # DOWNLOAD Limit
DNLD=500mbps          # DOWNLOAD Limit

# Upload limit (in mega bits)
#UPLD=1mbit          # UPLOAD Limit
UPLD=500mbps          # UPLOAD Limit

# IP address of the machine we are controlling
IP=0.0.0.0    # Host IP
# Masque
MAS=0

# Filter options for limiting the intended interface.
U32=&quot;$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32&quot;

start() {

# We'll use Hierarchical Token Bucket (HTB) to shape bandwidth.
# For detailed configuration options, please consult Linux man
# page.

$TC qdisc add dev $IF root handle 1: htb default 30
$TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD
$TC class add dev $IF parent 1: classid 1:2 htb rate $UPLD
$U32 match ip dst $IP/$MAS flowid 1:1
$U32 match ip src $IP/$MAS flowid 1:2

# The first line creates the root qdisc, and the next two lines
# create two child qdisc that are to be used to shape download
# and upload bandwidth.
#
# The 4th and 5th line creates the filter to match the interface.
# The 'dst' IP address is used to limit download speed, and the
# 'src' IP address is used to limit upload speed.

}

stop() {

# Stop the bandwidth shaping.
$TC qdisc del dev $IF root

}

restart() {

# Self-explanatory.
stop
sleep 1
start

}

show() {

# Display status of traffic control status.
$TC -s qdisc ls dev $IF

}

case &quot;$1&quot; in

start)

echo -n &quot;Starting bandwidth shaping: &quot;
start
echo &quot;done&quot;
;;

stop)

echo -n &quot;Stopping bandwidth shaping: &quot;
stop
echo &quot;done&quot;
;;

restart)

echo -n &quot;Restarting bandwidth shaping: &quot;
restart
echo &quot;done&quot;
;;

show)

echo &quot;Bandwidth shaping status for $IF:&quot;
show
echo &quot;&quot;
;;

*)

pwd=$(pwd)
echo &quot;Usage: tc.bash {start|stop|restart|show}&quot;
;;

esac

exit 0

Embellir ses scripts bash (avec de la couleur)

La commande “tput” permet de gérer l’adressage du curseur et les séquences de contrôle du terminal. Vous pourrez notamment faire une mise en page d’un script interactif

#### Initialisation des variables ####

#+ Mode normal
RESETCOLOR="$(tput sgr0)"
# "Surligné" (bold)
SURLIGNE=$(tput smso)
# "Non-Surligné" (offbold)
NONSURLIGNE=$(tput rmso)

# Couleurs (gras)
#+ Rouge
ROUGE="$(tput bold ; tput setaf 1)"
#+ Vert
VERT="$(tput bold ; tput setaf 2)"
#+ Jaune
JAUNE="$(tput bold ; tput setaf 3)"
#+ Bleu
BLEU="$(tput bold ; tput setaf 4)"
#+ Cyan
CYAN="$(tput bold ; tput setaf 6)"

#### Fin initialisation variables ####

# Effacement du terminal
clear

# Adressage du curseur ligne 0 colonne 2
tput cup 0 2
echo "Entrez les informations demandées dans le champ ayant le curseur."
# Adressage du curseur ligne 1 colonne 2
tput cup 1 2
echo "Appuyez sur Entrée pour passer au champ suivant."
# Adressage du curseur ligne 3 colonne 20
tput cup 3 30
echo "${SURLIGNE}Questions/Réponses${NONSURLIGNE}"

# Pré-affichage des champs
tput cup 5 5
echo -e "Nom : \c"
tput cup 7 5
echo -e "Prénom : \c"
tput cup 9 5
echo -e "Age : \c"

# Facultatif
# Pré-affichage des données
tput cup 12 2
echo -e "Votre nom est : "
tput cup 13 2
echo -e "Votre prénom est : "
tput cup 14 2
echo -e "Vous avez  ans. "

#### Interaction du script ####
# Adressage du curseur ligne 5 colonne 5
tput cup 5 5
echo -e "Nom : \c"
read nom
# Adressage du curseur ligne 7 colonne 5
tput cup 7 5
echo -e "Prénom : \c"
read prenom
# Adressage du curseur ligne 9 colonne 5
tput cup 9 5
echo -e "Age : \c"
read age

#### Affichage des réponses ####
# Adressage du curseur ligne 12 colonne 2
tput cup 12 2
echo -e "${VERT}Votre nom est : ${RESETCOLOR}"${ROUGE}$nom${RESETCOLOR}
# Adressage du curseur ligne 13 colonne 2
tput cup 13 2
echo -e "${VERT}Votre prénom est : ${RESETCOLOR}"${CYAN}$prenom${RESETCOLOR}
# Adressage du curseur ligne 14 colonne 2
tput cup 14 2
echo -e "${VERT}Vous avez ${JAUNE}$age ${VERT}ans. ${RESETCOLOR}"
# Adressage du curseur ligne 20 colonne 0
tput cup 20 0