Mikrotik و Linux. الروتينية والأتمتة

أنا أقدم نفسي ، اسمي أندريه.

كانت المهمة الأولية هي: إنشاء مئات التكوينات لـ Mikrotik ، لرفع شهادة على كل ovpn ، ثم تحميل التكوينات ، ومئات التكوينات ، والشهادات ومفتاح لمئات Mikrotik.

كلمة المرور لكل شهادة فريدة من نوعها. إن إنشاء مئات التكوينات بأيديك أمر هراء ، وسيُخبرك غدًا بإجراء تغييرات جديدة أو ترغب في ملء بعض التغييرات الأخرى على Mikrotik.

ما أردت تحقيقه:

  1. تلقائيا إنشاء الكثير من النصوص.
  2. إرسالها تلقائيًا إلى المعدات التي أحتاجها ؛
  3. للتأكد من أنهم عملوا دون أخطاء أو لمعرفة أنه لم يتم تنفيذ التكوين بشكل صحيح.

صورة

باستخدام باش وبروتوكول نقل الملفات ، عملت كل شيء.

قليلا من الناحية النظرية
في RouterOS ، يمكنك تنفيذ البرامج النصية تلقائيًا (يجب أن يشبه ملف البرنامج النصي name.auto.rsc). بعد تحميل الملف عبر FTP إلى جهاز التوجيه ، سيتم تنفيذه تلقائيًا ، كما هو الحال مع الأمر '/ import' (هذه الطريقة تعمل فقط مع FTP).
بمجرد تنزيل الملف ، يتم تنفيذه تلقائيًا. يتم تسجيل معلومات حول نجاح تنفيذ الأوامر في الاسم .auto.log

AWK - لغة برمجة نصية تشبه C لتحليل ومعالجة دفق الإدخال (على سبيل المثال ، ملف نصي) وفقًا للأنماط المحددة (التعبيرات العادية). يمكن استخدامه في البرامج النصية لسطر الأوامر.

Expect هي أداة أتمتة واختبار يونيكس كتبها Don Libes امتدادًا للغة البرنامج النصي Tcl للتطبيقات التفاعلية مثل telnet و ftp و passwd و fsck و rlogin و tip و ssh وغيرها.


بادئ ذي بدء ، قمت بعمل 3 ملفات:

  1. سجل ملف List.txt فيه اسم اتصالات OVPN (في حالتي اسم المتجر) وكلمة المرور للمفتاح (مفصولة بعلامات جدولة) ؛
  2. sh1.sh - ملف bash باستخدام أمر تحليل سطر بسطر على قائمة list.txt +
  3. sh2.sh - ملف bash والذي ، باستخدام الصدى والمتغيرات ، ينشئ ملف تهيئة ويكتب إعداداتنا عليه.

و هكذا:

vi list.txt gamazin1 pass1 gamazin2 pass2 gamazin3 pass3 

 vi sh1.sh #!/bin/bash awk '{print "./sh2.sh "$1 " "$2}' ./list.txt | /bin/bash sudo chmod +x sh1.sh 

 vi sh2.sh #!/bin/bash echo /certificate > rsc/$1.auto.rsc echo import file-name=$1.crt passphrase=$2 >> rsc/$1.auto.rsc echo import file-name=$1.key passphrase=$2 >> rsc/$1.auto.rsc echo import file-name=ca.crt passphrase=$2 >> rsc/$1.auto.rsc echo /interface ovpn-client >> rsc/$1.auto.rsc echo add certificate=$1.crt_0 connect-to=10.10.10.10 name=$1_ovpn port=1111 user=$1 profile=default auth=sha1 cipher=blowfish128 >> rsc/$1.auto.rsc #      ehco. sudo ./sh1.sh 

تحذير واحد!

أنشأها $ 1.crt و $ 1.key مسبقًا باستخدام نفس list.txt ، ولهذا السبب اسم الملف هو أيضًا اسم المتجر.

خلق مائة التكوينات. نحن الآن بحاجة لإرسالهم باستخدام نفس AWK و Expect + FTP.

