[BASH] Wget e connect timeout

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
crack001
Prode Principiante
Messaggi: 125
Iscrizione: domenica 21 ottobre 2007, 18:01

[BASH] Wget e connect timeout

Messaggio 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....
LoStressato+
Prode Principiante
Messaggi: 11
Iscrizione: giovedì 24 maggio 2012, 13:41
Desktop: 11.10
Distribuzione: 11.10

Re: [BASH] Wget e connect timeout

Messaggio 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) ...
crack001
Prode Principiante
Messaggi: 125
Iscrizione: domenica 21 ottobre 2007, 18:01

Re: [BASH] Wget e connect timeout

Messaggio 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?
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [BASH] Wget e connect timeout

Messaggio 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.
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
crack001
Prode Principiante
Messaggi: 125
Iscrizione: domenica 21 ottobre 2007, 18:01

Re: [BASH] Wget e connect timeout

Messaggio 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
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [BASH] Wget e connect timeout

Messaggio 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?
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
crack001
Prode Principiante
Messaggi: 125
Iscrizione: domenica 21 ottobre 2007, 18:01

Re: [BASH] Wget e connect timeout

Messaggio 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.
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [BASH] Wget e connect timeout

Messaggio 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.
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
Belgarath
Prode Principiante
Messaggi: 25
Iscrizione: giovedì 7 giugno 2012, 9:39
Distribuzione: ubuntu 12.0.1

Re: [BASH] Wget e connect timeout

Messaggio 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 :)
crack001
Prode Principiante
Messaggi: 125
Iscrizione: domenica 21 ottobre 2007, 18:01

Re: [BASH] Wget e connect timeout

Messaggio da crack001 »

guarda se puoi mi faresti un favore grandissimo xD scusa il ritardo ma ho avuto problemi con la connessione
Belgarath
Prode Principiante
Messaggi: 25
Iscrizione: giovedì 7 giugno 2012, 9:39
Distribuzione: ubuntu 12.0.1

Re: [BASH] Wget e connect timeout

Messaggio 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
crack001
Prode Principiante
Messaggi: 125
Iscrizione: domenica 21 ottobre 2007, 18:01

Re: [BASH] Wget e connect timeout

Messaggio da crack001 »

ho capito grazie...ora vedo un pò il codice e vediamo se riesco a fare qualcosa...ti ringrazio
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 9 ospiti