Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2008, 18h16   #1
Invité de passage
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 3
Points : 3
Par défaut [SSH2] Problème au nvieau de ssh2_exec()

Bonjour à tous,

Je me suis lancé depuis peu a la création d'un GamePannel pour une utilisation personnelle. Je me suis renseigné où je pouvais pour savoir quel était le language le plus adapté, et tout ma orienté vers la lib php SSH2.

Le problème est donc le suivant, dans mon script je compte donc rebooté, lancer ou simplement stoppé un serveur de jeux sur un de mes serveurs dédié.
Je me connecte donc avec SSH (aucun souci de se coté là) mais celui-ci ne veut pas faire les commandes voulues. J'ai donc tester des commandes simple (pour savoir si ca ne planté pas niveau serveur) donc j'ai tester un simple mkdir et ca ma bien crée le dossier.

Avant d'exposé ma fonction je me pose une question:
Vaut il mieu gerer tout ca avec des shell ou bien lancé les commandes via SSH ? Pour ma part j'essaye via SSH directement mais apparement ce n'est pas concluant.

Bon voici mes fonction qui bug ,sans aucun message d'erreurs et qui m'affiche bien "Serveur Stop" en sortie:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function commande($action, $id_commande, $slot, $boot_map, $port, $server) {
	$action= intval($action);
	//on execute nos commandes, on peut exécuter plusieurs  commandes en les séparant par des ; 
	$ip_serv = '91.***.126.10'; 
	$user_serv = '*****'; 
	$pass_serv = '************';
 
        $connect= ssh2_connect($ip_serv, 22);
        $auth= ssh2_auth_password($connect, $user_serv, $pass_serv);	
        if($auth) {	
        $stream= ssh2_exec($connect, 'screen -r serveur_war');
	    if($stream != FALSE) {
	    $stream= ssh2_exec($connect, 'quit');
	    echo'serveur STOP';
	    }
	    else {
	    echo'Erreur de commande';
	    }	
           }
           else {
           echo'Mauvais User';
           }		
}
Voici une des partie de la fonction où l'action stoppé est effectué. J'avais aussi pensé à une éventualité qui est la suivante: "Le problème ne pourrait-il pas parvenir que j'essaye d'injecté une commande dans le screen mais que je n'utilise pas la bonne méthode?".

Ne me jugé pas sur ce premier bout d'essaie avec SSH, car cette fonction est pas du tout le résultat final et les echo ne sont là que pour mes tests, et je compte bien optimisé le tout quand j'aurai réussi à arreté ce serveur

Je vous remercie d'avance pour votre aide.
BoNux83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 20h50   #2
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
Saut,

Après ton ssh2_exec pour lancer le service et avant le quit, fait un

stream_set_blocking($connect, true);
$output = stream_get_contents($connect);

Pour récupérer le résultat de la commande!

a plus
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 17h45   #3
Invité de passage
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 3
Points : 3
Je vien de rajouté ces 2 lignes et voicis le message d'erreur.

Code :
PHP Warning:  stream_get_contents(): supplied resource is not a valid stream resource in C:\wamp\www\gggg\taches\game\function.php on line 83
BoNux83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 20h09   #4
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
Ouaip, essais plutôt avec $stream.
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 21h50   #5
Invité de passage
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 3
Points : 3
Oui avec stream ca marche mieu déjà

Mais bon voici ce qui est afficher (je pense que c'est parce que je touche au screen):

Code :
Must be connected to a terminal.
Merci encore de m'aider kaymak
BoNux83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 22h36   #6
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
OK.
Pourquoi tu passes par screen ?
Perso je connais pas.
Tu n'as pas un service plutôt ?
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 22h58   #7
Invité de passage
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 3
Points : 3
En faite je passe par screen , du moin j'ai essayé pour pouvoir faire d'autre action plus complexe par la suite.

Sinon qu'appelle tu par service? Si c'est l'application qui apparait dans la liste des process oui j'en est un.

Je pense que tu voudrais que je fasse du genre

Code :
/blabla/serveur_machin stop
Non?
BoNux83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 09h51   #8
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
ouaip, et c'est service monservie stop|start|restart|reload
ou /etc/init.d/monservice start...
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 10h04   #9
Invité de passage
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 3
Points : 3
Je cherche depuis hier soir si un service existe pour les serveurs, mais apparement j'en trouve pas (où j'arrive pas a le trouver).

