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.
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.
Bonjour,
Tu as besoin de la commande ping, de la manipulation de variable bash ou echo + cut et de la builtin read, donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part help read
Code : Sélectionner tout - Visualiser dans une fenêtre à part man cut
Cordialement.
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
ç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
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)
Bonjour
[a-z][a-z]* est équivalent à [a-z]\+.
Il manque "sous". Là, tu n'affiches pas le bon fichier.cat domains.txt # affichage du fichier sousdomains.txt
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.
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:
Au pire, tu peux garder ta syntaxe, mais je pense que le $dom en fin de ligne 10 est de trop.
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
Cordialement.
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
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.
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.
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
Boujour,
Quand j'execute le code ;
voila le resultat que j'ai : maps.google.fr => Bad substitution
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
pouvez vous m'éclairer un peu s'il vous plait?
Bonjour,
ce n'est sûrement pas la totalité du message d'erreur !voila le resultat que j'ai : maps.google.fr => Bad substitution
en attendant, tu peux remplacer tous tes flags=..., paret puis, un traitement ligne par ligne se fait avec une boucle while !
Code : Sélectionner tout - Visualiser dans une fenêtre à part (( $(ping -c1 -n $i | wc -l) - 5 )) && flag=on || flag=off; echo "$i($flag)"
parce qu'une boucle for traite ses "arguments" mot par mot.
c'est une bonne pratique à adopter au plus tôt.
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.
Et j'ai même cette machine qui est passée "on" depuis qu'il a postéEnvoyé par disedorgue
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
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:
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)
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)
Cordialement.
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?
Peux-tu nous retourner le résultat de la commande suivante ?
et ensuite de la commande suivante ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part host book.google.fr
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".
Code : Sélectionner tout - Visualiser dans une fenêtre à part host www.yahoo.fr
Mais ceci n'empêche pas le code de fonctionner
Cordialement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager