|
|
|
|
Strumenti |
26-11-2019, 14:40 | #1 |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Script Whois di più IP su file TXT o CSV
Ciao a tutti,
ho un file .txt, ricavato da un file CSV, con all'interno degli IP, adesso dovrei fare il Whois di ogni IP ma, del WHOIS, mi servirebbe SOLO la parte in cui mi dice l'Internet Service Provider, quindi non tutte le informazioni. Abbiamo creato un file .bat che lo fa ma genera tutte le informazioni e non ci serve. Qualcuno potrebbe aiutarci in tal senso? Grazie |
26-11-2019, 15:01 | #2 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2990
|
Se sei sotto linux usa il comando grep nel parsing
|
26-11-2019, 15:03 | #3 |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
|
26-11-2019, 15:43 | #4 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2990
|
Puoi farlo anche sotto windows, col porting di grep sotto win32.
Non ho idea di cosa sottoporti: il comando è "grep" e se gli passi i parametri farà quello che gli dici... Ma io non ho la più pallida idea di cosa gli passi quindi potrei dirti grep "IP" ma non ho idea se su quella riga passi la parola IP... |
26-11-2019, 15:48 | #5 |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Metti un file TXT con le segnueti righe:
192.198.1.1;32980 (dopo il ";" è la porta) 192.198.1.2;19302 192.198.1.3;32980 192.198.1.4;19302 192.198.1.5;32980 192.198.1.6;19302 Che comando dovrei dare secondo te per far leggere il file, fare fare il WOHIS e far stampare SOLO l'ISP accanto all'IP? |
27-11-2019, 08:01 | #6 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2990
|
Io ti do i suggerimenti.. lo script completo te lo lascio fare a te.
Parliamo in ambiente linux.. Step uno leggere il file ( https://www.cyberciti.biz/faq/unix-h...ine-from-file/ ) Step due passarlo al comando whois (se esegui solo il whois ti darà l'elenco dei parametri, credo che il -c sia quello che ti serve: trova la corrispondenza più specifica contenente un attributo mnt-irt) Quello che non capisco è a cosa ti serva la porta in quel file... se devi troncarla basta usare il comando "cut" |
27-11-2019, 08:12 | #7 |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Cercando ho trovato questa funzione
#!/bin/bash while read ip do whois -r $ip done<ip_list a quanto ho capito devo 1) creare un file chiamato ip_list e metterci gli indirizzi IP 2) creare questo script ".sh" ed eseguirlo. |
27-11-2019, 09:09 | #8 | |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Quote:
La posta potrebbe servirmi per dei controlli ma la posso anche eliminare. Ho creato un file "log_test.txt" dove ci sono gli IP elencati sopra, come posso fare ti prego aiutami. |
|
27-11-2019, 10:03 | #9 |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Allora ho creato il file "ip_resolver.sh"
Codice:
#!/bin/bash for ip in ‘cat ip_list.txt’ do echo $ip ‘whois $ip >> whois-results.txt’ done Codice:
chmod u+x ip_resolver.sh Quindi eseguo lo scrip: Codice:
./ip_resolver.sh Codice:
.ip_resolver.sh: comando non trovato Grazie |
27-11-2019, 10:04 | #10 |
Utente sospeso
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 8133
|
forse i permessi 775 devi dare al file
|
27-11-2019, 10:23 | #11 |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Ecco cosa mi risponde
Codice:
root@Francesco-Latitude-E6230:/home/cesco/Scrivania# chmod 775 ip_resolver.sh root@Francesco-Latitude-E6230:/home/cesco/Scrivania# ./ip_resolver.sh bash: ./ip_resolver.sh: /bin/bash^M: interprete errato: File o directory non esistente |
27-11-2019, 10:38 | #12 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2990
|
Perchè hai creato il file in windows (il .sh) e poi lo hai messo in linux.
E si porta dietro la "sporcaria" dei terminatori. Così risolvi: https://www.caronteconsulting.com/no...d-interpreter/ Oppure fai prima a prendere l'editor di linux (va bene il gedit) e cancellare e mettere i ritorni a capo correttamente |
27-11-2019, 10:46 | #13 | |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Quote:
Codice:
root@Francesco-Latitude-E6230:/home/cesco/Scrivania# ./ip_resolver.sh ‘cat ./ip_resolver.sh: riga 5: ‘whois: comando non trovato Ip_list.txt’ ./ip_resolver.sh: riga 5: ‘whois: comando non trovato root@Francesco-Latitude-E6230:/home/cesco/Scrivania# |
|
27-11-2019, 12:18 | #14 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2990
|
togli via quegli apici che non servono a nulla.
|
27-11-2019, 12:21 | #15 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2990
|
Questo è un modo:
Codice:
#!/bin/bash for ip in $(cat ip_list.txt) do echo $ip whois $ip >> whois-results.txt done Codice:
#!/bin/bash filename='ip_list.txt' while read ip; do whois $ip done < $filename |
27-11-2019, 12:36 | #16 | |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Quote:
Codice:
for ip in $(cat ip_list.txt) do echo -n "$ip " whois $ip | grep -Po '^NetName:\s+\K.*' done > whois-results.txt Codice:
192.198.1.1 192.198.2.1 192.198.1.2 192.198.2.2 192.198.1.3 Codice:
01/01/2019 17:57;192.198.1.1;32980 ;192.198.2.1;32980 (Data ed ora;IP;PORTA;IP;PORTA) 01/01/2019 17:57;192.198.1.2;19302;192.198.2.2;19302 01/01/2019 17:57;192.198.1.3;32980;192.198.2.3;19302 01/01/2019 17:57;192.198.1.4;19302;192.198.2.4;19302 01/01/2019 17:57;192.198.1.5;32980;192.198.2.5;19302 01/01/2019 17:57;192.198.1.6;19302192.198.6.6;19302 Grazie |
|
27-11-2019, 12:50 | #17 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2990
|
anzichè cat, usa awk
"awk -F; '{print $1,$3}' ip_list.txt" Dando per scondata che sia sempre il secondo e quarto campo separati da ; Ma a me sfugge perchè hai un input così.. non sarebbe più semplice lavorare sul come ottieni tale lista? |
27-11-2019, 13:09 | #18 | |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Quote:
Codice:
for ip in $(awk -F; '{print $1,$3}' ip_list.txt) do echo -n "$ip " whois $ip | grep -Po '^NetName:\s+\K.*' done > whois-results.txt Codice:
root@Francesco-Latitude-E6230:/home/cesco/Scrivania/Ip_Resolver2# ./ip_resolver.sh awk: l'opzione richiede un argomento -- F Uso: awk [opzioni in stile POSIX o GNU] -f file-prog. [--] file ... Usage: awk [opzioni in stile POSIX o GNU] [--] 'programma' file ... Opzioni POSIX: opzioni lunghe GNU: (standard) -f fileprog --file=file-prog. -F fs --field-separator=fs -v var=valore --assign=var=valore Opzioni brevi: opzioni lunghe GNU: (estensioni) -b --characters-as-bytes -c --traditional -C --copyright -d[file] --dump-variables[=file] -D[file] --debug[=file] -e 'testo-del-programma' --source='testo-del-programma' -E file --exec=file -g --gen-pot -h --help -i include_file --include=include_file -l libreria --load=libreria -L[fatal|invalid] --lint[=fatal|invalid] -M --bignum -N --use-lc-numeric -n --non-decimal-data -o[file] --pretty-print[=file] -O --optimize -p[file] --profile[=file] -P --posix -r --re-interval -S --sandbox -t --lint-old -V --version Per segnalare problemi, vedi nodo `Bugs' in `gawk.info', oppure la sezione `Reporting Problems and Bugs' nella versione a stampa. Problemi di traduzione, segnalare ad: azc100@gmail.com. gawk è un linguaggio per scandire e processare espressioni. Senza parametri, legge da 'standard input' e scrive su 'standard output'. Esempi: gawk '{ sum += $1 }; END { print sum }' file gawk -F: '{ print $1 }' /etc/passwd ./ip_resolver.sh: riga 1: {print $1,$3}: comando non trovato |
|
27-11-2019, 13:32 | #19 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2990
|
è il ; che rompe, mettici un escape davanti
awk -F\; '{print $1,$3}' ip_list.txt Un consiglio: senza ogni volta chiedere AIUTO AIUTO, ragiona su quello che stai facendo. |
27-11-2019, 13:40 | #20 | |
Member
Iscritto dal: Nov 2007
Messaggi: 233
|
Quote:
facendo così Codice:
for ip in $(awk -F\; '{print $1,$3}' ip_list.txt) do echo -n "$ip " whois $ip | grep -Po '^NetName:\s+\K.*' done > whois-results.txt Codice:
01/01/2019 17:57 32980 01/01/2019 17:57 19302 01/01/2019 17:57 32980 01/01/2019 17:57 19302 01/01/2019 17:57 32980 01/01/2019 17:57 19302 |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:06.