بدون فرقة



قررنا ذات مرة القيام بأتمتة لحظات العمل الروتينية. قم بإنشاء مجموعتك الخاصة (غير مسموع) أو شيء من هذا القبيل. تسلقت إلى موقع المجموعة على الويب ، ونظرت في كيفية عملها ... تتصل بالخادم البعيد عبر ssh وتقوم بتشغيل بعض البرامج النصية هناك ... توقف ، أعتقد ، هل يحتاج هذا بالفعل إلى فرقة؟ بدون فرقة ، أنا نفسي ... وحدي ... أستطيع أن أفعل ذلك! ولكي لا أستطيع فقط ، قررت كتابة تطبيق ويب. كان التطبيق يسمى Update Server ، ويختصر باسم UpS .

الصباح! تحت قطع الكثير من الصور وبضع صور متحركة.

قررت تقديم التطبيق باستخدام python و dzhanga. هناك ما يكفي من المتخصصين و "المتخصصين" في كل من هذا والآخر. لذلك ، لن أقوم بقياس عدد أسطر التعليمات البرمجية الآن. يمكن للمهتمين النظر هنا ليس هناك أسرار ، ومعظم الفرق متخصصة في مشروعنا. سأخبر (وأظهر) فقط عن الوظيفة التي اتضح تنفيذها في التطبيق. حتى هنا. التقطت الثعبان ، بالمناسبة ، الثعبان ليس كبيرًا جدًا ، عادي ، متوسط ​​2.7. لقد حصلت على علامة تجارية جديدة (في ذلك الوقت) dzhang 1.10 وبدأت في ربطها. وهكذا وهكذا متصل. دخلت من فوق وتحت ، بكل طريقة حاولت. وهكذا اتضح في النهاية.


ولكن أولاً وقبل كل شيء ، يبدأ كل شيء بصفحة بسيطة مع وصف.


بالضغط على مشاريع جامبرون نصل إلى صفحة اختيار المشروع.


بعد اختيار المشروع ، نصل إلى الصفحة الرئيسية مع قائمة بالخوادم والنصوص وما إلى ذلك.


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

انحراف طفيف
نلعب مع ابني في مهمة تيتان ، أو بالأحرى ألعب ، وينظر) هناك ، بعض القطع الأثرية ، تسمى الكيانات في النسخة الروسية ، تسقط من الوحوش. في أحد الأيام الجميلة ، سقط لي نوع من جوهر أخيل. الصورة شيء آخر ، ولكن من نفس الأوبرا)
رأى الابن وصاح:
- أبي ، انظر إلى مصداقية أخيل!)

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


هنا نرى النصوص والخوادم المتاحة (الخوادم متاحة في جميع علامات التبويب ، لأنها مطلوبة دائمًا تقريبًا). يمكن تحميل البرامج النصية من ملف أو إنشاؤها في الواجهة باستخدام الزر إضافة . مدعوم من نصوص SH و PY و YML و SQL. يوجد في لوحة البرنامج النصي وصف ( وصف ) ، جزء من كود ( معاينة ) ، مؤلف وتاريخ. بالنسبة إلى البرامج النصية SH و PY ، من الممكن إضافة خيارات (حقل الخيارات ). يتم تحديد البرنامج النصي (وأي كائن آخر) بالنقر فوق أي جزء من اللوحة (باستثناء الأزرار "السريعة"). انقر على البرنامج النصي (الثاني والثالث وما إلى ذلك) ، وانقر على الخادم (الثاني والثالث ، وما إلى ذلك) وانقر على تشغيل البرنامج النصي . سيتم تنفيذ البرنامج النصي أو البرامج النصية المحددة على الخادم أو الخوادم المحددة. إذا كنت بحاجة إلى تشغيل برنامج نصي واحد "سريع" ، يمكنك استخدام زر "سريع" على لوحة البرنامج النصي ، والنقر على الخادم (الثاني والثالث ، وما إلى ذلك) والنقر على تشغيل البرنامج النصي المطلوب. أثناء كتابة مقال ، ظهرت التغييرات. إضافة نصوص SQL منفصلة عن البقية ، وأمر منفصل و permichon لتنفيذ esquels. هذا سمح ، على سبيل المثال ، بإعطاء حقوق فقط لتنفيذ esquels ، لأنه SH و PY أقوى بكثير ، فهي توفر إمكانيات غير محدودة تقريبًا. لكنني لم أعيد لقطات الشاشة) يمكنني أن أقصر نفسي على النصوص البرمجية ، ويمكن فعل كل شيء بها تقريبًا ، ولكن كان من الصعب إيقافها بالفعل).
المضي قدما ، وحزم الخدمة.