قم بإنشاء 4 ملفات:

  1. ملف List2.txt - فيه نقوم بتخزين بيانات IP الخاصة بـ Mikrotik | تسجيل الدخول | كلمة المرور | اسم المتجر. مفصولة علامة التبويب.
  2. newsh1.sh - ملف bash باستخدام أمر تحليل سطر بسطر في قائمة خط أنابيب list2.txt +
  3. newsh2.sh - يرسل رغباتنا عبر FTP باستخدام حزمة Expect ، التي تستجيب لطلبات وحدة التحكم.
  4. $ 1.auto.rsc - ملف التكوين في حالتي ، تم إنشاؤه من المتغير $ 1 ، والذي كان اسم المتجر في البرنامج النصي السابق. مثال gamazin1.auto.rsc.

 vi list2.txt 192.168.1.1 admin password1 gamazin1 192.168.2.1 admin password2 gamazin2 192.168.3.1 admin password3 gamazin3 #  1  list.txt        

 vi newsh1.sh #!/bin/bash awk '{print "./newsh2.sh "$1 " "$2 " "$3 " "$4}' ./list2.txt | /bin/bash sudo chmod +x newsh1.sh 

 Sudo apt-get install expect vi newsh2.sh #!/bin/bash Mikrotik=$(expect -c " set timeout 3 spawn ftp $1 expect \"Name*\" send \"$2\n\" expect \"?assword:\" send \"$3\n\" expect \"ftp>\" send \"put $4.crt\n\" expect \"ftp>\" send \"put $4.key\n\" expect \"ftp>\" send \"put ca.crt\n\" expect \"ftp>\" send \"put $4.auto.rsc\n\" expect \"ftp>\" send \"bye\n\" ") sudo ./newsh1.sh 

تعليق


أولاً ، أرسلنا الشهادات باستخدام المفتاح ، ثم فقط التكوين (إذا قمت بذلك بالترتيب العكسي ، فسوف يبدأ في أقسم أنه لا توجد مثل هذه الشهادات).

مخلوقات وشهادات منتشرة مثل الكعك الساخن. نظرًا للاسم .auto.rsc عبر FTP ، قادهم Mikrotik تلقائيًا وتم تطبيق إعداداتنا.

نريد أن نعرف أنه في كل مكان كل شيء رائع ، باستخدام التكوين أعلاه نغير سطر واحد.

وضعت على الحصول عليها
 send \"get $4.auto.log\n\" #  .log    .rsc 


قمنا بتنزيل جميع الملفات إلى المنزل وفرزناها من خلال الملفات ، حيث يكون حجم الملف الذي تواجهه في مشكلة مع Mikrotik 0 بايت. من خلال اسم الملف ، يمكنك معرفة عنوان IP الخاص به عن طريق ملف list2.txt الخاص بنا. وفي نسخة جيدة ، فتح الملف ، يمكنك أن ترى هناك "ملف Script تم تحميله وتنفيذه بنجاح".

يمكنك أيضًا كتابة نصوص لهذه الملفات ، لكن كان عليّ فقط فرز الملفات حسب الوزن.

كتبت أيضًا نصًا آخر ، وبعد كل هذه الإجراءات التي تغلق FTP والعكس ، تفتح عبر SSH. تم تغيير FTP إلى SSH من أجل ...

نحن نلعب مع FTP
 /ip service set ftp disabled=yes #  SSH    #      /file remove $4.auto.rsc 


حاولت دفع كل شيء دفعة واحدة إلى تهيئة واحدة ، لكن الملف الذي تمت إزالته في نهاية الأمر لم يعط نتيجة ؛ لم يتمكن من مسح الملف الذي تلقيت منه هذا الأمر. لا تزال هناك فروق دقيقة.

وفي النهاية ... السعادة! يمكنك إدارة قوائم Mikrotik الفردية أو كلها مرة واحدة ، كما تريد. الآن ، عن طريق فتح FTP والإغلاق ، يمكنك إرسال الأوامر والتأكد من اكتمالها. ولكن رأيي هو أكثر ملاءمة من FTP ، SSH لم تسقط في منتصف الطريق ، حيث ستكون متأكدًا من أن كل شيء سار بشكل جيد من خلال البحث في مجلد السجلات.

عرضت في هذه المقالة الأدوات ، لكن يمكنك التفكير في كيفية استخدامها بنفسك ...
فعلت كل شيء على أوبونتو 16.04.

حول auto.rsc في Mikrotik
AWK
توقع

Source: https://habr.com/ru/post/ar480404/


All Articles