[BASH] Wget e connect timeout

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

[BASH] Wget e connect timeout

Messaggioda crack001 » lunedì 25 giugno 2012, 15:12

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....
crack001 Non specificato
Prode Principiante
 
Messaggi: 123
Iscrizione: ottobre 2007

Re: [BASH] Wget e connect timeout

Messaggioda LoStressato+ » lunedì 25 giugno 2012, 15:54

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) ...
LoStressato+ Non specificato
Prode Principiante
 
Messaggi: 11
Iscrizione: maggio 2012
Distribuzione: 11.10
Desktop: 11.10

Re: [BASH] Wget e connect timeout

Messaggioda crack001 » lunedì 25 giugno 2012, 16:16

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?
crack001 Non specificato
Prode Principiante
 
Messaggi: 123
Iscrizione: ottobre 2007

Re: [BASH] Wget e connect timeout

Messaggioda crap0101 » lunedì 25 giugno 2012, 17:36

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.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101 Maschile
Rampante Reduce
Rampante Reduce
 
Messaggi: 7064
Iscrizione: ottobre 2007
Località: TO
Distribuzione: trisquel
Desktop: LXDE

Re: [BASH] Wget e connect timeout

Messaggioda crack001 » lunedì 25 giugno 2012, 18:55

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
crack001 Non specificato
Prode Principiante
 
Messaggi: 123
Iscrizione: ottobre 2007

Re: [BASH] Wget e connect timeout

Messaggioda crap0101 » lunedì 25 giugno 2012, 22:07

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?
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101 Maschile
Rampante Reduce
Rampante Reduce
 
Messaggi: 7064
Iscrizione: ottobre 2007
Località: TO
Distribuzione: trisquel
Desktop: LXDE

Re: [BASH] Wget e connect timeout

Messaggioda crack001 » martedì 26 giugno 2012, 21:16

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.
crack001 Non specificato
Prode Principiante
 
Messaggi: 123
Iscrizione: ottobre 2007

Re: [BASH] Wget e connect timeout

Messaggioda crap0101 » martedì 26 giugno 2012, 22:51

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.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101 Maschile
Rampante Reduce
Rampante Reduce
 
Messaggi: 7064
Iscrizione: ottobre 2007
Località: TO
Distribuzione: trisquel
Desktop: LXDE

Re: [BASH] Wget e connect timeout

Messaggioda Belgarath » venerdì 29 giugno 2012, 17:37

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 :)
Belgarath Non specificato
Prode Principiante
 
Messaggi: 25
Iscrizione: giugno 2012
Distribuzione: ubuntu 12.0.1

Re: [BASH] Wget e connect timeout

Messaggioda crack001 » mercoledì 4 luglio 2012, 15:16

guarda se puoi mi faresti un favore grandissimo xD scusa il ritardo ma ho avuto problemi con la connessione
crack001 Non specificato
Prode Principiante
 
Messaggi: 123
Iscrizione: ottobre 2007

Re: [BASH] Wget e connect timeout

Messaggioda Belgarath » mercoledì 4 luglio 2012, 15:29

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
Belgarath Non specificato
Prode Principiante
 
Messaggi: 25
Iscrizione: giugno 2012
Distribuzione: ubuntu 12.0.1

Re: [BASH] Wget e connect timeout

Messaggioda crack001 » giovedì 5 luglio 2012, 13:24

ho capito grazie...ora vedo un pò il codice e vediamo se riesco a fare qualcosa...ti ringrazio
crack001 Non specificato
Prode Principiante
 
Messaggi: 123
Iscrizione: ottobre 2007


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: treled e 5 ospiti