في علامة التبويب هذه ، يمكنك إضافة تحديثات جديدة ونسخها إلى الخوادم وإجراء التحديثات. في الواقع ، يمكن أن يكون أي ملفات ، كما في هذا المثال يتم استخدام ملف txt عادي كتحديث اختبار. يمكنك تحميل ملف إلى الخادم (غالبًا ما يكون ملف مضغوط) واستخدامه بطريقة أو بأخرى باستخدام البرامج النصية. كما تحتوي التحديثات على وصف ومؤلف وتاريخ وحجم.
بعد ذلك تأتي المقالب.


يعرض قائمة بالملفات التي تم تلقيها بواسطة الأمر Get dump أو تم تنزيلها هنا من الكمبيوتر. لا تحتوي المقالب على وصف ، لا يوجد سوى اسم وحجم ووقت إنشاء. ربما ليس فقط مرة واحدة على الأقل (اثنان ، ثلاثة) خبطت قاعدة الغذاء؟ انتهزت هذه الفرصة إلى مستوى جديد) إرسال تفريغ هذا الأمر ينشر قاعدة الخادم من التفريغ المحدد. هل تشعر بالفرصة؟ (تسمع صدع الضربات) نعم ، في أيدي غير قادرة ، يمكن لهذا الأمر أن يقتل جميع القواعد على جميع الخوادم بنقرات قليلة فقط! هذا هو السبب في أن زر هذا الأمر (وما شابه) مطلي باللون الأحمر ، يجب الضغط عليه بعناية فائقة. بالنسبة لمكبات الحجم ، من الصعب استخدامها بالطبع ، ولكن بالنسبة لقواعد الاختبار الصغيرة ، يعد الأمر مناسبًا للغاية. كرون.


يمكن تشغيل كل هذا الخزي من خلال التيجان. تعرض علامة التبويب هذه المهام النشطة. كل مهمة لها معرف فريد ( معرف crontab ) ، فمن الضروري للتلاعب بها لاحقًا. يشير الوصف إلى ما ستفعله المهمة. في المثال ، قم بتشغيل البرنامج النصي test2.sh على الخادم بالعنوان jboss @ localhost. يشار إلى وقت بدء المهمة في حقل تاريخ البدء بالتنسيق YYYY-MM-DD HH: MM يشار إلى المؤلف ووقت الإنشاء. يمكنك إلغاء المهمة أو تغيير الوقت أو جعل المهمة دائمة (سيتم تنفيذها كل يوم في الوقت المحدد) أو العكس مرة واحدة.
تظهر سجلات تشغيل الأوامر هنا.


لا يمكنك فعل أي شيء مع السجلات ، كل شيء قد تم بالفعل ، والجلوس ومعرفة ما حدث) النقر على لوحة السجل يفتحها في نافذة منفصلة. إذا كانت هناك عدة عمليات قيد التشغيل ، فسيظهر الزر " كل السجلات " ، ويفتح جميع السجلات في نافذة واحدة (نسيت أن آخذ لقطة الشاشة هذه).

