Я все ще дуже новачок в сценаріях на баш, і я просто пробую декілька, що я вважав, що це будуть основні речі. Я хочу запустити DDNS, який оновлюється з мого сервера під управлінням Ubuntu 14.04.
Позичив якийсь код у dnsimple, ось що у мене є:
#!/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
Ідея полягає в тому, що він працює кожні 5 хвилин, що я працюю за допомогою кронштейна. Потім я хочу перевірити вихід завитка, щоб побачити, чи статус "200" чи інший. Якщо це щось інше, то я хочу зберегти вихідний файл.
Що я не можу працювати - це if
твердження. Як я розумію, команда -q
on grep
надасть вихідний код для if
оператора. Однак я не можу зробити так, щоб це спрацювало. Де я помилився?
DNSimple-Domain-Token
якій не потрібна LOGIN
.
/var/tmp/icanhazip
), і якщо він не змінився з останнього запуску, exit 0
перш ніж робити щось інше. вам не потрібно оновлювати запис DDNS кожні 5 хвилин, лише коли ваша IP-адреса змінюється.
if
чек і завжди лунає у файлі журналу? dnssimple показує$LOGIN
раніше$TOKEN
, але ви цього не вистачаєте. Може, це спричиняє невдачі?