Todavía soy muy nuevo en las secuencias de comandos en bash, y solo intento algunas que pensé que serían cosas básicas. Quiero ejecutar DDNS que se actualiza desde mi servidor que ejecuta Ubuntu 14.04.
Tomando prestado algún código de dnsimple, esto es lo que tengo hasta ahora:
#!/bin/bash
LOGIN="email"
TOKEN="token"
DOMAIN_ID="domain"
RECORD_ID="record"
IP=`curl -s http://icanhazip.com/`
OUTPUT=`
curl -H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-DNSimple-Domain-Token: $TOKEN" \
-X "PUT" \
-i "https://api.dnsimple.com/v1/domains/$DOMAIN_ID/records/$RECORD_ID" \
-d "{\"record\":{\"content\":\"$IP\"}}"`
if ! echo "$OUTPUT" | grep -q "(Status:\s200)"; then
echo "match"
$(echo "$OUTPUT" | grep -oP '(?<="message":")(.[^"]*)' >> /home/ddns/ddns.log)
$(echo "$OUTPUT"| grep -P '(Status:\s[0-9]{3}\s)' >> /home/ddns/ddns.log)
fi
La idea es que se ejecuta cada 5 minutos, que tengo trabajando usando un cronjob. Luego quiero verificar la salida del rizo para ver si el estado es "200" u otro. Si es otra cosa, entonces quiero guardar la salida en un archivo.
Lo que no puedo hacer funcionar es la ifdeclaración. Como yo lo entiendo, la -qdel grepcomando proporcionará un código de salida para el ifcomunicado. Sin embargo, parece que no puedo hacer que funcione. ¿Dónde me he equivocado?
DNSimple-Domain-Tokenque no necesita la LOGINvariable.
/var/tmp/icanhazip) y si no ha cambiado desde la última ejecución, exit 0antes de hacer cualquier otra cosa. no necesita actualizar su entrada DDNS cada 5 minutos, solo cuando cambia su dirección IP.
ifverificación y siempre hace eco en el archivo de registro? dnssimple muestra un$LOGINantes$TOKEN, pero te lo estás perdiendo. ¿Quizás eso está causando que las cosas fallen?