خوادم. كما قلت ، قائمة الخوادم متاحة في جميع علامات التبويب. يعرض الخادم العنوان (عنوان ssh ) ، ويمكن كتابته بتنسيق user @ address ، ولكن من الأفضل استخدام الأسماء المستعارة لـ ssh (~ / .ssh / config) وتحديد بعض الأسماء ذات المغزى. عنوان HTTP هو عنوان URL لتطبيق تم نشره على الخادم. مجلد العمل ( مجلد الخادم ) والمنفذ (منفذ ربط الخادم ) ، هذا هو المجلد الذي يوجد فيه التطبيق والمنفذ الذي يفتحه ، على التوالي. الوصف ، المؤلف ، التاريخ. أظهرت لقطة الشاشة بضعة أوامر جديدة تمت إضافتها في وقت الكتابة: Prop و Full . لدينا ملفان رئيسيان للتهيئة ، تسمح لك هذه الأوامر بتحريرهما بسهولة. باقي الفريق. أول أحمر:
الصيانة ON \ OFF - تمكين / تعطيل صفحة الأعمال المجدولة للصيانة المجدولة O_o أو إذا حدث خطأ (بعد إرسال التفريغ على سبيل المثال).
إعادة تحميل التكوين - يعيد تحميل تكوين jboss (يستخدم مشروعنا jboss).
إعادة تشغيل \ بدء \ إيقاف \ قتل jboss - إيقاف وبدء وإعادة تشغيل jboss والقتل الوحشي إذا لم يساعد أي شيء آخر)
علاوة على ذلك ، أشياء مفيدة مختلفة:
معلومات النظام - تعرض معلومات حول الخادم: الذاكرة ، القرص ، المعالج ، المستخدمون ، العمليات.
فحص الصحة - فحص سريع لصحة التطبيق ، ويبحث عن عملية التطبيق ، ويتحقق مما إذا كان المنفذ مفتوحًا ويحاول الطرق على هذا المنفذ باستخدام حليقة.
التحقق من الاختيار - يظهر ملف التكوين الخاص بالتطبيق.
التحقق من السجلات - يعرض سجلات التطبيق.
فحص سجل GC - يظهر جامع البيانات المهملة.
الحصول على يوم / أسبوع / شهر / كل السجلات - يسمح لك بتنزيل السجلات لفترة معينة في أرشيف واحد.
Backup base \ system \ full - ينشئ نسخة احتياطية من قاعدة البيانات ، ملفات التطبيق ، يفعل كلاهما.
نسخ أدوات - نسخ جميع أنواع البرامج النصية المختلفة إلى الخادم.
كلمات مرور زقزقة - يسمح لك بنقب كلمة مرور المسؤول.
التحقق من التحديثات - يعرض ملفات التحديث التي يتم تحميلها على الخادم.
إنشاء نفق - إعادة توجيه منفذ التطبيق من خادم التطبيق إلى UpS (لدينا بعد كل شيء ssh). يمكنك الاتصال بمنفذ التطبيق مباشرة. مفيد للتحقق من الوظائف في حالة عدم الوصول (http \ s) إلى العنوان الأساسي.
الأوامر معلومات النظام ، والتحقق من الصحة ، والتحقق من الاختيار ، والتحقق من السجلات ، وكلمات مرور اللمحة ، والتحقق من التحديثات وإنشاء نفق لها نظائر "سريعة" مباشرة على لوحة كل خادم.
يوجد رابط History في اللوحة العلوية ، يتم تسجيل نتيجة تنفيذ جميع الأوامر (تقريبًا) في السجل. مطلوبون Permishers لعرض التاريخ وتنفيذ الأوامر. يتم تعليق Permichons بواسطة لوحة إدارة Dzhangovsky القياسية. الشيء الوحيد الذي أضفته هنا هو أني أخفقت مكتبة django-guardian ، والتي تسمح لك بإرفاق بيرميكونز بالأشياء ، بدا لي مناسبًا للغاية ، لكن djanga لا تستطيع القيام بذلك خارج الصندوق.

بالطبع ، لست خبيرًا في wi guru ، لكنني حاولت أن أجعل الإدارة سهلة وغير مجبرة) انقر على العناصر الضرورية ، وحدد الفريق ، وها هذا كل شيء. انقر على الزر للحصول على النتيجة. شيء من هذا القبيل.


بضع كلمات حول كيفية عمل كل شيء. Python و dzhanga ، كما قلت ، المشاهدات ، والنماذج ، وعناوين URL ، والنماذج ، هذا كل ما في الأمر أمر أوامر . يتم وصف الملفات المتاحة في هذا الملف (حتى الآن كل شيء منطقي ، أليس كذلك؟). يبدو شيء مثل هذا:
class CommandClass: """ """ def __init__( self, permission='run_command', # Permission needed to run this command. position=1, # Position in commands list section='', # Section command will be placed to. style='', # Class assigned to a command button title='', # Pop up help message(via title) short='', # Short name for commands in quick section menu='', # Command name in UI name='', # Command name(an internal command name) run='', # Prevent CRONing his=True, # Command log will be saved to history fst=False, # Add command to quick section dgr='false', # If true will show confirmation window job='false', # Check if some cron jobs selected srv='false', # Check if some servers selected upd='false', # Check if some updates selected scr='false', # Check if some scripts selected dmp='false', # Check if some dumps selected ): self.permission = permission self.position = position self.section = section self.style = style self.title = title self.short = short self.name = name self.menu = menu self.run = run self.his = his self.fst = fst self.srv = srv self.upd = upd self.job = job self.scr = scr self.dmp = dmp self.dgr = dgr 

ويتم وصف جميع الأوامر الموجودة في قاموس كوماندك . اسم القاموس هو نوع من اللعب على أمر الكلمات (الأمر) والقاموس (القاموس) ، وربما يجد خبراء اللغة الإنجليزية بعض المعنى الخفي الآخر. القاموس:
 commandick = { # Cron submenu }----------------------------------- 'cancel_job': CommandClass( permission='run_cron', position=4, section='cron', title='Cancel selected cron job(s).', name='cancel_job', menu='Remove job', job='true', run="run_or_cron('RUN');", ), 'permanent_job': CommandClass( permission='run_cron', position=3, section='cron', title='Make selected cron job(s) permanent.', name='permanent_job', menu='Run everyday', job='true', run="run_or_cron('RUN');", ), ... 'tunnel': CommandClass( permission='tunnel', position=80, section='server', title='Make ssh tunnel to the bind port of selected server(s).', short='Tunnel', name='tunnel', menu='Create tunnel', run="run_or_cron('RUN');", srv='true', his=False, fst=True, ), 'test_ssh': CommandClass( permission='tunnel', position=90, section='server', title='Test ssh connection.', short='Tunnel', name='test_ssh', menu='Test ssh', run="run_or_cron('RUN');", srv='true', his=False, ), } 

كل أمر هو وحدة منفصلة في مجلد الوحدات النمطية . يتم تشغيل الأوامر من خلال عملية منفصلة ، إذا تم تحديد عدة خوادم ، يتم إنشاء نص برمجي starter.py لكل خادم ، ويقوم باستيراد وتنفيذ الوحدة (الأمر) المطلوبة. هل توصلت إلى ميزة جديدة؟ إضافة الملف إلى مجلد الوحدات ووصف في القاموس ، يا للجميع. هنا تطبيق. Vangyu تعليقات جماعية حول بناء الدراجات. إلى ذروتك ... حكايات ، أود الإجابة على هذا. لماذا يستمر الناس في صنع أناس جدد؟ بعد كل شيء ، الناس بالفعل يصلون إلى حد ما ... لأنني أحب العملية) لذا أحب العملية ، التي أتمنى لك أيضًا أن تنشئها ، تخترعها ، تجربها)

