IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lecture fichiers systemes distants


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Points : 61
    Points
    61
    Par défaut Lecture fichiers systemes distants
    Bonjour,
    J'ai un serveur web A (Debian) avec un site qui affiche toutes les informations sur mon serveur (disque, mémoire, cpu, etc....). Tout fonctionne correctement en local avec la lecture des différents fichiers systeme (/proc/meminfo, /proc/cpuinfo, etc...).

    Désormais j'aimerai à partir de ce site, surveiller un serveur B. Mais voilà je n'arrive pas à ouvrir à distance, en lecture, les fichiers systeme de mon serveur B. Ceux ci ne se trouvant pas dans le /var/www je ne sais pas comment faire...

    Comment faire pour dialoguer avec mon serveur B ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Solution A: tire un lien symbolique (beurk que c'est sale!)
    Solution B: expose un webservice (sécurisé) qui distribue ces infos (s'il peut directement les extraire histoire de mâcher le travail du client c'est encore mieux)

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Points : 61
    Points
    61
    Par défaut
    Pour la solution B, je n'ai aucune connaissance en WebService. C'est un outil que je peux déjà trouver sur internet ou bien un outil que je dois faire moi?

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Dans sa plus simple expression, ça peut juste être ça:
    à mettre dans /var/www/info.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
     
    $api_keys = array(
        '9708cf0b964dba3b',
        '275a1a74a361e58c',
        //...
    );
     
    if (!isset($_GET['key']) || !in_array($_GET['key'], $api_keys)) {
        header("{$_SERVER['SERVER_PROTOCOL']} 403 Forbidden");
        die("Wrong API key");
    }
     
    if (isset($_GET['mem'])) {
        header("Content-Type: text/plain");
        passthru('cat /proc/meminfo');
        exit;
    }
     
    if (isset($_GET['cpu'])) {
        header("Content-Type: text/plain");
        passthru('cat /proc/cpuinfo');
        exit;
    }
     
    // ...
    Il suffit ensuite d'utiliser une URI de la forme http://ip/info.php?cpu&key=9708cf0b964dba3b pour obtenir les informations

    Attention avec ce système (simplissime) de clés API: c'est vulnérable à une attaque man-in-the-middle.

    Pour lire cette information (toujours avec PHP) depuis un serveur distant, tu peux tout simplement utiliser file_get_contents:
    /var/www/monitor.php (sur le serveur de monitoring)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
     
    // ip des plateformes
    // à monitorer
    $monitor = array(
        '192.168.0.1' => 'Server 1',
        '192.168.0.2' => 'Server 2',
        '192.168.0.3' => 'Server 3',
        // ...
    )
     
    $api_key = '9708cf0b964dba3b';
     
    ?>
    <!DOCTYPE HTML>
    <html lang="en-US">
    <head>
        <meta charset="UTF-8">
        <title>Platform monitoring</title>
    </head>
    <body>
        <h1>Platform monitoring</h1>
        <?php foreach ($monitor as $ip => $name): ?>
        <section data-ip="<?php echo $ip ?>">
            <h2><?php echo $name ?></h2>
            <pre id="cpu"><?php echo file_get_contents("http://$ip/info.php?cpu&key=$api_key") ?></pre>
            <pre id="mem"><?php echo file_get_contents("http://$ip/info.php?mem&key=$api_key") ?></pre>
            <!-- ... -->
        </section>
        <?php endforeach ?>
    </body>
    </html>
    Enfin, tout ça est bien artisanal, il existe déjà des projets PHP qui donnent un visuel assez complet de ce qu'il se passe sur une plateforme (c'est bête j'ai oublié le nom).

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 73
    Points : 61
    Points
    61
    Par défaut
    Merci Benjamin Delespierre.
    J'utilise la méthode du webservice et ça marche nikel

    Merci pour votre réactivité et vos conseils.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lenteur lecture fichier distant
    Par julien20vt dans le forum Général Java
    Réponses: 2
    Dernier message: 10/05/2010, 14h52
  2. [AJAX] lecture fichier json distant
    Par 4R416N33 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 08/06/2008, 20h01
  3. lecture fichier texte distant?
    Par scm85 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 09/04/2008, 16h55
  4. [SimpleXML] Lecture d'un fichier xml distant
    Par Palca dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/02/2008, 15h26
  5. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2003, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo