আমি ব্যাশে স্ক্রিপ্টিংয়ের জন্য এখনও খুব নতুন এবং আমি যা চেষ্টা করেছি তা মৌলিক বিষয়গুলির জন্য চেষ্টা করছি। আমি ডিডিএনএস চালাতে চাই যা আমার সার্ভার উবুন্টু 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
তবে আপনি এটি মিস করছেন। হতে পারে যে জিনিস ব্যর্থ কারণ?