الحرف الأخرى
في الختام ، أود أن أذكر بضعة حرفتي. لأصغر كتاب تلوين . برنامج نصي يبسط عملية تلوين النصوص الأخرى:
 #--------------------------------------------------------------------+ #Color picker, usage: printf $BLD$CUR$RED$BBLU'Hello World!'$DEF | #-------------------------+--------------------------------+---------+ # Text color | Background color | | #-----------+-------------+--------------+-----------------+ | # Base color|Lighter shade| Base color | Lighter shade | | #-----------+-------------+--------------+-----------------+ | BLK='\e[30m'; blk='\e[90m'; BBLK='\e[40m'; bblk='\e[100m' #| Black | RED='\e[31m'; red='\e[91m'; BRED='\e[41m'; bred='\e[101m' #| Red | GRN='\e[32m'; grn='\e[92m'; BGRN='\e[42m'; bgrn='\e[102m' #| Green | YLW='\e[33m'; ylw='\e[93m'; BYLW='\e[43m'; bylw='\e[103m' #| Yellow | BLU='\e[34m'; blu='\e[94m'; BBLU='\e[44m'; bblu='\e[104m' #| Blue | MGN='\e[35m'; mgn='\e[95m'; BMGN='\e[45m'; bmgn='\e[105m' #| Magenta | CYN='\e[36m'; cyn='\e[96m'; BCYN='\e[46m'; bcyn='\e[106m' #| Cyan | WHT='\e[37m'; wht='\e[97m'; BWHT='\e[47m'; bwht='\e[107m' #| White | #----------------------------------------------------------+---------+ # Effects | #--------------------------------------------------------------------+ DEF='\e[0m' #Default color and effects | BLD='\e[1m' #Bold\brighter | DIM='\e[2m' #Dim\darker | CUR='\e[3m' #Italic font | UND='\e[4m' #Underline | INV='\e[7m' #Inverted | COF='\e[?25l' #Cursor Off | CON='\e[?25h' #Cursor On | #--------------------------------------------------------------------+ # Text positioning, usage: XY 10 10 'Hello World!' | XY () { printf "\e[$2;${1}H$3"; } # | #--------------------------------------------------------------------+ # Print line, usage: line - 10 | line -= 20 | line 'Hello World!' 20 | line () { printf -v LINE "%$2s"; printf "${LINE// /$1}"; } # | #--------------------------------------------------------------------+ 

للأطفال الأكبر سنًا ، قضاء الكثير من الوقت في وحدة التحكم ، لوحة تحكم جميلة.
الصورة

بالنسبة لأولئك الذين هم بالفعل ضمن إطار المضيف المحلي ، هناك نص برمجي يقوم بإنشاء قائمة (مربع حوار) من ~ / .ssh / config الخاص بك. يعلم الجميع لماذا هناك حاجة إلى ~ / .ssh / config ؟) يبدو هذا:
الصورة

وبالطبع PIE-PIE!
أحب الكثير Piu-Piu (أكثر من 550 نجمة على github) ، شكرًا لكم جميعًا على كلماتك الرقيقة وعلى مساعدتك! لم تسمع عن piu-piu؟ اقرأ هنا وهنا وهنا . أرغب في تطوير المؤامرة أكثر وجعل اللعبة أكبر ، لدي أفكار للتحسين ولكن ليس هناك ما يكفي من الوقت. عطلات رأس السنة الجديدة مرحب بها للغاية ، آمل أن أتمكن من العمل في اللعبة. بالمناسبة ، يمكن تثبيت piu-piu apt'om:
 sudo apt install -y piu-piu 

الصورة

سنة جديدة سعيدة!)

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


All Articles