Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
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 12/02/2010, 15h35   #1
Invité de passage
 
Quentin Andres
Inscription : février 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Quentin Andres

Informations forums :
Inscription : février 2010
Messages : 2
Points : 0
Points : 0
Par défaut Envoyer chaque ligne Script.cgi dans la base de donnée SQL

Bonjour,

Voila, actuellement en 2eme année de BTS IRIS, j'ai un Projet BTS à réaliser, et je bloque sur un endroit =X

Code cgi :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
 
# Suppression du fichier temporaire
 
if [ -f /var/www/ProjetBTS1/recuptest.php ] 
then sudo rm /var/www/ProjetBTS1/recuptest.php
fi
if [ -f /var/www/ProjetBTS1/recupfinish.php ]
then sudo rm /var/www/ProjetBTS1/recupfinish.php
fi
 
 
sudo nmap -sP 192.168.0.0/24 > /var/www/ProjetBTS1/recuptest.php
grep '^[MAC]' /var/www/ProjetBTS1/recuptest.php | cut -c 14-31 > /var/www/ProjetBTS1/recupfinish.php
 
 
cat /var/www/ProjetBTS1/recupfinish.php | while read line
do
do (
echo "INSERT INTO Info_PC_IRIS (Adresse_Mac)VALUES ('$line')" | mysql --user=root --password=****** Projet)
done

http://localhost/phpmyadmin/Projet/

Au debut je recupere ca :

Host Max-PC.iris (192.168.0.10) appears to be up.
MAC Address: 00xxxxx (Unknown)

Aprés je fais en sorte d'affichere que les ligne contenant 00:, ca m'affiche ca :

MAC Address: 00xxxxx (Unknown)

Puis je lui demande de couper les caractere et de garder seulement du 14eme au 32 eme et j'obtient ca dans le fichier recupfinish.php ou .txt si je veux, enfin qu'importe :

00xxxxx
00xxxxx
etc

Le souci, c'est que j'aimerais recuperer toute mes adresses mac dans une table .. :S

J'avais essayé de le faire en php, mais j'arrivais a afficher dans ma table que la premiere adresse mac, la ligne 1 en faite.

Donc je test en Shell .. mais je galere pour l'envoye vers la base de donnée, cette ligne en faite :
(La aussi je recupere que la premiere ligne, aprés j'ai ca :

ERROR 1062 (23000) at line 1: Duplicate entry '0' for key 1
ERROR 1062 (23000) at line 1: Duplicate entry '0' for key 1
ERROR 1062 (23000) at line 1: Duplicate entry '0' for key 1
ERROR 1062 (23000) at line 1: Duplicate entry '0' for key 1

Code cgi :
1
2
3
4
 
do (
echo "INSERT INTO Info_PC_IRIS (Adresse_Mac)VALUES ('$line')" | mysql --user=root --password=****** Projet)
done

Comme en Shell je m'y connais pas trop, j'ai cherché sur internet sans trop de réussite, et comme ca fais 3j que je stagne et donc je ne peut pas avancer dans mon projet :s


Voila, si vous voulez plus d'information, n'hesitez pas.

Merci d'avoir pris la peine de lire mon post

EDIT : Jai trouvé ce qui me faisais ****, c'était ma deuxieme table, je lui avais pas donné de valur :p

Dernière modification par ElevedIRIS ; 12/02/2010 à 16h00.
ElevedIRIS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2010, 16h03   #2
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 897
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 897
Points : 3 677
Points : 3 677
Bonjour,

oublie les fichiers temporaires, et utilise donc un tableau :
Code :
1
2
3
4
5
6
MACs=($(sudo nmap -sP 192.168.0.0/24 | grep ^MAC | cut -c 14-31))
for MAC in "${MACs[@]}"; do
echo "INSERT INTO Info_PC_IRIS (Adresse_Mac)VALUES ('$MAC')" | mysql -u root -p****** Projet
#ou
#mysql -u root -p****** Projet -e "INSERT INTO Info_PC_IRIS (Adresse_Mac)VALUES('$MAC')"
done
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2010, 16h19   #3
Invité de passage
 
Quentin Andres
Inscription : février 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Quentin Andres

Informations forums :
Inscription : février 2010
Messages : 2
Points : 0
Points : 0
Merci de ta réponse N_Bah !

Si je passais par des fichiers temporaire, c'est que lorsque je clic sur un bouton HTML, ca me lance ce script, et ca me met une page de confirmation si il voit le fichier: recupfinish.php, maiis j'avoue ta méthode est plus 'légéré' :o

J'ai un petit souci dans le script, j'aimerais que si il y à deux fois la meme adresse_mac dans ma liste, ca me supprime l'ancienne et me rajoute la nouvelle :/

Et un autre petit truc, je sais j'en demande beaucoup :S, c'est que la ligne 1, on lui attribue le numero 1, car dans ma table j'aimerais avoir :
Code :
1
2
3
4
5
6
______________________________________________
Adresse_Mac       |   Nom_Du_PC   |   Ordre_PC
__________________|___________ ___|____________
00:0D:54:F7:4B:45 |  Max-PC       |   1
etc               |   etc         |   etc
__________________|_______________|___________
Mais deja merci de l'aide
ElevedIRIS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2010, 17h43   #4
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 897
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 897
Points : 3 677
Points : 3 677
Citation:
Envoyé par ElevedIRIS
J'ai un petit souci dans le script, j'aimerais que si il y à deux fois la meme adresse_mac dans ma liste, ca me supprime l'ancienne et me rajoute la nouvelle :/
UPDATE...
?
Citation:
Envoyé par ElevedIRIS
Et un autre petit truc, je sais j'en demande beaucoup :S, c'est que la ligne 1, on lui attribue le numero 1, car dans ma table j'aimerais avoir :
dans la boucle for, et ta commande mysql, là où il faut, tu ajoutes un $((++n)), ce qui donnera le nombre d'itération de la boucle, donc le numéro de ligne traitée.
N_BaH 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 +1. Il est actuellement 02h50.


 
 
 
 
Partenaires

Hébergement Web