تشغيل البرامج النصية في جهاز Linux الظاهري باستخدام إجراء أوامر التشغيل

تنبيه

تشير هذه المقالة إلى CentOS، وهو توزيع Linux يقترب من حالة نهاية العمر الافتراضي (EOL). يرجى مراعاة استخدامك والتخطيط وفقا لذلك. لمزيد من المعلومات، راجع إرشادات نهاية العمر الافتراضي CentOS.

ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة

تستخدم ميزة تشغيل الأمر عامل الجهاز الظاهري (VM) لتشغيل البرامج النصية shell داخل VM Linux Azure. يمكنك استخدام هذه البرامج النصية للإدارة العامة للجهاز أو التطبيق. حيث يمكن أن تساعدك على تشخيص ومعالجة مشاكل الدخول إلى الآلة الظاهرية والشبكة واستعادة الآلة الظاهرية مرة أخرى إلى وضع جيد.

المزايا

يمكنك الوصول إلى أجهزتك الظاهرية بطرق متعددة. يمكن لأمر التشغيل تشغيل البرامج النصية على أجهزتك الظاهرية عن بعد باستخدام عامل الجهاز الظاهري. يمكنك استخدام أمر التشغيل من خلال مدخل Azure أو واجهة برمجة تطبيقات REST أو واجهة سطر أوامر Azure لأجهزة Linux الظاهرية.

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

المتطلبات الأساسية

دعم Linux Distro

Linux Distro x64 ARM64
Alma Linux 9.x+ 9.x+
CentOS 7.x+، 8.x+ 7.x+
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ غير معتمد
Oracle Linux 6.4+، 7.x+، 8.x+ غير معتمد
Red Hat Enterprise Linux 6.7+، 7.x+، 8.x+ 8.6+, 9.0+
Rocky Linux 9.x+ 9.x+
SLES 12.x+، 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

القيود

تنطبق القيود التالية عند استخدام أمر التشغيل:

  • تقتصر المخرجات على آخر 4,096 بايت.
  • الحد الأدنى من الوقت لتشغيل البرنامج النصي هو حوالي 20 ثانية.
  • يتم تشغيل البرامج النصية افتراضيا كمستخدم مرتفع على Linux.
  • يمكنك تشغيل برنامج نصي واحد في كل مرة.
  • البرامج النصية التي تطالب بالمعلومات (الوضع التفاعلي) غير مدعومة.
  • لا يمكنك إلغاء برنامج نصي قيد التشغيل.
  • الحد الأقصى للوقت الذي يمكن به تشغيل البرنامج النصي هو 90 دقيقة. بعد ذلك، ستنتهي مهلة البرنامج النصي.
  • يكون الاتصال الخارجي الصادر من الجهاز الظاهري لازمًا لإعادة نتائج البرنامج النصي.

إشعار

للعمل بشكل صحيح، يتطلب تشغيل الأمر الاتصال (المنفذ 443) بعناوين IP العامة ل Azure. وإذا لم يكن للملحق حق الدخول إلى هذه الأطراف النهائية، فقد تعمل البرامج النصية بنجاح ولكن دون إعادة النتائج. إذا كنت تقوم بحظر حركة المرور على الجهاز الظاهري، يمكنك استخدام علامات الخدمة للسماح لعناوين بروتوكول الإنترنت العامة في Azure بالمرور باستخدام علامة AzureCloud.

الأوامر المتوفرة

يعرض هذا الجدول قائمة الأوامر المتوفرة للأجهزة الظاهرية التي تعمل بنظام Linux. يمكنك استخدام أمر RunShellScript لتشغيل أي برنامج نصي مخصص تريده. عند استخدام Azure CLI أو PowerShell لتشغيل أمر، يجب أن تكون القيمة التي توفرها للمعلمة --command-id أو المعلمة -CommandId إحدى القيم المدرجة التالية. عند تحديد قيمة ليست أمرا متوفرا، تتلقى هذا الخطأ:

