Contrôler son serveur à distance...à partir d'une page

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 janv. 2009, 21:21

Le probleme c'est que si je prendre en mode console, je ne serai pas faire mes manips vu que je connais aucune commande a par les plus simples :D
Le but c'est d'apprendre, non?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 52 Messages

18 janv. 2009, 21:45

Ouais ta pas tort ^^

Je vais acheter des magazines sur linux et apprendre ! 8-)

Merci de votre soutien ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 janv. 2009, 23:41

Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 5924 Messages

19 janv. 2009, 01:41

Une distrib de desktop sur un serveur, c'est tout simplement mal…
J'ai installé Ubuntu Server sur un serveur mais c'était seulement par contrainte, le meilleur choix reste avant tout Debian… Et si jamais tu sentais le besoin d'une interface graphique pour configurer un serveur, ce serait un signe que tu n'es pas prêt.
Apprends l'administration système en ligne de commande, c'est le seul moyen correct de procéder…

Eléphant du PHP | 52 Messages

19 janv. 2009, 09:07

ok ok

Je vais acheter quelques livres qui as présentés @rthur.

Bon vu que maintenant je vais apprendre à me servir de ma machine, quel est le code (en php) pour se connecter via du ssh 2 ?

j'ai fais un tour dessus : http://fr.php.net/ssh2

et découvert PHP Editor SSH2 mais bon.. pas encore testé

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 janv. 2009, 12:51

Bon vu que maintenant je vais apprendre à me servir de ma machine, quel est le code (en php) pour se connecter via du ssh 2 ?

j'ai fais un tour dessus : http://fr.php.net/ssh2

et découvert PHP Editor SSH2 mais bon.. pas encore testé
Pour te connecter depuis ton PC à un serveur distant, la référence est Putty.
Pour envoyer une commande depuis une page PHP à ton serveur (si la page PHP est sur le même serveur que celui où tu veux envoyer ta commande) pas besoin de SSH, un simple exec() ou system() suffit
Pour envoyer une commande depuis une page PHP à un serveur distant (c'est à dire que la page PHP qui contient la commande n'est PAS sur le même serveur que celui tu veux commander) alors tu as trouvé le bon lien dans la doc.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 52 Messages

19 janv. 2009, 13:47

Ok donc au final mon code devient ça pour envoyer une commande sur une autre machine :
<?php

// ssh protocols
// note: once openShell method is used, cmdExec does not work

class ssh2 {

  private $host = 'host';
  private $user = 'user';
  private $port = '22';
  private $password = 'password';
  private $con = null;
  private $shell_type = 'xterm';
  private $shell = null;
  private $log = '';

  function __construct($host='', $port=''  ) {

     if( $host!='' ) $this->host  = $host;
     if( $port!='' ) $this->port  = $port;

     $this->con  = ssh2_connect($this->host, $this->port);
     if( !$this->con ) {
       $this->log .= "Connection failed !"; 
     }

  }

  function authPassword( $user = '', $password = '' ) {

     if( $user!='' ) $this->user  = $user;
     if( $password!='' ) $this->password  = $password;

     if( !ssh2_auth_password( $this->con, $this->user, $this->password ) ) {
       $this->log .= "Authorization failed !"; 
     }

  }

  function openShell( $shell_type = '' ) {

        if ( $shell_type != '' ) $this->shell_type = $shell_type;
    $this->shell = ssh2_shell( $this->con,  $this->shell_type );
    if( !$this->shell ) $this->log .= " Shell connection failed !";

  }

  function writeShell( $command = '' ) {

    fwrite($this->shell, $command."\n");

  }

  function cmdExec( ) {

        $argc = func_num_args();
        $argv = func_get_args();

    $cmd = '';
    for( $i=0; $i<$argc ; $i++) {
        if( $i != ($argc-1) ) {
          $cmd .= $argv[$i]." && ";
        }else{
          $cmd .= $argv[$i];
        }
    }
    echo $cmd;

        $stream = ssh2_exec( $this->con, $cmd );
    stream_set_blocking( $stream, true );
    return fread( $stream, 4096 );

  }

  function getLog() {

     return $this->log; 

  }

}

?> 
Ce bout de code je l'ais pris sur le lien que j'ai donné. Mais je vais essayé d'en coder un moi mement mais avec tes conseils si tu acceptes bien sur :wink:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 janv. 2009, 13:48

A noter également ce topic qui pourra être un bon point de départ pour démarrer en admin système:
http://www.phpfrance.com/forums/voir_sujet-239607.php
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 1136 Messages

19 janv. 2009, 14:02

un simple exec() ou system() suffit
La majorité des commandes d'administration système nécessitent les droits root .

Les fonction exec() systeme() ou autre comme proc_open() ect , ne te permettrons pas de faire des taches d'administration .

Reste encore la solution de "sudo" mais par defaut , l'utilisateur qui executera tes scripts , est soit nobody , soit (souvent) www-data , et cet utilisateur ne fait pas parti des "SUDOERS" par defaut ..

Il te faudra l'ajouter , avec les commandes qu'il est autorisé à exécuter ...
Mais Attention , c'est un gros risque même tres gros risques .. perso , je ne le ferai pas !!

Autre solution encore moins conseillé , changer l'utilisateur sur lequel fonctionne apache .. .. oublis cette alternative ..

Webmin , fonctionne avec son propre serveur "apache" , avec des droits spécifiques , et majoritairement des scripts cgi ...
Ils disent eux même sur leurs site , qu'avoir webmin sur un serveur peut être une grosse faille de sécurité .. il conseillent de le mettre à jour régulièrement suite à de nombreux piratages qui paraissent assez simple à mettre en place ..

