motif imprimé uniquement

0

J'essaie d'obtenir des versions pour des services dans un fichier gnmap. Une ligne typique ressemble à:

Host: 192.x.x.x ()    Ports: 21/open/tcp//ftp//HP JetDirect ftpd/, 23/open/tcp//telnet//HP JetDirect printer telnetd (No password)/, 80/open/tcp//http//HP-ChaiSOE 1.0 (HP LaserJet http config)/, 443/open/tcp//ssl|http//HP-ChaiSOE 1.0 (HP LaserJet http config)/, 515/open/tcp//printer///, 631/open/tcp//http//HP-ChaiSOE 1.0 (HP LaserJet http config)/, 7627/open/tcp//http//HP-ChaiSOE 1.0 (HP LaserJet http config)/, 9100/open/tcp/////, 14000/open/tcp//tcpwrapped///    Seq Index: 25   IP ID Seq: Incremental

Je dois faire correspondre des ports "ouverts" spécifiques et n'imprimer que l'expression correspondante. J'ai essayé:

cat file | sed -n "/ 80\/open\/tcp\/\*\/\*\/\*\/\*\//p"

J'ai besoin que le résultat soit:

80/open/tcp//http//HP-ChaiSOE 1.0 (HP LaserJet http config)/
blanchisseur
la source

Réponses:

2

Vous pouvez faire la même chose en utilisant grep avec l'option -o (--only-matching):

cat teste | grep -o "80\/open\/tcp\/[^,]*"
Alexandre
la source
0

Voici un moyen,

sed est |. *, 80 \ ([^,] * \). * | 80 \ 1 | ' 

et, pour éviter la correspondance, dites ' 8080' ici,

sed | s *. *, 80 \ / \ ([^,] * \). * | 80 / \ 1 | ' 

Mais, je pense, il existe une meilleure forme de sortie de NMAP qui vous facilitera la vie.
Et, vous trouverez des moyens plus exacts pour cette sortie grepable dans la documentation nmap.

nik
la source
En fait, un fichier gnmap est le fichier grepable. Grep saisit toute la ligne. Je n'ai besoin que de la sortie que j'ai énumérée ci-dessus. Malheureusement, la commande que vous avez listée n'entraîne pas l'impression du résultat recherché.
blanker