Abra o URL do script Bash

3

Eu tenho um arquivo de texto

Google.com
Youtube.com
Gmail.com
Yahoo.com

Estou tentando abri-los com o Lynx. Aqui está a tese.

Eu armazenarei todos esses links em um arquivo txt, digamos links.txt e então eu preciso abri-los com o Lynx e então terminar o Lynx usando kill.

Aqui, o código que eu escrevi, mas não está correto

for i in links.txt
do
lynx $i
sleep 10
pkill lynx
done

O que há de errado aqui?

    
por Ten-Coin 11.10.2013 / 09:59

2 respostas

5

Após várias iterações ...

for url in $(cat links.txt); do
    timeout 10 lynx "$url"
done

O Lynx está bloqueando (e tem que estar funcionando), então dormir não funciona adequadamente e ele também tenta prender stdin, o que torna as coisas da tubulação "interessantes" difíceis. Veja aqui as linhas de iteração em um arquivo .

O Lynx pode ser um pouco chato com seus prompts para permitir cookies. Você pode alterar suas configurações se for um problema ou pode passar o sinalizador -accept_all_cookies da seguinte forma:

for url in $(cat links.txt); do
     timeout 10 lynx -accept_all_cookies "$url"
done

Hoje aprendi sobre o comando timeout , por isso estou feliz.

Para imprimir um status no final, a única maneira que posso ver como verificar o URL é ok separadamente, assim:

for url in $(cat links.txt); do
     timeout 10 lynx -accept_all_cookies "$url"
     if [[ $(curl -o /dev/null --silent --head --write-out '%{http_code}\n' "$url") -eq "200" ]]; then
        echo "Getting $url successful"
     else
        echo "Getting $url unsuccessful"
     fi
done
    
por Oli 11.10.2013 / 10:10
1

Em seu script, a chamada lynx bloqueia o terminal e ele nunca chamará sleep 10 e pkill, porque o lynx sai apenas quando você pressionar "Q".

Então eu preferiria algo diferente. Por que você não usa o wget? Algo parecido com isto:

for url in $(cat links.txt); do
  wget -qO- $URL
  sleep 1
done

wget sai depois de baixar o link. O Lynx é mais como um navegador de console interativo (bloqueia o terminal), não é feito para scripts.

    
por chaos 11.10.2013 / 11:29

Tags