The entity was not found in this Azure location
الاسم الوصف
RunShellScript يقوم بتشغيل برنامج نصي Linux shell.
ifconfig يحصل على تكوين جميع واجهات الشبكة.

Azure CLI

يستخدم المثال التالي الأمر az vm run-command لتشغيل برنامج نصي shell على جهاز Azure ظاهري يعمل بنظام Linux.

az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "apt-get update && apt-get install -y nginx"

إشعار

لتشغيل الأوامر كمستخدم مختلف، أدخل sudo -u لتحديد حساب مستخدم.

مدخل Azure

انتقل إلى جهاز ظاهري في مدخل Azure وحدد Run command في القائمة اليسرى، ضمن Operations. ستظهر قائمة بالأوامر المتوفرة للتشغيل على الجهاز الظاهري.

قائمة الأوامر

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

إشعار

الأوامر المضمنة غير قابلة للتحرير.

بعد اختيار الأمر، حدد تشغيل لتشغيل البرنامج النصي. بعد انتهاء البرنامج النصي، يقوم بإرجاع الإخراج وأي أخطاء في نافذة الإخراج. تعرض لقطة الشاشة التالية مثالا على الإخراج من تشغيل الأمر ifconfig.

تشغيل إخراج البرنامج النصي للأمر

PowerShell

يستخدم المثال التالي cmdlet Invoke-AzVMRunCommand لتشغيل برنامج PowerShell النصي على جهاز Azure ظاهري. يتوقع cmdlet أن يكون البرنامج النصي المشار إليه في المعلمة -ScriptPath محليًا بالنسبة لمكان تشغيل cmdlet.

Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}

تقييد الوصول إلى أمر التشغيل

يتطلب سرد أوامر التشغيل أو إظهار تفاصيل أمر الإذن على Microsoft.Compute/locations/runCommands/read مستوى الاشتراك. ويكون هذا الإذن متاحًا لدور القارئالمدمج والمستويات الأعلى.

يتطلب Microsoft.Compute/virtualMachines/runCommands/write تشغيل أمر الإذن . ويكون هذا الإذن متاحًا لدور مساهم الجهاز الظاهري والمستويات الأعلى.

يمكنك استخدام أحد الأدوار المدمجةلإنشاء دور مخصص لاستخدام ⁩أمر التشغيل⁩.

استكشاف أخطاء أمر تشغيل الإجراء Linux وإصلاحها

عند استكشاف أخطاء أمر تشغيل الإجراء وإصلاحها لبيئات Linux، راجع ملف سجل المعالج الموجود عادة في الدليل التالي: /var/log/azure/run-command-handler/handler.log لمزيد من التفاصيل.

المشكلات المعروفة

تحتوي سجلات أوامر تشغيل إجراء Linux على بعض الاختلافات الملحوظة مقارنة بأمر تشغيل الإجراء سجلات Windows:

  • يتم الإبلاغ عن رقم التسلسل مع كل سطر من السجل ك 'seq=#'
  • لن يكون هناك سطر يحتوي على Awaiting completion... لأن هذا سيكون في أمر تشغيل الإجراء Windows فقط.
  • السطر Command existed with code: # موجود أيضا فقط في أمر تشغيل الإجراء تسجيل Windows.

إجراء تشغيل إزالة الأمر

إذا كنت بحاجة إلى إزالة ملحق Linux لأمر تشغيل الإجراء، فراجع الخطوات التالية ل Azure PowerShell وCLI:

استبدل rgname وvmname باسم مجموعة الموارد ذات الصلة واسم الجهاز الظاهري في أمثلة الإزالة التالية.

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandLinuxExtension'
az vm run-command invoke  --command-id RemoveRunCommandLinuxExtension --name vmname -g rgname

إشعار

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

الخطوات التالية

للتعرف على الطرق الأخرى لتشغيل البرامج النصية والأوامر عن بُعد في الجهاز الظاهري، راجع تشغيل البرامج النصية في الجهاز الظاهري بنظام التشغيل Linux.