Y a t'il une commande pour trouver les services en marche?
BoNux83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 10h24   #10
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
Sa dépend de ta release :s
Donnes voir, se sera plus simple.

Et puis si sa se trouve ton serveur de jeux n'à pas installé de service, mais j'y croit pas torp car dans ce cas là se serait abusé.

M'enfin, il faudra passer par leur doc.
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 15h57   #11
Invité de passage
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 3
Points : 3
Donc notre serveur est sous Fetch.

On utilise donc hlds pour nos serveur de jeux. (4 au total) tous installé séparement (dossier different).

Si il faut d'autre info je peut me renseigné car bon au niveau de la distrib c'est pas mon dada disont
BoNux83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 16h38   #12
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
Ce n'est pas plutot Debian Etch ?

Je n'en ai jamais administré, mais bon d'après ce que j'ai pu lire en faisant un
on devrait pouvoir retrouver les scripts de demarrage.

Donc poste le resultat de
voir ce que cela donne.

En esperant que j'ai bon et que c'est bien installer on devrait trouver un fichier hlds. On utilisera se script pour redemarrer tes serveurs.

a plus
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 17h39   #13
Invité de passage
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 3
Points : 3
Hum j'ai fait ce que tu m'a dit mais aucune trace de HLDS ...

Voici la liste de ce qui m'est afficher:

Code :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
total 252
drwxr-xr-x  2 root root 4096 2008-03-21 22:32 .
drwxr-xr-x 56 root root 4096 2008-05-05 08:13 ..
-rwxr-xr-x  1 root root 1063 2006-09-25 02:30 bind
-rwxr-xr-x  1 root root 5089 2006-09-20 13:33 bootclean
-rwxr-xr-x  1 root root 2146 2006-09-12 23:30 bootlogd
-rwxr-xr-x  1 root root 1915 2006-09-20 13:27 bootmisc.sh
-rwxr-xr-x  1 root root 2930 2006-09-14 10:20 checkfs.sh
-rwxr-xr-x  1 root root 9548 2006-09-23 09:34 checkroot.sh
-rwxr-xr-x  1 root root 6110 2006-09-05 18:15 console-screen.sh
-rwxr-xr-x  1 root root 1761 2006-10-12 20:55 cron
-rwxr-xr-x  1 root root 5823 2007-02-21 16:13 glibc.sh
-rwxr-xr-x  1 root root 1360 2007-01-13 19:52 halt
-rwxr-xr-x  1 root root 1287 2006-09-12 23:31 hostname.sh
-rwxr-xr-x  1 root root 3886 2007-02-21 18:48 hwclock.sh
-rwxr-xr-x  1 root root 2518 2006-09-15 20:03 ifupdown
-rwxr-xr-x  1 root root 1046 2006-09-15 20:03 ifupdown-clean
-rwxr-xr-x  1 root root 3484 2006-10-16 05:38 keymap.sh
-rwxr-xr-x  1 root root  944 2006-09-12 23:31 killprocs
-rwxr-xr-x  1 root root 1375 2006-05-25 11:38 klogd
-rwxr-xr-x  1 root root  417 2006-08-09 00:38 libdevmapper1.02
-rwxr-xr-x  1 root root 1054 2006-09-06 23:43 makedev
-rwxr-xr-x  1 root root  617 2006-01-15 12:04 mountall-bootclean.sh
-rwxr-xr-x  1 root root 1718 2006-09-12 23:30 mountall.sh
-rwxr-xr-x  1 root root 2206 2006-10-03 20:22 mountdevsubfs.sh
-rwxr-xr-x  1 root root 2394 2006-09-25 10:36 mountkernfs.sh
-rwxr-xr-x  1 root root  615 2006-01-15 12:04 mountnfs-bootclean.sh
-rwxr-xr-x  1 root root 2299 2006-11-26 14:35 mountnfs.sh
-rwxr-xr-x  1 root root 3668 2006-11-26 16:13 mtab.sh
-rwxr-xr-x  1 root root 2550 2007-01-06 16:36 networking
-rwxr-xr-x  1 root root 2324 2007-02-25 21:29 openbsd-inetd
-rwxr-xr-x  1 root root 2103 2008-03-14 18:13 open-iscsi
-rwxr-xr-x  1 root root  997 2006-09-13 03:42 procps.sh
-rwxr-xr-x  1 root root 4232 2007-01-02 11:00 proftpd
-rwxr-xr-x  1 root root 8045 2006-11-27 23:23 rc
-rwxr-xr-x  1 root root  798 2006-09-28 19:25 rc.local
-rwxr-xr-x  1 root root  117 2005-12-02 18:44 rcS
-rw-r--r--  1 root root 1386 2006-09-13 08:10 README
-rwxr-xr-x  1 root root  655 2006-09-22 16:21 reboot
-rwxr-xr-x  1 root root  994 2006-09-12 23:30 rmnologin
-rwxr-xr-x  1 root root 4096 2006-11-20 16:06 rsync
-rwxr-xr-x  1 root root  695 2007-03-07 00:06 screen-cleanup
-rwxr-xr-x  1 root root 1376 2006-11-27 23:23 sendsigs
-rwxr-xr-x  1 root root  585 2006-09-12 23:32 single
-rw-r--r--  1 root root 4187 2006-09-12 23:32 skeleton
-rwxr-xr-x  1 root root 1891 2007-03-05 17:38 ssh
-rwxr-xr-x  1 root root  520 2006-09-12 23:26 stop-bootlogd
-rwxr-xr-x  1 root root  730 2006-10-02 19:14 stop-bootlogd-single
-rwxr-xr-x  1 root root 2037 2006-05-25 11:38 sysklogd
-rwxr-xr-x  1 root root 8178 2006-12-19 11:21 udev
-rwxr-xr-x  1 root root 1252 2006-03-28 09:44 udev-mtab
-rwxr-xr-x  1 root root 3175 2006-11-25 10:22 umountfs
-rwxr-xr-x  1 root root 2128 2006-11-26 19:23 umountnfs.sh
-rwxr-xr-x  1 root root 1122 2006-09-30 16:37 umountroot
-rwxr-xr-x  1 root root 1815 2006-09-12 23:30 urandom
BoNux83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 17h44   #14
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
ouaip effectivement, pi ce n'est pas du tout ce à quoi je m'attendais.