Prudence donc sur l'administration via une interface web ...

Eléphant du PHP | 52 Messages

19 janv. 2009, 14:39

[quote="@rthur']
noter également ce topic qui pourra être un bon point de départ pour démarrer en admin système:
http://www.phpfrance.com/forums/voir_sujet-239607.php
[/quote]

Cool, sympas merci, je vais prendre quelques jours pour bien lire tranquilement. ;)

Pour te répondre Stopher, j'ai pris confiance en moi et je suis prêt à apprendre. Je vais faire tout m'on possible pour aucun warez se pointe sur ma machine.

ViPHP
ViPHP | 5924 Messages

19 janv. 2009, 17:40

On ne comprend pas bien ce que tu veux faire avec ton script. On t'as donné ta réponse, tu n'as plus besoin de script, non ?

Eléphant du PHP | 52 Messages

19 janv. 2009, 18:34

Je vais approfondir pour que vous ayez une meilleur image de ce que je veux.

Ma machine sous Mandriva pour l'instant contient 4 serveurs différents.
  • - Serveur Counter-Strike 1.6
    - Serveur Counter-Strike 1.6 #2
    - Serveur Counter-Strike: Source
    - Serveur Webs
Légende : |||| : actif - |||| : désactiver.

Ces serveurs sont contrôler manuellement avec le terminale de Mandriva.
Avec ces fonctions basique mais qui sont utiles :
"wget ; screen -r ; ./hlds_run ;" Enfin celles qui me permet de gérer les serveurs. Mais le *HIC* c'est que les admins du serveur ne peuvent pas effectuer des reboots, start, rez machine à tout moment. (sauf la commande "exit" dans la console pour rebooter le serveur mais bon...)

Pour exploiter mon projet, je voudrais avoir un script PHP qui permet de controler le serveur à distance comme sur une panel de chez Verygames ou encore MondialServer. (Du genre, rebooter, ajouter plugin et tout le reste.)
J'ai discuté avec une personne d'une société d'hébergement de serveur et il m'a dit qu'il utiliser les fonctions "SSH2" pour que les membres puisses se connecter aux serveurs OVH où les serveurs sont stockés et démarrés. Pour lui c'est très simple et il veut me rien dire. La phrase qui me répète souvent c'est : "Ecoute, débrouille tout seul !". Je cherche les moyens de me débrouiller comme vous pouvez le constater.

En plus clair, le projet ou enfin le script serait sous le nom de "Game Panel Control". Avec des recherches sur google, j'ai effectivement trouvé des scripts comme "FriiPanel" ou "GamePanelX" et un autre mais payant :s

Ces deux scripts gratuit ne m'ont pas satisfait pour controler ma machine même si le serveur SSH2 est exécuté et bien configuré avec mes meilleurs soins. Je ne suis pas du tout coder en php ni programmeur car je suis en stage de C/C++ et autre languages.
Donc je faisais appel à vous pour m'éclaissir dans ce projet. J'ai étudié les méthodes ssh2 et qui m'a l'air très ... ... complexe au niveau des configurations de connexion et tout.
Mais il y a pas que ça, lorsque les membres(admins) du serveur se conencterons sur le script, il faut bien qu'ils éditent les paramètres à tout moment si nécéssaire.

Alors :
<?php
private $ip = $_POST['host'];
private $port = $_POST['port'];
private $user = $_POST['user'];
private $password = $_POST['password'];
?>
Bien entendu (comme vous l'avez remarqué) sa nécéssite d'un formulaire pour modifées ses données. Et changer de dossier (./home/server/hl1-1/hlds.run) pour changer de serveur afin de le configuré.

Ce que je demande n'est pas très simple mais vous m'avez certainement compris je pense :wink:

Maintenant un p'tit bref sur une méthode de configuration de serveur. Le "rcon". Si possible, je souhaite aussi que les membres peuvent toucher au rcon via le script php et permette aussi de voir la console de jeu. Très complexe mais utile. (Méthode employer si SSH2 ne fonctionne plus)

Donc voilà...
Je pense avoir tout dit et si j'oublie quelques choses, je le rajouterai par la suite. :)

Merci à m'aider dans ce projet "démoniak" :twisted: .
Car plus tard, je vais peut etre employer la création de ma société d'hébergement de serveur avec mes machines d'autant plus que j'ai une connexion de haute débit. (28 mégas) :lol:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 janv. 2009, 01:07

création de ma société d'hébergement de serveur avec mes machines d'autant plus que j'ai une connexion de haute débit. (28 mégas) :lol:
28Mo en download, combien en upload?
Parce que pour un serveur ce n'est pas le download qui est important mais l'upload... ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 52 Messages

20 janv. 2009, 17:49

Euh.. Bonne question faut voir. :roll:

ViPHP
ViPHP | 1136 Messages

20 janv. 2009, 18:00

Re,

L'utilisation ssh2 via php , n'est pas si compliqué que ça ...

Et à en lire ce que tu veux exactement , je te conseille tout de même une connexion https .. car sinon , tes identifiants de connexion ssh ( formulaire client ) vers ton serveur passerons en claire

J'ai écrit un petit article d'introduction à l'utilisation du ssh2 avec php ...

A partir de là , je pense que tout ce que tu as dit est faisable assez simplement .. et en relativement peu de temps ...

Bonne continuation .

ch.