Ho un lungo elenco di URL sul mio sito Web elencati in un file di testo separato di ritorno a capo. Quindi per esempio:
- http: /www.mysite.com/url1.html
- http: /www.mysite.com/url2.html
- http: /www.mysite.com/url3.html
Devo generare una serie di wget paralleli per colpire due volte ciascun URL, controllare e recuperare una determinata intestazione e quindi salvare i risultati in un array che voglio produrre in un bel report.
Ho parte di ciò che voglio usando il seguente comando xargs:
xargs -x -P 20 -n 1 wget --server-response -q -O - --delete-after<./urls.txt 2>&1 | grep Caching
La domanda è: come eseguire questo comando due volte e memorizzare quanto segue:
- L'URL ha colpito
- Il primo risultato del grep contro l'intestazione della cache
- Il 2 ° risultato del grep contro l'intestazione della cache
Quindi l'output dovrebbe assomigliare a:
=====================================================
http:/www.mysite.com/url1.html
=====================================================
First Hit: Caching: MISS
Second Hit: Caching: HIT
=====================================================
http:/www.mysite.com/url2.html
=====================================================
First Hit: Caching: MISS
Second Hit: Caching: HIT
E così via.
Ordinare che vengano visualizzati gli URL non è necessariamente un problema, purché le intestazioni siano associate all'URL.
A causa del numero di URL che devo colpire più URL in parallelo non in serie, altrimenti ci vorrà troppo tempo.
Il trucco è come ottenere più scommesse parallele E memorizzare i risultati in modo significativo. Non sono sposato con l'uso di un array se esiste un modo più logico di farlo (magari scrivendo in un file di registro?)
Qualche guru della bash ha qualche suggerimento su come procedere?
\r
), non dalle nuove linee (\n
) o dallo stile di Windows(\r\n)
? È un file di un vecchio Mac?