Bash dilinde senaryo yazma konusunda hala çok yeniyim ve sadece temel şeyler olacağını düşündüğüm birkaçını deniyorum. Ubuntu 14.04 çalıştıran sunucumdan güncelleştirilen DDNS'yi çalıştırmak istiyorum.
Dnsimple bazı kod ödünç almak, bu şimdiye kadar var:
#!/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
Fikir, bir cronjob kullanarak çalıştığım her 5 dakikada bir çalışıyor olmasıdır. Daha sonra durumun "200" veya diğer olup olmadığını görmek için kıvrımın çıkışını kontrol etmek istiyorum. Başka bir şeyse, çıktıyı bir dosyaya kaydetmek istiyorum.
Çalışamadığım ififade. Anladığım kadarıyla -q, grepkomutta ifade için bir çıkış kodu sağlanacaktır if. Ancak çalışmasını sağlayamıyorum. Nerede yanlış yaptım?
DNSimple-Domain-Tokengerektirmeyen bir kullanıyorum LOGIN.
/var/tmp/icanhazip) ve son çalıştırmadan bu yana değişmediyse, exit 0başka bir şey yapmadan önbelleğe alın . DDNS girişinizi her 5 dakikada bir güncellemeniz gerekmez, yalnızca IP adresiniz değiştiğinde.
ifÇeki kaldırırsanız ve günlük dosyasına her zaman yankı verirseniz komut dosyanız çalışır mı ? dnssimple daha$LOGINönce gösterir$TOKEN, ancak bunu kaçırıyorsunuz. Belki de bu durumun başarısız olmasına neden olur?