Pagina 1 di 1

[BASH] Wget e connect timeout

Inviato: lunedì 25 giugno 2012, 15:12
da crack001
Salve gente, ho provato a cercare sul forum ma non ho trovato niente di interessante....ho un file txt che contiene parecchi indirizzi IP, ora devo fare uno script che mi scarica il contenuto di ogni indirizzo IP. Questi indirizzi IP sono stati in precedenza filtrati quindi tutti quanti hanno la porta 80 aperta. il problema è che chiaramente parecchi indirizzi IP sono bloccati da login, oppure non permettono la connessione, mentre altri sono aperti e quindi è possibile scaricare il contenuto.

il contenuto lo scarico con questo

Codice: Seleziona tutto

 wget -r -t 1 --accept .html,.xml,.txt -nc -T 10 $ip
cosi dovrebbe scaricarmi ricorsivamente il contenuto dell'IP, nel caso in cui da errore non riprova perché ho -t 1 che mi blocca i test a 1, mi accetta solo file html, xml e tc, e nel caso in cui si blocca non riscarica file scaricati in precedenza. Il problema è che se un indirizzo IP richiede troppo tempo per la connessione, rimane li ad aspettare una risposta, che alcune volte impiega tantissimo ad arrivare, quindi vorrei limitare il tempo di attesa di connessione. Ho letto che -T mi imposta tutte e 3 le opzioni di timeout

dns-timeout
read-timeout
connect-timeout

solo che non è cosi...ho anche provato solo con --connect-timeout=10 ma comunque lo script rimane in attesa per parecchio....consigli? :muro:

e in pù nemmeno l'accept mi filtra quello che deve scaricare, visto che accetta di tutto, gif, jpg, js etc....

Re: [BASH] Wget e connect timeout

Inviato: lunedì 25 giugno 2012, 15:54
da LoStressato+
Ciao crack ,
mi sembra veramente strano che settando anche manualmente --connect-timeout=<sec> non funzioni.... e invece
hai provato proprio a settare --wait=<sec> ?...(non ti assicuro niente perchè questo comando mi è capitato sotto il naso mesi fa ma tra le varie opzioni mi sembrava ci fosse quest'opzione...)
Se le opzioni di wget non ti dessero segni di vita ho paura che dovrai ingegnarti sul discriminare le connessioni che richiedono più di tot secondi di connessione ...magari con uno script che continua a lavorare in parallelo che banalmentte sospende lui la connessione (questo in linea di principio) ...

Re: [BASH] Wget e connect timeout

Inviato: lunedì 25 giugno 2012, 16:16
da crack001
il problema è che la wait non posso usarla, perché io devo scartare IP che mi danno lunghi tempi di connessione, con la wait lui si mette in attesa, superati i secondi della wait comunque lo scarta, anche se la connessione è partita ed ha iniziato a scaricare il contenuto. Io ho provato mettento

Codice: Seleziona tutto

--connet-timeout=10
però il risultato non cambia, in questo modo se un ip in fase di connessione supera i 10 secondi deve passare al succevviso, cioè la wget termina per quell'IP, e continua lo script in bash, che riporta al successivo IP del file, invece non è cosi...continua fino a quando wget non si connette. Invece per il problema dell'accept? scrivo bene la sintassi della lista di estensioni da accettare?

Re: [BASH] Wget e connect timeout

Inviato: lunedì 25 giugno 2012, 17:36
da crap0101
riguardo accept, penso devi scrivere le semplici estensioni (cioè senza il punto), ovvero tipo

Codice: Seleziona tutto

--accept html,xml
non vorrei che il '.' venga considerato come carattere speciale (allo stesso modo di * e ?) causando l'interpretazione degli elementi come pattern anzichè suffissi.

Re: [BASH] Wget e connect timeout

Inviato: lunedì 25 giugno 2012, 18:55
da crack001
crap0101 ha scritto:riguardo accept, penso devi scrivere le semplici estensioni (cioè senza il punto), ovvero tipo

Codice: Seleziona tutto

--accept html,xml
non vorrei che il '.' venga considerato come carattere speciale (allo stesso modo di * e ?) causando l'interpretazione degli elementi come pattern anzichè suffissi.

Allora, accept ho risolto, era come dicevi tu...il problema resta il timeout, se io metto -T 10 dovrebbe tentare la connessione, e se supera i 10 secondi la blocca...invece questo non succede, superati i 10 secondi rimane in attesa fino a quando non si stabilisce la connessione

Re: [BASH] Wget e connect timeout

Inviato: lunedì 25 giugno 2012, 22:07
da crap0101
strano, fa *sempre* così o solo con qualche IP?
Se lo fa solo ogni tanto, magari posta l'ip col quale non funziona, altrimenti non importa.
Inoltre, qual'è la versione di wget?

Re: [BASH] Wget e connect timeout

Inviato: martedì 26 giugno 2012, 21:16
da crack001
Si fa sempre cosi, in pratica se wget impiega troppo tempo a stabilire la connessione io voglio che passa all'ip successivo presente nel file, invece non lo fa. anche se metto -T o --connect-timeout.

La versione di wget penso sia l'ultima perché ho fatto l'upgrade al sistema poche settimane fa quindi se non è l'ultima sarà sicuramente una recente ma non credo sia quello il problema sinceramente.

Re: [BASH] Wget e connect timeout

Inviato: martedì 26 giugno 2012, 22:51
da crap0101
io invece ti sugggrirei di controllare la versione. perche a me (con indirizzi inventati e inisistenti) funziona come ci si aspetta. Oppure, come dicevo, posta un paio di ip che utilizzi nella prova e vediamo se dà problemi.

Re: [BASH] Wget e connect timeout

Inviato: venerdì 29 giugno 2012, 17:37
da Belgarath
io ho sviluppato uno script di controllo per poter identificare se gli indirizzi inseriti nelle variaili siano o meno raggiungibili... se puo interessarti ti posto il codice :)

Re: [BASH] Wget e connect timeout

Inviato: mercoledì 4 luglio 2012, 15:16
da crack001
guarda se puoi mi faresti un favore grandissimo xD scusa il ritardo ma ho avuto problemi con la connessione

Re: [BASH] Wget e connect timeout

Inviato: mercoledì 4 luglio 2012, 15:29
da Belgarath

Codice: Seleziona tutto

#! /bin/bash

# Crea il log del risultato del ping
# Viene fatto partire in automatico da crontab impostando 
# i paramentri su ( 00 * * * * /"pat di rifermento)
# Per controllare l'esucuzione automatica usare 
# sudo tail -f /var/log/syslog
# Per bloccare il controllo disabilitare l'esecuzione da crontab 



IP1="xx.xx.xx.xx" 
IP2="yy.yy.yy.yy"
IP3="zz.zz.zz.zz"
LOG="/Home/usr/prp.log"	

for ip in  $IP1 $IP2 $IP3; do
	if [ `ping -c 5 $ip | grep "ttl=" | wc -l` == 5 ]; 
		then
			echo `date --date=now "+%Y-%m-%d %H:%M:%S"`" test $ip ok" >> $LOG
		else
			echo `date --date=now "+%Y-%m-%d %H:%M:%S"`" test $ip non raggiungibile" >> $LOG
	fi
done 
il codice appunto genera anche il log con elenco delle prove effettuate... purtroppo non sono riuscito a configurarlo bene quindi il log funziona a mano ma non con crontab

Re: [BASH] Wget e connect timeout

Inviato: giovedì 5 luglio 2012, 13:24
da crack001
ho capito grazie...ora vedo un pò il codice e vediamo se riesco a fare qualcosa...ti ringrazio