আমি ব্যাশে স্ক্রিপ্টিংয়ের জন্য এখনও খুব নতুন এবং আমি যা চেষ্টা করেছি তা মৌলিক বিষয়গুলির জন্য চেষ্টা করছি। আমি ডিডিএনএস চালাতে চাই যা আমার সার্ভার উবুন্টু 14.04 চলছে from
ডিএনসিম্পল থেকে কিছু কোড ধার করা, আমার এ পর্যন্ত এটিই রয়েছে:
#!/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অন grepকমান্ডটি ifবিবৃতিটির জন্য একটি প্রস্থান কোড সরবরাহ করবে । তবে আমি এটি কাজ করতে পারে বলে মনে হয় না। আমি কোথায় ভুল করেছি?
DNSimple-Domain-Tokenএমন একটি ব্যবহার করছি যা LOGINভেরিয়েবলের প্রয়োজন হয় না ।
/var/tmp/icanhazip) এবং exit 0অন্য কিছু করার আগে যদি এটি শেষ রানের পরে পরিবর্তিত হয় না। আপনার আইপি ঠিকানা পরিবর্তন হলেই আপনাকে প্রতি 5 মিনিটে আপনার ডিডিএনএস এন্ট্রি আপডেট করতে হবে না।
ifচেকটি সরিয়ে ফেলেন এবং লগ ফাইলটিতে সর্বদা প্রতিধ্বনিত হন তবে কি আপনার স্ক্রিপ্টটি কাজ করে ? ডিএনএস্পিম্পল এর$LOGINআগে দেখায়$TOKENতবে আপনি এটি মিস করছেন। হতে পারে যে জিনিস ব্যর্থ কারণ?