Twitter Facebook RSS

Accueil > Développement

03
février

Faire du SSH via PHP

Dans le cadre d'un développement Web, vous avez besoin de vous connecter et de réaliser certaines actions sur un autre serveur. L'ennui, c'est que ce serveur est accessible uniquement en SSH.

Pas de problème, on peut faire du SSH en PHP ! Avec la librairie PHP "SSH2", on va se connecter à un serveur, envoyer des commandes SSH, et même afficher ce qu'il nous renvoie ! Installez 3 paquets, et relancez le serveur Apache :

apt-get install libssh2-1 libssh2-1-dev libssh2-php
/etc/init.d/apache2 reload

Pour tester que SSH2 est bien installé, faites un php -m |grep ssh2. Si la console vous affiche bien "SSH2", c'est que la librairie est bien installée !

Le code PHP :

Voici une fonction PHP vous permettant d'envoyer une commande SSH :

function ssh($host, $login, $mdp, $command)
{
    if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
    if(!($con = ssh2_connect($host, 22))){
        echo "échec connexion\n";
    } else {
        if(!ssh2_auth_password($con, $login, $mdp)) {
            echo "échec authentification\n";
        } else {
            // execute a command
            if (!($stream = ssh2_exec($con, $command ))) {
                echo "échec de l'exécution de la commande\n";
            } else {
                // collect returning data from command
                stream_set_blocking($stream, true);
                $data = "";
                while ($buf = fread($stream,4096)) {
                    $data .= $buf;
                }
                fclose($stream);
                return $data;
            }
        }
    }
}

Elle s'utilise comme cela :

$command = 'ls -alh /tmp';
$ret = ssh('monserveur', 'utilisateur', 'monmotdepassesecurise', $command);
echo '<pre>' . $ret . '</pre>';

Utilisez la variable $ret pour afficher ce que renvoie la commande SSH :) .

Si vous souhaitez passer plusieurs commandes dans la même instance SSH, utilisez le ";" comme séparateur. Les commandes seront alors exécutées à la suite :

ls -alh /tmp/; touch /tmp/truc

12
septembre

ToDo, une Todo list made home

Peu d'articles en ce moment, j'ai un peu moins de temps perso. En parallèle, je bosse en ce moment sur un gestionnaire de ToDo List, un truc perso... Les fonctionnalités seront les suivantes :

Le tout, utilisable uniquement en console bien sûr. Pour l'instant, j'ai commencé en Bash, mais j'ai bien envie de le porter en Python, ça serait l'occasion de me remettre à cet excellent langage. Ce script sera sous licence libre, et je le partagerai avec vous sur ce blog. Cela ne vous apportera peut-être rien, mais pour ma part, je vois clairement l'utilisé que je peux en avoir, avec tout ce que je note sur mes Post-it !

A bientôt :) .

11
août

Crunchbang : automatiser le dual-screen

J'utilise mon ordinateur portable (sous Crunchbang) avec un écran externe branché en VGA. Or, le matin quand j'allume mon PC portable, les 2 écrans (portable + VGA) sont clonés. Voici un petit script vous permettant de configurer vos écrans automatiquement.

Avant d'utiliser ce script, commencez par identifier vos moniteurs grâce à la commande xrandr -q

11:24 [email protected] ~ % xrandr -q
Screen 0: minimum 320 x 200, current 2720 x 1024, maximum 8192 x 8192
VGA1 connected 1280x1024+1440+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0*+   75.0  
   1152x864       75.0  
   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  
LVDS1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
   1440x900       60.0*+   59.9  
   1360x768       59.8     60.0  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
DP1 disconnected (normal left inverted right x axis y axis)

Ici, j'ai 2 écrans connectés : VGA1, qui est l'écran externe branché en VGA, et LVDS1, qui correspond à l'écran du PC portable. Regardons maintenant le script :

#!/bin/bash 
# Dual Screen
# [email protected]

# Définition du dualscreen
xrandr --output LVDS1 --pos 0x0 --mode 1440x900 --rate 60.0;   
xrandr --output VGA1 --pos 1440x0 --mode 1280x1024 --rate 60.0;

# Restauration du wall
nitrogen --restore

