OVH Community, votre nouvel espace communautaire.

Php ssh_exec (tache CRON)


ilhan0730
20/11/2009, 14h19
Personne ne peut m'aider ???

je veux juste savoir si avec cron on peu envoyer de requête SSH?

merci

ilhan0730
13/11/2009, 14h32
Bonjour a tous,

Je vous contacte car j'ai un souci avec un script, ce script marche très quand je le lance manuellement.

Lorsque j' execute ce script via CRON il ne fonctionne pas!
Mon script permet de vérifier si un serveur est utilisé et si au bout de 60min il n'est toujours pas utilisé, il envoie une commande via ssh pour couper le serveur en question.

Je ne c'est pas trop comment m'expliquer correctement, voici quand même mon script :


Code:
//**************** REQUETE POUR OBTENIR LE SERVEUR LOUÉS *******************/
$req001 = "SELECT * FROM TABLE_SERVER WHERE user!='0' ";
$res001 = mysql_query($req001) or die ("Requête impossible sur la table...");

//******************** ON BOUCLE POUR CHAQUE SERVER ***********************/
while ($ligne = mysql_fetch_array($res001))
{
	$id_serv = $ligne['id_serv'];
	$ip = $ligne['ip'];
	$port = $ligne['port'];
	$prix = $ligne['prix'];
	$usered = $ligne['user'];
	$slot = $ligne['slot'];
	$typebdd = $ligne['type'];
	$nomscreenx = $ligne['nomscreen'];

	$type = $info['password'];
	$mode = $info['mod_dir'];
	$map = $info['map'];
	$adresse = $ip.":".$port;
	$gameinfo = new HLserver($adresse);
	$info = $gameinfo->serverInfo();
	$type = $info['password'];
	$descri = $info['description'];
	$connect = $info['players'];
	$name = $info['hostname'];

	//************ DEBUT DU SCRIPT DU BOT *********************/
	if($name!='') { //SERVER ON
		if($type=='Actif') {	// C'EST UN SERVEUR PRIVE
			if($connect>1) {
				$req002 = "UPDATE TABLE_TIME_OFF SET ext_time='0' WHERE nomscreen='$nomscreenx'";
				$res002 = mysql_query($req002) or die (mysql_error()." 1");
			}else{
				$req003 = "SELECT * FROM TABLE_TIME_OFF WHERE nomscreen='$nomscreenx'";
				$res003 = mysql_query($req003) or die (mysql_error()." 2");
				$lign2 = mysql_fetch_array($res003);
				$plus1 = $lign2['ext_time'] + 1;
				$req004 = "UPDATE TABLE_TIME_OFF SET ext_time='$plus1' WHERE nomscreen='$nomscreenx'";
				$res004 = mysql_query($req004) or die (mysql_error()." 3");
				//****************************
					//CODE POUR SAVOIR SI $lign2['ext_time'] == 60. si oui on coupe le server
					$req008 = "SELECT * FROM TABLE_TIME_OFF WHERE nomscreen='$nomscreenx'";
					$res008 = mysql_query($req008) or die (mysql_error()." 8");
					$lign3 = mysql_fetch_array($res008);
						if($lign3['ext_time'] == 60)
						{
							//on remet le compteur a zero
							$req009 = "UPDATE TABLE_TIME_OFF SET ext_time='0' WHERE nomscreen='$nomscreenx'";
							$res009 = mysql_query($req009) or die (mysql_error()." 9");
							//et on éteind le server ! ! !
							//***********Connection SSH2************
							if($connection = ssh2_connect("IP_DU_SERVER", 22)){
								ssh2_auth_password($connection, "LOGIN", "PASSE");
							//********************
								$stream = ssh2_exec($connection, "screen -dr ".$nomscreenx." -X quit");
															}
						}
				//****************************	
			}
		}else{ // C'EST UN SERVEUR PUBLIC
			if($connect>0) {
				$req005 = "UPDATE TABLE_TIME_OFF SET ext_time='0' WHERE nomscreen='$nomscreenx'";
				$res005 = mysql_query($req005) or die (mysql_error()." 4");
			}else{
				$req006 = "SELECT * FROM TABLE_TIME_OFF WHERE nomscreen='$nomscreenx'";
				$res006 = mysql_query($req006)or die ("Requête impossible sur la table3...");
				$lign2 = mysql_fetch_array($res006);
				$plus1 = $lign2['ext_time'] + 1;
				$req007 = "UPDATE TABLE_TIME_OFF SET ext_time='$plus1' WHERE nomscreen='$nomscreenx'";
				$res007 = mysql_query($req007) or die (mysql_error()." 5");
				//****************************
					//CODE POUR SAVOIR SI $lign2['ext_time'] == 60. si oui on coupe le server
					$req010 = "SELECT * FROM TABLE_TIME_OFF WHERE nomscreen='$nomscreenx'";
					$res010 = mysql_query($req010) or die (mysql_error()." 10");
					$lign3 = mysql_fetch_array($res010);
						if($lign3['ext_time'] == 60)
						{
							//on remet le compteur a zero
							$req011 = "UPDATE TABLE_TIME_OFF SET ext_time='0' WHERE nomscreen='$nomscreenx'";
							$res011 = mysql_query($req011) or die (mysql_error()." 11");
							// VU QUE C DES PUBLIC ON NE LES COUPE PAS !!!
						}
				//****************************	
			}
		}
	}else{ //SERVER OFF
		//ON FAIS RIEN
	}
}

?>
peut être que les connections ssh ne sont pas pris en compte par cron?

Merci par avance pour vos réponses,
cordialement ilhan