2009-12-03 6 views
0

Je dois écrire un script bash qui prendra un fichier de sortie grepable nmap qui affiche les adresses IP avec le port 80 ouvert et copier les adresses IP qui ont le port 80 ouvert vers un autre fichier texte. La sortie ressemble à ceci:Comment écrire un script bash pour rechercher des adresses IP dans un fichier et les écrire dans un autre fichier?

# Nmap 4.76 scan initiated Thu Dec 3 13:36:29 2009 as: nmap -iL ip.txt -p 80 -r -R -PN --open -oA output 
Host: 192.168.1.100() Status: Up 
Host: 192.168.1.100() Ports: 80/open/tcp//http/// 
Host: 192.168.1.100() Status: Up 
# Nmap done at Thu Dec 3 13:36:29 2009 -- 3 IP addresses (3 hosts up) scanned in 0.28 seconds 

Je suis assez nouveau pour les scripts bash donc je ne suis pas sûr où commencer avec cela. Si vous pouvez m'aider avec ce script ce serait très apprécié.

Répondre

2

cela peut être réduit à un appel awk:

awk '/80\/open/{print $2}' infile > iplist_port_80 
1

Utilisez grep et sed/awk

grep -e '80/open/tcp' infile | awk '{print $2}' | sort -u > outfile 

serait ma première tentative.

+0

Vous n'avez pas besoin de rediriger le fichier dans 'grep' - il prendra le nom du fichier comme argument. –

+0

@Dennis - Je plaide "pépin de cerveau". Fixe, merci. – retracile

1

ne pas être familier avec l'invocation nmap et le format de sortie, mais encore, cela devrait fonctionner:

nmap | grep -e 'Ports:.80\/' |sed 's/Host:.//;s/.(.*//'|sort -u > out 
+0

Vous devriez être capable de combiner ces deux invocations de 'sed' en une seule (peut-être avec plusieurs clauses' -e'). –

+0

@Dennis Williamson: vous avez raison, deux seds c'est trop – catwalk

Questions connexes