Voilà, utilisez ces 2 commandes pour configurer vos 2 écrans. Enfin, la commande "nitrogen --restore" permet de restaurer le fond d'écran à la taille par défaut du moniteur...

14
juin

OpenID : installation de SimpleID

OpenID est un système d’authentification libre et décentralisé d’authentification unique WebSSO. Il permet d’obtenir rapidement une identité numérique, de la changer, ou de révoquer cette identité ́tout aussi rapidement.

L’architecture étant décentralisée, vous ne dépendez pas que d’un seul fournisseur de service : vous pouvez en changer régulièrement et facilement, ou bien héberger vous-même votre identité ́numérique.

SimpleID

J'ai retenu SimpleID, qui est un script PHP. Il requiert l'installation d'un serveur Apache avec PHP 4 ou 5.

Téléchargez SimpleID à cette adresse, et décompressez-le dans /var/www/simpleid/.

Ensuite, faites les chmod suivants :

$ chmod 777 /var/www/simpleid/cache/
$ chmod 777 /var/www/simpleid/store/
$ chmod 777 /var/www/simpleid/identities/

Je vais considérer que votre Apache est dédié à SimpleID, donc nous allons modifier la configuration du 000-default. Éditez le fichier /etc/apache2/sites-enabled/000-default et modifiez les chemins de façon à avoir ce genre de fichier :

DocumentRoot /var/www/simpleid/www
<Directory /var/www/simpleid/www/>
        Options FollowSymLinks
        AllowOverride All
</Directory>

Maintenant, on va créer le fichier de configuration. On va renommer le fichier existant :

$ mv /var/www/simpleid/www/config.inc.dist /var/www/simpleid/www/config.inc

Ensuite, éditez ce fichier et modifiez les informations suivantes :

Création de votre premier utilisateur

SimpleID stocke ses identités dans des fichiers dans /var/simpleid/identities/. Nous allons créer le premier utilisateur : pour cela, créez un fichier nommé dupont.identity et ajoutez-y les informations suivantes :

identity="http://example.com/dupont/"
pass="0fa9a61dcebb5cf6cf98a08d9ef8084b"
administrator=1
[sreg]
nickname="Dupont"
email="[email protected]"
fullname="Jean Dupont"
dob="1989-07-12"
gender="M"
postcode="54000"
country="fr"
language="fr"
timezone="Europe/Paris"

Pour obtenir le pass en md5, utilisez cette commande :

$ echo "mon_mot_de_passe" | md5

Et voilà, votre utilisateur est maintenant défini. Vous pouvez maintenant vous loguer sur SimpleID à l'adresse que vous avez donnée plus haut. Vous aurez ensuite divers options, donc le lien que vous pourrez utiliser pour vous loguer sur les autres sites compatibles OpenID ;) .

15
mai

Gérer la déconnexion de phpMyAdmin

Vous développez un site Web et vous utilisez phpMyAdmin pour gérer vos tables. Seulement, en bon développeur, vous ne revenez pas souvent sur phpMyAdmin. Et là, il s'est encore déconnecté. À la longue, ça devient assez génant de se reconnecter à chaque fois. Voici une petite astuce pour vous connecter automatiquement sur phpMyAdmin.

Attention : cette manipulation est à effectuer sur un phpMyAdmin en local, et pas en production, sinon, tout le monde y aura accès.

Editez le fichier /etc/phpmyadmin/config.inc.php. Si vous trouvez la variable $cfg['LoginCookieValidity'], changez la valeur 3600 (secondes) par une valeur plus élevée, comme "10800" pour 3 heures.

Si, comme moi, vous n'avez pas cette variable, ajoutez ceci à la fin du fichier :

$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['user'] = 'root'; 
$cfg['Servers'][$i]['password'] = 'motdepasse';

Vous l'aurez compris, dans "host", saisissez votre nom d'hôte (localhost), et après, votre login (host) et votre mot de passe (password).

Et voilà, validez, revenez sur phpMyAdmin. Vous constatez que vous n'avez plus aucune authentification. Faites attention avec cette manip' ;) .

précédente page 2 sur 3 suivante

^ Retourner en haut