View Full Version : Script Whois di più IP su file TXT o CSV
spider81man
26-11-2019, 14:40
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
Se sei sotto linux usa il comando grep nel parsing
spider81man
26-11-2019, 15:03
Se sei sotto linux usa il comando grep nel parsing
Ciao,
si potrei farlo sotto LINUX, mi potrestmi mettere per bene il comando, perdonami sono un po impedito su queste cose :P
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...
spider81man
26-11-2019, 15:48
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?
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-howto-read-line-by-line-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"
spider81man
27-11-2019, 08:12
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.
spider81man
27-11-2019, 09:09
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-howto-read-line-by-line-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"
Guarda perdonami continuo a non capire come fare :D :D :D
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.
spider81man
27-11-2019, 10:03
Allora ho creato il file "ip_resolver.sh"
#!/bin/bash
for ip in ‘cat ip_list.txt’
do
echo $ip
‘whois $ip >> whois-results.txt’
done
Da shell di Linux, prima di eseguire il file bash, sono andato sul desktop ed ho dato le autorizzazioni al file stesso:
chmod u+x ip_resolver.sh
Sempre sul Desktop è presente il file “ip_list” contenente gli indirizzi da risolvere.
Quindi eseguo lo scrip:
./ip_resolver.sh
ma mi da il seguente errore:
.ip_resolver.sh: comando non trovato
Dove sbaglio? Sto eseguendo tutto da UBUNTU.
Grazie
forse i permessi 775 devi dare al file
spider81man
27-11-2019, 10:23
forse i permessi 775 devi dare al file
Ecco cosa mi risponde
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
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/notizie/how-to/bin-bash-bad-interpreter/
Oppure fai prima a prendere l'editor di linux (va bene il gedit) e cancellare e mettere i ritorni a capo correttamente
spider81man
27-11-2019, 10:46
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/notizie/how-to/bin-bash-bad-interpreter/
Oppure fai prima a prendere l'editor di linux (va bene il gedit) e cancellare e mettere i ritorni a capo correttamente
Allora ho ricreato il file da gedit, ora me lo fa lanciare ma mi da quest'altro errore
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#
whois è isntallato
togli via quegli apici che non servono a nulla.
Questo è un modo:
#!/bin/bash
for ip in $(cat ip_list.txt)
do
echo $ip
whois $ip >> whois-results.txt
done
questo un altro
#!/bin/bash
filename='ip_list.txt'
while read ip; do
whois $ip
done < $filename
Non li ho provati ma dovrebbero essere giusti
spider81man
27-11-2019, 12:36
Questo è un modo:
#!/bin/bash
for ip in $(cat ip_list.txt)
do
echo $ip
whois $ip >> whois-results.txt
done
questo un altro
#!/bin/bash
filename='ip_list.txt'
while read ip; do
whois $ip
done < $filename
Non li ho provati ma dovrebbero essere giusti
Guarda ho fatto così e mi funziona
for ip in $(cat ip_list.txt)
do
echo -n "$ip "
whois $ip | grep -Po '^NetName:\s+\K.*'
done > whois-results.txt
e mi tira fuori SOLO il "Netname" se il file "ip_list.txt" è così:
192.198.1.1
192.198.2.1
192.198.1.2
192.198.2.2
192.198.1.3
adesso invece mi piacerebbe fare la stessa cosa SE il file "ip_list.txt" fosse così:
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
ideee?
Grazie
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?
spider81man
27-11-2019, 13:09
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?
Gurda ho modificato cosi
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
e mi ha risposto cosi
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
Dove sbaglio
è 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. :)
spider81man
27-11-2019, 13:40
è 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. :)
ahahah si hai ragione ma sono in palla ed ho bisogno di aiuto :P
facendo così
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
il file whois-results.txt me lo da così
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
In pratica TOGLIE gli IP e poi non fa il whois.
Ripeto: pensa e rifletti.
Se sei in palla non vai da nessuna parte, manco con la pappa pronta.
Magari awk inizia a contare da 0, ma 0 corrisponde a tutta la linea e le colonne invece partono da 1... quindi anziche print $1 potresti..
spider81man
27-11-2019, 14:19
Guarda ho provato ad aggiungere un altro campo, quello "Country" e va bene sono che mi va a capo modifincando cosi
whois $ip | grep -Po '^NetName:\s+\K.*' && whois $ip | grep -Po '^Country:\s+\K.*'
Come faccio a non andare a capo dopo il NetName?
Grazie
Il comando 'tr' è tuo amico https://pubs.opengroup.org/onlinepubs/009695399/utilities/tr.html
tr -d '\r'
antonio338
14-01-2020, 22:23
https://www.nirsoft.net/utils/ipnetinfo.html
Copi incolli gli IP.
Esporti in CSV.
Con un foglio elettronico tieni solo le colonne di tuo interesse.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.