Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/02/2008, à 12:02

jipe.chibi

[HELP] Script PHP : Changer le hostname d'une machine

Bonjour à  tous,


Objectifs : Changer le nom d'une machine sous linux

- Utilisation d'une base de donnée mysql qui contient les @mac des machines. A chaque @mac est mis en association un nom de machine.

Exemple :

Structure de la base :     machineID                  mac
                                   machine1                  00.45.78.....                       

Principe :

- Sauvegarder l'@mac machine dans une variable
- Se connecter à  la base
- Comparer @mac machine avec @mac base de donnée       

     SI @mac machine = @mac machine base
           alors
           Select nom de machine
           from table machine
           where @mac machine = @ mac machine base

- Modification du fichier host avec le nouveau nom



Voilà  mes premiers début :

#!/usr/bin/php

<?php

$mac = exec ("ifconfig eth0  |  grep HW | awk '{print $5}'");

$db = mysql_connect('localhost', 'login', 'password');

mysql_select_db('nomdb',$db);

$query = "SELECT mac FROM machines"; 

$result= mysql_query($query);

if ($mac == mysql_fetch_array($query)){

echo "machine connue dans la base";

}
else
{
echo "Machine inexistante dans la base";
}

?>

La connextion à  la base s'effectue correctement, je peux lister le contenue de ma table machines sans problème.

Mon problème : if ($mac == mysql_fetch_array($query))

Le test ne s'effectue pas correctement, dans tous les cas je retombe dans ma boucle : Machine inexistante dans la base. J'ai essayer de fixer la position de ma recherche avec un :
if ($mac == mysql_ result($result, position dans la table)). Et là  tous fonctionne, mais je pointe directement sur l'enregistrement, je ne fait pas une recherche dans toute la table.

Voilà  si vous avez des idées, ou conseils.

merci

jipe

#2 Le 05/02/2008, à 12:14

jipe.chibi

Re : [HELP] Script PHP : Changer le hostname d'une machine

Je crois avoir résolu mon problème :

while($row = mysql_fetch_row($result)){

$macdb = $row[0];

}

if ($mac == $macdb){

....

....

ça l'air de marche avec ça ^^"

Enfin si vous avez mieux en plus "classe" faite moi signe.

merci

jipe

#3 Le 06/02/2008, à 15:00

Aurel34

Re : [HELP] Script PHP : Changer le hostname d'une machine

dis, il manque pas un "WHERE mac=$mac" ou un truc du genre dans ton query ?

#4 Le 07/02/2008, à 17:21

jipe.chibi

Re : [HELP] Script PHP : Changer le hostname d'une machine

Bonjour à  tous,

oui oui, il manque la partie qui consiste à  récupérer le nom de la machine (avec effectivement une condition where @mac=@mac etc), ainsi que la partie : modification des fichiers hosts. Par souci de lisibilité j'ai pas tous collé dans le post.

Tous fonctionne parfaitement, script lancé au démarrage de chaque machines etc.

Pour les personnes intéressées, je pourrais éventuellement vous envoyer les scripts complet ainsi que la procédure de mise en place sur une image master.

#5 Le 12/02/2008, à 16:37

bennyboy

Re : [HELP] Script PHP : Changer le hostname d'une machine

+1 wink
Interessé par le code...

En fait, je suis en train d'essayer de faire un script permettant de modifier le hostname d'une machine virtuelle (template via VMware) au premier démarrage..

Et oui sinon elle ont toutes le même nom étant donné qu'elle proviennent du même template wink Donc ton script même si en php peut m'inspirer wink

Merci


T'es tellement no-life que t'aimerais être un PC pour redémarrer ta vie en mode sans échec !
"Ubuntu" - an African word meaning "Gentoo is too hard for me".
Un wiki inutile (ou presque)
Un github inutile (ou presque)

Hors ligne

#6 Le 14/02/2008, à 10:10

jipe.chibi

Re : [HELP] Script PHP : Changer le hostname d'une machine

#!/usr/bin/php

<?php

include 'var_inc.php';
include "function_inc.php";

$mac =  exec ("ifconfig ".$eth."  |  grep HW | awk '{print $5}'");

$query = "SELECT nom_pc FROM config WHERE mac_pc= '".$mac."'";

$result = dbase_query($query); // fontion connexion base mysql

$row = @mysql_fetch_row($result);

$hostname = $row[0];

echo "Nom de la machine : ".$hostname." \n";

exec ("cp /etc/hostname /etc/hostname.bak");
exec ("cp /etc/hosts /etc/hosts.bak");

exec ("cat /etc/hosts.bak | sed 's|".$hostmaster."|'".$hostname."'|g' > /etc/hosts");
exec ("echo ".$hostname." > /etc/hostname");

?>

var_inc.php = variable connexion base
function_inc.php = fonction connexion base

voilà  bonne journée

#7 Le 14/02/2008, à 10:17

jipe.chibi

Re : [HELP] Script PHP : Changer le hostname d'une machine

un oublie :

exec ("hostname ".$hostname."");

#8 Le 15/02/2008, à 21:07

bennyboy

Re : [HELP] Script PHP : Changer le hostname d'une machine

Ok merci beaucoup je test ça bientà´t (dès que j'ai le temps)
big_smile


T'es tellement no-life que t'aimerais être un PC pour redémarrer ta vie en mode sans échec !
"Ubuntu" - an African word meaning "Gentoo is too hard for me".
Un wiki inutile (ou presque)
Un github inutile (ou presque)

Hors ligne

#9 Le 19/05/2008, à 10:32

StraToN

Re : [HELP] Script PHP : Changer le hostname d'une machine

Bonjour !

Une petite question à propos de ce script : lorsque vous l'appelez depuis une page web (exec()), n'y a-t-il pas un problème de droits d'éxecution ? Comment le contournez-vous ?

Merci de votre réponse.

Hors ligne