Pular para o conteúdo

Erro estranho com Curl quando executado pelo Cron [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Erro estranho com Curl quando executado pelo Cron [RESOLVIDO]

Enviado em 19/09/2017 - 17:05h

Olá pessoal,

tenho um script que atualiza meu IP no CloudFlare sempre que o mesmo altera, este script roda no Cron a cada 5 minutos e somente se o IP mudou que ele segue a rotina.
Porém quando o script é executado pelo Cron não da certo, somente se eu executar ele manualmente que atualiza meu IP no CloudFlare.


#!/bin/sh
auth_email="meu_email"
auth_key="minha_key"
zone_name="meudominio.com"
record_name="zonaaatualizar.meudominio.com"
zone_identifier=$(curl -k -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone_name"; -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | cut -f 3 -d: | cut -f 1 -d, | sed 's/"//g')
record_identifier=$(curl -k -s -X GET "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records?name=$record_name"; -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | cut -f 3 -d: | cut -f 1 -d, | sed 's/"//g')
GETcloudflare=`/usr/local/bin/./curl -k -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records/$record_identifier"; -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" --data "{\"id\":\"$zone_identifier\",\"type\":\"A\",\"name\":\"$record_name\",\"content\":\"$IPATUAL\"}"`
sendmail.sh $GETcloudflare


Quando executado pelo Cron tenho este retorno (deu errado):
{"success":false,"errors":[{"code":7003,"message":"Could not route to \/zones\/dns_records, perhaps your object identifier is invalid?"},{"code":7000,"message":"No route for that URI"}],"messages":[],"result":null} 


Quando executado manualmente tenho este retorno (que deu certo):

{"result":{"id":"xyz","type":"A","name":"zonaaatualizar.meudominio.com","content":"meu_IP_novo","proxiable":true,"proxied":false,"ttl":1,"locked":false,"zone_id":"xxxxxxxxxxxxx","zone_name":"meudominio.com","modified_on":"2017-09-19T19:51:39.603023Z","created_on":"2017-09-19T19:51:39.603023Z","meta":{"auto_added":false}},"success":true,"errors":[],"messages":[]}


Bom não sei se alguém aqui pode me dar uma dica, o forum do Cloudflare ironicamente não tem como abrir um tópico se não for usuário participativo, porém não tenho conhecimento para ajudar ninguém lá então caí num loop...

Responder tópico

2. Re: Erro estranho com Curl quando executado pelo Cron [RESOLVIDO]

Enviado em 19/09/2017 - 17:28h

Onde você ajusta o valor da variável IPATUAL?

3. Re: Erro estranho com Curl quando executado pelo Cron [RESOLVIDO]

Enviado em 19/09/2017 - 17:30h

paulo1205 escreveu:

Onde você ajusta o valor da variável IPATUAL?
Opa esqueci desta linha:
IPATUAL="`wget -O - http://myip.dnsomatic.com/`";

é porque este script é grande ele faz atualização de outras coisas então colei aqui somente a parte do codigo que corresponde ao problema.

grato

4. Re: Erro estranho com Curl quando executado pelo Cron [RESOLVIDO]

Enviado em 19/09/2017 - 17:37h

Fácil. Debugue a parada!

Modifique, no começo do seu script, a linha #!/bin/sh por #!/bin/sh -x. No cron, redirecione toda saída de erro e saída padrão para um arquivo qualquer. Ex.:


5 0 * * * /caminho/script.sh >> arquivo.log 2>&1


Olhe lá q vc vai saber o q tá rolando. Lembre-se d q o cron tem seu ambiente próprio de variáveis, portanto, talvez vc precise inserir isso no seu script.
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh

5. Re: Erro estranho com Curl quando executado pelo Cron

Enviado em 19/09/2017 - 18:18h

renato_pacheco escreveu:
Fácil. Debugue a parada!
Opa renato_pacheco valew meu brother, problema resolvido!

Bom não consegui debugar como vc sugeriu pois o retorno no log ficou bem "poluído" de outras informações que o script retorna, mas depois da sua dica fui analisando minuciosamente e percebi uma diferença no método de execução dos parâmetros, enquanto os que requisitam o zone_identifier e record_identifier são executadas $(curl...) a última chama todo o caminho do curl (bom percebe-se que não entendo muito, o que sei de programação vou aprendendo conforme a necessidade)

Eu havia aproveitado partes de outros scripts, pelo Cron ele não reconhece se não chamar o Curl pelo caminho completo, então quando ele era executado pelo Cron me retornava o erro vindo do CloudFlare pois esta última variavel conseguia requisitar o servidor, no entanto ela não passava os parametros necessários das variáveis anteriores pois o Cron não enconrtou o Curl.
Bastou eu corrigir para chamar o curl para o caminho completo onde ele se encontra que ta redondo agora!


zone_identifier= $(/usr/local/bin/./curl -k -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone_name"; -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | cut -f 3 -d: | cut -f 1 -d, | sed 's/"//g')
record_identifier=$(/usr/local/bin/./curl -k -s -X GET "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records?name=$record_name"; -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | cut -f 3 -d: | cut -f 1 -d, | sed 's/"//g')
GETcfIdeias= $(/usr/local/bin/./curl -k -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records/$record_identifier"-H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" --data "{\"id\":\"$zone_identifier\",\"type\":\"A\",\"name\":\"$record_name\",\"content\":\"$IPATUAL\"}")


grato, abçs.

6. Re: Erro estranho com Curl quando executado pelo Cron [RESOLVIDO]

Enviado em 19/09/2017 - 22:13h

Justamente isso! Ele não reconhece o caminho completo pq a variável PATH não estava configurada no ambiente do cron. O debug facilita muito pra identificar o problema.
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder