IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Afficher tous les sous domaines d'un domaine donné


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut Afficher tous les sous domaines d'un domaine donné
    Bonjour,

    J'ai un gros souci, j'aimerai ecrire un script bash qui permet d'entrer un nom de domaine, exemple: www.free.fr et d'afficher tous les sous domaines du domaine entré puis effectuer un ping vers les sous domaines.

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Bonjour,

    Tu as besoin de la commande ping, de la manipulation de variable bash ou echo + cut et de la builtin read, donc:
    Cordialement.

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Bonjour,

    Tu as besoin de la commande ping, de la manipulation de variable bash ou echo + cut et de la builtin read, donc:
    Rhôôô, t'as oublié man ping
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par KEMAL2106 Voir le message
    un script bash qui permet (...) d'afficher tous les sous domaines du domaine entré
    ça n'est pas possible.

    j'ai un serveur DNS, dedans j'ai des machines qui ont un nom (rattaché au nom de domaine, comme "compta.domaine.net" par exemple ou "bureau-patron.domaine.net") mais je ne souhaite pas forcément que tout le monde puisse connaitre leur nom (même si elles ne sont pas accessibles depuis l'extérieur)

    historiquement une requête de type AXFR permettait de lister tous les domaines d'un serveur, mais ça ne fonctionne heureusement plus depuis longtemps, actuellement les techniques permettant de recenser les sous-domaines reposent sur des requêtes "simples" aux DNS, du parsing de résultats google et du bruteforce sur des sous-domaines jugés classiques/récurrents

    je rajouterai donc man host et/ou man dig pour compléter les réponses faites plus haut

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut exemple de code
    Bonjour, voici un exemple de code que j'ai realisé, mais il ne marche pas tres bien


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    !/bin/sh 
     
    echo -n "entrer le domaine:" 
      read dom 
     
    echo "les sous domaines sont:"  
     
     wget -q $dom 
     
     dom2="$(echo $dom | sed 's/www\.//')" $dom 
     cat index.html | grep -o "[a-z][a-z]*\."$dom2 | sort -u > sousdomains.txt  
     
     cat domains.txt  # affichage du fichier sousdomains.txt

    voici les resultats que j'attends du programme :

    entré un nom de domaine:   www.google.fr 
    Sous domaines appartenant a www.google.fr 
    on = repond au ping 
    off = ne repond pas au ping 
    books.google.fr => 209.85.229.100(on) 209.85.229.101(on) 209.85.229.102(on) 
    maps.google.fr => 72.14.235.104(on) 
    news.google.fr => 209.85.229.99(on) 209.85.229.104(on) 209.85.229.147(on) 
    video.google.fr => 209.85.229.100(on) 209.85.229.101(off) 209.85.229.102(on) 
    www.google.fr => 66.249.92.104(on)

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    [a-z][a-z]* est équivalent à [a-z]\+.

    cat domains.txt # affichage du fichier sousdomains.txt
    Il manque "sous". Là, tu n'affiches pas le bon fichier.

    Pour le reste, à toi de prendre ton programme pas-à-pas et voir où il ne donne pas le résultat attendu.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Pas testé ton programme, mais en bash (et je dis bien en bash) tu peux modifier ta ligne 10 par une syntaxe tel que la 2ème ligne ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ dom=www.google.fr
    $ dom2=${dom/www./}
    $ echo $dom
    www.google.fr
    $ echo $dom2
    google.fr
    Au pire, tu peux garder ta syntaxe, mais je pense que le $dom en fin de ligne 10 est de trop.
    Cordialement.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut pas de suite
    rien ne marche

    voici les résultats attendus


    entré un nom de domaine: www.google.fr

    Sous domaines appartenant a www.google.fr
    on = repond au ping
    off = ne repond pas au ping

    books.google.fr => 209.85.229.100(on) 209.85.229.101(on) 209.85.229.102(on)
    maps.google.fr => 72.14.235.104(on)
    news.google.fr => 209.85.229.99(on) 209.85.229.104(on) 209.85.229.147(on)
    video.google.fr => 209.85.229.100(on) 209.85.229.101(off) 209.85.229.102(on)
    www.google.fr => 66.249.92.104(on)

    En gros je vous explique le programme permettra de saisir un domaine, exemple: www.google.fr et va afficher par la suite les sous domaines du domaine saisi et faire un ping sur les sous domaines

  9. #9
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    On avait compris la première fois.

    En gros, je t'explique: si tu veux être débloqué, on t'aide; si tu veux qu'on travaille à ta place, tu n'es pas le bienvenu. À moins d'envoyer un chèque, rémunérant notre travail, que tu ne fournis pas.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Voici un bout de code qui fait la partie principale de ton besoin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ h=maps.google.fr
    $ echo -n "$h =>" ; for i in $(host $h | sed -n '/[0-9]\.[0-9]/s/.* //p'); do flags=$(ping -c1 -n $i | wc -l) ; flags=${flags/5/off} ; flags=${flags/6/on} ; echo -n " $i($flags)" ; done ; echo
    maps.google.fr => 173.194.40.131(on) 173.194.40.134(on) 173.194.40.130(on) 173.194.40.137(on) 173.194.40.135(on) 173.194.40.136(off) 173.194.40.142(on) 173.194.40.132(on) 173.194.40.128(on) 173.194.40.129(on) 173.194.40.133(on)
    Cordialement.

  11. #11
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    surtout que son truc ne marchera pour ainsi dire qu'avec son exemple de www.google.com (et encore)

    en gros pour trouver les sous-domaines tu pars du principe qu'on va entrer www.truc, ce qui est déjà faux, www étant une machine (ou un groupe de machines) dans le domaine truc, d'autre part tu requêtes sur le domaine avec wget, ce qui implique que la machine a forcément un serveur web accessible et qu'en plus sur la page web on trouve tous les sous-domaines

    au minimum la question était mal posée, mais il semble plus juste de dire que tu ne comprends pas ce que tu fais/le fonctionnement des réseaux

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Boujour,

    Quand j'execute le code ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    h=maps.google.fr
     echo -n "$h =>" ; for i in $(host $h | sed -n '/[0-9]\.[0-9]/s/.* //p'); do flags=$(ping -c1 -n $i | wc -l) ; flags=${flags/5/off} ; flags=${flags/6/on} ; echo -n " $i($flags)" ; done ; echo
    voila le resultat que j'ai : maps.google.fr => Bad substitution

    pouvez vous m'éclairer un peu s'il vous plait?

  13. #13
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Bonjour,

    voila le resultat que j'ai : maps.google.fr => Bad substitution
    ce n'est sûrement pas la totalité du message d'erreur !

    en attendant, tu peux remplacer tous tes flags=..., par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (( $(ping -c1 -n $i | wc -l) - 5 )) && flag=on || flag=off; echo "$i($flag)"
    et puis, un traitement ligne par ligne se fait avec une boucle while !
    parce qu'une boucle for traite ses "arguments" mot par mot.
    c'est une bonne pratique à adopter au plus tôt.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai essayé toujours rien

  15. #15
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    "toujours rien" quoi ?

    Citation Envoyé par N_BaH
    Citation Envoyé par KEMAL2106
    voila le resultat que j'ai : maps.google.fr => Bad substitution
    ce n'est sûrement pas la totalité du message d'erreur !
    a priori, tu devrais changer le shell utilisé par bash.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  16. #16
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Citation Envoyé par KEMAL2106 Voir le message
    Bonjour,

    J'ai essayé toujours rien
    Tu dois surement t'y prendre mal à la recopie, car en ce qui me concerne j'ai testé le code fourni par disedorgue, et il fonctionne très bien !

    Ou alors tu as un problème ailleurs qui n'a rien à voir avec le code, genre firewall ou autre.
    Citation Envoyé par disedorgue
    173.194.40.136(off)
    Et j'ai même cette machine qui est passée "on" depuis qu'il a posté
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  17. #17
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    code fourni par disedorgue
    <rainman>oh, oh !</rainman> j'aurais taclé un joueur de mon équipe, et marqué un but contre mon camp ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  18. #18
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Autant pour le positionnement de la valeur de la variable flags, je préfère ta suggestion, autant ici, passer par une boucle for me semble plus adéquate que le while...

    Mais bon, autant se passer de toutes ces boucles explicites ainsi que de variables inutiles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ h=book.google.fr
    $ echo "$h => "$(host $h | sed -n '/[0-9]\.[0-9]/{s/.* //;s/.*/echo -n & \&\& ping -c1 -n & | wc -l /e;s/6$/(on)/;s/5$/(off)/;p}')
    book.google.fr => 173.194.40.128(on) 173.194.40.131(on) 173.194.40.136(on) 173.194.40.135(on) 173.194.40.129(off) 173.194.40.130(on) 173.194.40.137(on) 173.194.40.142(on) 173.194.40.132(on) 173.194.40.134(off) 173.194.40.133(on)
    Mais, ici, je ne pense pas que cela va beaucoup aider un débutant à comprendre (surtout que l'on est variment sur du spécifique gnu)
    Cordialement.

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Merci encore, j'ai copié le code et voilà le resultat

    books.google.fr => 216.58.211.78(on)

    je n'ai qu'une seule adresse IP, et comment afficher les sous domaines?

  20. #20
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Peux-tu nous retourner le résultat de la commande suivante ?
    et ensuite de la commande suivante ?
    Il y avait une typo dans mon code qui rendait incohérent le résultat par rapport au code mais c'était juste l'exemple: J'avais mis dans h "books" et je mettais le retour pour un test où h avait "book".
    Mais ceci n'empêche pas le code de fonctionner
    Cordialement.

Discussions similaires

  1. Tous les sous domaine d'un domaine pointe sur la même IP
    Par olysmar2 dans le forum Domaines
    Réponses: 3
    Dernier message: 15/04/2015, 13h36
  2. Réponses: 1
    Dernier message: 19/03/2010, 09h41
  3. [MySQL] afficher tous les champs de la base de données
    Par cotede2 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/06/2009, 02h56
  4. Rediriger tous les sous domaines sauf le principal
    Par eMeRiKa dans le forum Apache
    Réponses: 7
    Dernier message: 27/05/2009, 01h25
  5. Réponses: 1
    Dernier message: 26/10/2006, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo