#1 Le 05/02/2008, à 11: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, à 11: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, à 14: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, à 16: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, à 15:37
- bennyboy
Re : [HELP] Script PHP : Changer le hostname d'une machine
+1
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 Donc ton script même si en php peut m'inspirer
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, à 09: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, à 09:17
- jipe.chibi
Re : [HELP] Script PHP : Changer le hostname d'une machine
un oublie :
exec ("hostname ".$hostname."");
#8 Le 15/02/2008, à 20: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)
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, à 09: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