Arquivo de texto sendo identificado como binário

2

Antecedentes

Eu tenho usado lynx por alguns anos para fazer o dump automaticamente (via cron), processo (usando awk , sed e tr ), então mail (bsd-mailx) o conteúdo de uma página da web. Tem funcionado muito bem - até recentemente, quando o certificado de segurança do site expirou e os administradores da web idiotas não se preocuparam em atualizá-lo. Agora, a solução automatizada está falhando devido a lynx balking no certificado e esperando a entrada do usuário antes de continuar.

Tentativa de solução

Então, comecei a procurar outras soluções. curl parecia promissor, pois tinha uma opção --insecure . Na verdade, usando-o, posso baixar o texto da página e processá-lo em uma saída de texto mais padrão, que poderia entrar no corpo de um e-mail, depois salvá-lo em um arquivo.

O problema que estou tendo com isso, entretanto, é que esse arquivo está sendo visto pelo sistema como charset=binary (de acordo com a saída de file -i ) - possivelmente porque ele contém texto em um idioma não latino. alfabeto (cirílico). Portanto, quando eu tento cat o conteúdo do arquivo no corpo de um email que eu envio para mim, o programa de email (bsd-mailx) quer tratá-lo como um anexo - não o que eu quero - em vez de inserindo-o no corpo do e-mail.

Como estou com dificuldade em entender todos os problemas envolvidos, não estou encontrando uma solução até o momento.

Perguntas

  • Existe alguma maneira de fazer com que o arquivo não seja salvo / identificado como binário?
  • Ou, de alguma forma, convertê-lo de binário para algum charset válido?

    • Observe que, se eu copiar o conteúdo do arquivo para a área de transferência, cole-o em um novo arquivo de texto que criei. Tudo funciona: file -i shows charset=utf-8 e com êxito cat o conteúdo em corpo de um e-mail sem que ele seja tratado como um anexo. Mas estou procurando algo que eu possa automatizar como cron job, então essa não é realmente a solução que espero.

PS: lembro de ter tido um problema semelhante em lynx , mas isso foi resolvido, IIRC, adicionando a opção -display_charset=UTF-8 ao invocar lynx .

Atualizar

Aqui, usando a sugestão do Lucas, é o que funciona:
curl --insecure https://my.url.html >/home/user/file.html lynx -display_charset=UTF-8 -dump -nonumbers -nolist /home/user/file.html | sed fu begin | sed fu end | tr fu >/home/user/file.txt cat /home/user/file.txt | mail -s "Today's file" [email protected]
Um processo de dois estágios muito complexo e tenho certeza que deve haver maneiras fáceis de otimizar e tornar isso mais elegante, mas ele faz o trabalho. Alguém pode oferecer melhorias? Obviamente, sed fu e tr fu são substitutos dos comandos sed e tr que estou usando, que são principalmente removendo tags html e espaço em branco estranho.

    
por MJiller 23.07.2018 / 21:20

1 resposta

2

Use HTTPie em vez de curl e lynx . Este cliente HTTP possui a opção --verify no para pular a verificação do certificado SSL. É muito simples usar HTTPie:

http --verify no -F https://google.com

Consulte também o site HTTPie e alguns exemplos interessantes usando. Mais informações sobre as opções do HTTPie:

man http
    
por 23.07.2018 / 22:03