[COMMANDE] Etrangeté de Nmap

Fermé
marco - 1 juin 2005 à 10:16
 marco - 6 juin 2005 à 16:01
Bonjour!
Merci de lire mon post ;)

Je viens de voir un truc bizarre avec la commande nmap:
Est ce normal qu'un "nmap -sP IP/24 > /tmp/test.tmp" lancé par console affiche 2 lignes par hôte (host+\n+@Mac), et que le même nmap lancé par un exec() de PHP n'affiche que la ligne host ??

Ce post pourrait faire partie aussi du forum programmaion mais je voudrais savoir si ce résultat est dû à une particularité de nmap. Au vu de ce résultat, j'ai l'impression que nmap lance une autre commande pour pouvoir afficher l'@mac correspondant au host trouvé, ce qui expliquerait peut être pourquoi avec PHP je n'obtient que les lignes host...

Merci de votre aide, et bien bonne journée à vous
A voir également:

4 réponses

Dans une commande, il y a plusieurs niveaux de sorties.
Il y a la sortie standard, echo "bonjor" par exemple.
Mais les messages d'erreurs peuvent sortir sur une autre sortie, ce qui permet de les voir justement !
]$ echo `commandinconnu` > fichier
Va renvoyer que la commande est inconnue, mais pas dans le fichier mais sur la sortie du terminal.
Pour choisir quelle sortie on redirige, c'est echo "truc" 2> fichier pour rediriger la 2eme sortie, echo "truc" 3> fichier pour la 3eme sortie, etc.
pour toutes les sorties, c'est &> je crois.

Donc php doit te renvoyer une seule couche de sortie (celle par defaut, > ). Regrde dans les logs d'apache pour voir si la sortie est redrigée par la ...
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
1 juin 2005 à 19:17
Bonsoir,

En fait quand un processus démarre, il dispose des 3 descripteurs de fichiers qui sont déjà ouverts et en plus sont configurés par le processus père mais pas par le noyau.


Le 1er descripteur : numéro 0 c'est l'entrée standard (stdin)
Le 2ème descripteur : numéro 1 c'est la sortie standard (stdout)
Le 3ème descripteur : numéro 2 c'est la sortie d'erreur standard (stderr)

---------------0 : entrée standard--------<----données----clavier (ou fichier)

processus------1 : sortie standard-----message-->---
---------------2 : sortie erreurs--------message-->--|
---------------------------------------------------------|  écran


Donc tu peut diriger dans un fichier les 2 sortie (stdout et stderr)

Pour rédiger les sorties normales tu utilise > et/ou >>
Pour rédiger les sorties d'erreurs tu utilises 2> et/ou 2>>

Pout regrouper les 2 sorties on utilise 2>&1 (commande qui ne fusionne pas les 2 sorties mais recopie simplement la sortie standard sur celle d'erreur)

Après il y a les rédirections avancées qui sont rarement utiisées.

"Ce post pourrait faire partie aussi du forum programmaion "


On peut utiliser les rédirections avancées ( n<, >n, >>n ) lorsqu'on construit par exemple un système qui repose sur des applications écrites en C, coordonnées par des scripts shell.
0
Merci de vos réponses
Ce que je ne comprends pas , c'est que la 2ème ligne qui s'affiche sur console n'est pas un ligne d'erreur.
En console j'ai :
"
Host [@IP] appears to be up.
MAC Address: [@MAC] (type machine)

" //pour chaque machine.

En Php j'ai seulement :
"
Host 170.60.248.1 appears to be up.

" //pour chaque machine.

De plus, j'ai déjà testé le 2>&1 dans mon exec() et le problème persiste... :/
0
résolu

#ls -l /tmp/
on voit que le user = wwwrun

modification du sudoers file, ajout des droits sur nmap à wwwrun, et roule ma poule!
0