Comment faire un ping sur de multiples serveurs et avec le retour de l'adresse IP et les noms d'Hôtes à l'aide de script batch?
J'ai donc utiliser lot pour cela. En gros, le serveur de noms de domaine sont tous répertoriés dans un fichier txt. J'ai utilisé le code suivant ping sur tous les serveurs et de les afficher leurs résultats dans un txtfile.
For /f %%i in (testservers.txt) do ping -n 1 %%i >>pingtest.txt
Ci-dessus ping-tous les serveurs. Maintenant, je veux de sortie les adresses IP et les Noms d'HÔTE dans un fichier séparé. Comment puis-je faire cela?
Je sais que je peux utiliser une boucle for à la recherche pour des mots comme "TTL" et ensuite de la 3ème partie (pour l'IP) et des mots comme "PING" pour la deuxième jeton(nom d'hôte). Mais j'ai des erreurs et je ne peux l'afficher correctement. La raison pourquoi je veux à la sortie des ip et des noms d'Hôtes dans un autre fichier est de faire une liste des duvets et des serveurs.
Aide sera appréciée. 🙂
EDIT: Juste donc il n'est pas confus, je voulais laisser les gars, vous savez il y a 3 fichiers différents, testservers.txt a l'noms d'HÔTES en elle, pingtest.txt a résultats de la commande ping, et result.txt auront l'IPs avec un nom de domaine avec leur statut actuel vers le BAS ou vers le HAUT.
- stackoverflow.com/questions/3050898/... devrait t'aider
Vous devez vous connecter pour publier un commentaire.
Bien, c'est dommage que vous ne publiez pas votre propre code de trop, de sorte qu'il pourrait être corrigé.
De toute façon, voici ma propre solution:
L'extérieur de la boucle parcourt les hôtes et la boucle interne analyse le
ping
de sortie. Les deux premiersif
déclarations de gérer les deux cas possibles de résolution d'adresse IP:Si l'adresse IP de l'hôte ne peut pas être résolu, l'adresse est "l'ADRESSE de N/A".
Espère que cette aide.
ping
?Reply from 192.168.2.1: Destination host unreachable.
?pinging msn.com [23.101.196.141] Request timed out
donc IP est détectable et, en outre, l'hôte est parfaitement accessible à partir du navigateur.Analyse pingtest.txt pour chaque nom d'HÔTE et le résultat avec le lot est difficile parce que le nom et les résultats sont sur des lignes différentes.
Il est beaucoup plus facile pour tester le résultat (le code d'erreur retourné) de chaque impulsion de commande directement au lieu de rediriger vers un fichier. Il est aussi plus efficace pour joindre l'ensemble de la construction dans parens et de rediriger la sortie finale juste une fois.
nul
. +1 de toute façon.le problème avec ping est si l'hôte n'est pas vivant souvent votre machine locale sera de retour une réponse à la requête ping de l'hôte n'est pas disponible, ainsi que le code d'erreur de ping sera de 0 et de votre code sera exécuté dans l'erreur parce que la non-reconnaissance de l'état.
mieux de le faire de cette façon
de cette façon, vous recherchez un typique chaîne ttl qui est toujours dans le bien fait ping résultat et vérifier l'erreur sur ce findstr au lieu d'irriter ping
dans l'ensemble, cela ressemble à ceci:
Essayer cette
J'ai travaillé sur le code donné plus tôt par Eitan-T et retravaillée pour une sortie au format de fichier CSV. Les résultats dans le code précédent n'a pas toujours été de donner des valeurs correctes ainsi donc, je l'ai amélioré.
testservers.txt
résultats.csv
pingtest.chauve-souris
@echo off
ensemble workdir={votre travail dir. par exemple C:\work }
ensemble iplist=%workdir%\IP-list.txt
Cela fonctionnait très bien je viens de rajouter l'option-a de la commande ping pour résoudre le
nom d'hôte. Grâce https://stackoverflow.com/users/4447323/wombat
@echo off
setlocal enabledelayedexpansion
ensemble FICHIER_SORTIE=résultat.csv
Cela fonctionne, pour l'espagnol, le système d'exploitation.
Script accepte deux paramètres: