Testes de êxito / reprovação para cURL (não execute a segunda linha se a primeira linha falhar)

1

De acordo com Using " & & " não é eficaz para o formulário de envio cURL (não execute a segunda linha se a primeira linha falhar)

No código abaixo; primeira linha é enviar onda segunda linha é para enfileirar:

curl -b cookies.txt \
    -d title="$(sed '1,/sblmtitle/d;/slpstitle/,$d' sedut.html)" \
    -d taxonomy%5Btags%5D%5B1%5D="$(
        sed '1,/sblmkategori/d;/slpskategori/,$d' sedut.html
    )" \
    -d teaser_include=1 \
    -d body="$(sed '1,/sblmkonten/d;/slpskonten/,$d' sedut.html)" \
    -d field_source%5B0%5D%5Burl%5D="$(
        sed '1,/sblmurl/d;/slpsurl/,$d' sedut.html
    )" \
    -d changed= \
    -d form_build_id=form-424f851ad50bd4781c8c25ab7efd5c4c \
    -d form_token=0e7cc7437faf816f1ecd96087286bda9 \
    -d form_id=post_node_form \
    -d op=Save http://www.web.org/submit/post &&
for file in $(ls *.html | sort -r | tail -1); do
    mv $file sedut.html
done

Se cURL não enviar, ele imprimirá sedut.html do conteúdo. Se cURL sucesso for enviado, ele não imprimirá nada.

Mas cURL sempre dá 0 , não importa se foi bem-sucedido ou falhou no envio.

Acho que o melhor fluxo de trabalho é "Se cURL imprimir nada, executar segunda linha" e "Se cURL imprimir algo, não executar segunda linha"

Acabei de procurar o comando linux if , mas ainda não tenho ideia de como implementar isso porque o exemplo tem casos diferentes.

    
por Kamdar Nais 06.10.2011 / 06:10

1 resposta

2

Então você encontra a chave aqui, se a saída do curl for diferente, então você pode testar. Primeiro você pode direcionar isso para um arquivo. Em seguida, você pode aproveitar a opção -s do teste:

-s file True if file exists and has a size greater than zero.

Aqui está um código de exemplo:

curl -b cookies.txt ... -o /tmp/curl_output
if [ -s /tmp/curl_output ]; then
  do failure stuff here
else
  do successful stuff here
fi

Outra implementação por motivos acadêmicos:

if curl -b cookies.txt ... 2>&1 | grep 'some line from sedut.html' >/dev/null 2>&1; then 
  do failure stuff here
else
  do successful stuff here
fi
    
por 06.10.2011 / 09:14