Sinon tu connais la ligne de commande pour redémarrer tes servuces hlds ?

Et puis pouvais poster le résultat de
Code :
locate -u && locate hlds
En esperant que locate est bien installé.

a pluche
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 18h31   #15
Invité de passage
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 3
Points : 3
Apparement ce n'est pas la bonne option

Code :
1
2
3
4
5
6
7
8
locate: option invalide -- u
Usage: locate [-d chemin | --database=chemin] [-e | -E | --[non-]existing]
      [-i | --ignore-case] [-w | --wholename] [-b | --basename]
      [--limit=N | -l N] [-S | --statistics] [-0 | --null] [-c | --count]
      [-P | -H | --nofollow] [-L | --follow] [-m | --mmap ] [ -s | --stdio ]
      [-A | --all] [-p | --print] [-r | --regex ] [--regextype=TYPE]
      [--version] [--help]
      modèle...
Merci de ton aide en tout cas, ca fait plaisir
BoNux83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 19h03   #16
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
des barres

Essais avec /usr/bin/updatedb -U / ou locate -U /

J'avais déjà eu ce problème et j'avais trouvé une tache cron qui le faisait tous les jours normalement.

bref fais tout de même le locate hlds

Citation:
Merci de ton aide en tout cas, ca fait plaisir
De rien, mais pour le moment on patoge grave là ....

a plus
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2008, 20h01   #17
Invité de passage
 
Inscription : octobre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 22
Points : 3
Points : 3
Apparement c'est le -U qu'il ne reconnait pas (avec les deux propositions que tu m'a mise au dessus)

Code :
locate: option invalide -- U
Et il me renvoi donc à la liste des options.
BoNux83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h29.


 
 
 
 
Partenaires

Hébergement Web