استرداد اسم المضيف في Go (الحصول على اسم المضيف)

Astrdad Asm Almdyf Fy Go Alhswl Ly Asm Almdyf



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

يتمثل دور اسم المضيف في المساعدة في تحديد الأجهزة الموجودة على الشبكة وتحديد موقعها، مما يجعلها ميزة مهمة في المهام المتعلقة بالشبكة.

في هذا البرنامج التعليمي، سوف نتعلم جميع الأساليب والتقنيات المتنوعة التي يمكننا استخدامها لاسترداد اسم المضيف لنظام ما برمجيًا باستخدام لغة البرمجة Go.







لماذا أحتاج إلى اسم المضيف؟

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



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

بعد ذلك، دعونا نتعلم الطرق والتقنيات المختلفة لجلب اسم المضيف للجهاز.



الطريقة الأولى: استخدام حزمة نظام التشغيل

الطريقة الأكثر وضوحًا وبساطة لاسترداد اسم المضيف في Go هي استخدام حزمة نظام التشغيل. تحتوي حزمة نظام التشغيل على تطبيقات منخفضة المستوى للتفاعل مع اسم المضيف والتي تتضمن مهام الشبكة الأساسية.





خذ بعين الاعتبار رمز المثال التالي الذي يوضح كيفية استخدام حزمة نظام التشغيل لجلب اسم المضيف لنظام معين:

طَرد رئيسي
يستورد (
'إف إم تي'
'أنت'
)
func رئيسي () {
اسم المضيف , يخطئ := أنت . اسم المضيف ()
لو يخطئ != لا شيء {
fmt . برينتلن ( 'خطأ:' , يخطئ )
يعود
}
fmt . برينتلن ( 'اسم المضيف:' , اسم المضيف )
}

في هذا المثال، نبدأ باستيراد حزم fmt وOS للعمل مع الوظائف المتعلقة بنظام التشغيل.



نقوم بعد ذلك باستدعاء الدالة os.Hostname() لاسترداد اسم المضيف للجهاز الحالي. نضمن أيضًا معالجة الأخطاء المحتملة التي قد تحدث عند محاولة استرداد اسم المضيف.

وأخيرا، يمكننا طباعة اسم المضيف على النحو التالي:

اسم المضيف : مجهول . محلي

تتمثل إحدى ميزات استخدام حزمة نظام التشغيل في أنها واضحة جدًا وتعمل على أي نظام تقريبًا مثبت عليه برنامج التحويل البرمجي Go.

الطريقة الثانية: استخدام حزمة Syscall (Win)

الطريقة الثانية التي يمكننا استخدامها لجلب اسم المضيف في Go هي استخدام حزمة syscall. توفر هذه الطريقة مزيدًا من التحكم ويمكن أن تكون مفيدة عندما نحتاج إلى إجراء تفاعلات النظام ذات المستوى المنخفض.

فيما يلي مثال على كيفية استخدام حزمة syscall لجلب اسم المضيف:

طَرد رئيسي
يستورد (
'إف إم تي'
'نداء النظام'
'غير آمن'
)
func رئيسي () {
كان buf [ 1024 ] بايت
مقاس := uint32 ( فقط ( buf ))
يخطئ := com.syscall . احصل على اسم الكمبيوتر (( * uint16 )( غير آمن . المؤشر ( & بوف [ 0 ])))، &مقاس )
لو يخطئ != لا شيء {
fmt . برينتلن ( 'خطأ:' , يخطئ )
يعود
}
اسم المضيف := com.syscall . UTF16ToString ( buf [:])
fmt . برينتلن ( 'اسم المضيف:' , اسم المضيف )
}

يجب أن يعيد هذا اسم المضيف للجهاز الحالي.

العيب الرئيسي لهذه التقنية هو أنها خاصة بنظام Windows فقط.

الطريقة الثالثة: استخدام أمر خارجي

يمكننا إعادة الاتصال بعملية استخدام حزم النظام واستخدام Go فقط لاستدعاء أمر خارجي يمكن أن يساعد في استرداد اسم المضيف والتقاط الإخراج.

هذا ممكن باستخدام حزمة OS/exec. مثال على تنفيذ التعليمات البرمجية هو كما يلي:

طَرد رئيسي
يستورد (
'إف إم تي'
'نظام التشغيل/التنفيذي'
)
func رئيسي () {
كمد := com.exec . يأمر ( 'اسم المضيف' )
اسم المضيف , يخطئ := كمد . انتاج | ()
لو يخطئ != لا شيء {
fmt . برينتلن ( 'خطأ:' , يخطئ )
يعود
}
fmt . برينتلن ( 'اسم المضيف:' , خيط ( اسم المضيف ))
}

في هذا المثال، قمنا بإنشاء متغير يسمى 'cmd' والذي يحتوي على أمر اسم المضيف. يتيح لنا هذا الأمر الحصول على اسم المضيف للجهاز المحلي.

نستخدم بعد ذلك طريقة cmd.Output() لتنفيذ الأمر والتقاط الإخراج الناتج.

الطريقة الرابعة: استخدام Psutil

إذا لم تكن على دراية بـ psutil أو الأدوات المساعدة للعمليات والنظام، فهي مكتبة مجانية ومفتوحة المصدر عبر الأنظمة الأساسية لاسترداد المعلومات حول العمليات الجارية واستخدام النظام. يتضمن ذلك موارد مثل وحدة المعالجة المركزية والذاكرة والأقراص والشبكات وأجهزة الاستشعار والمزيد.

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

https://github.com/shirou/gopsutil

ابدأ بتثبيت الحزمة باستخدام الأمر 'go get' كما يلي:

$ يذهب احصل على جيثب . مع / شيرو / com.gosutil / يستضيف

بمجرد التثبيت، يمكننا إنشاء الكود التالي لاسترداد اسم المضيف للنظام:

طَرد رئيسي
يستورد (
'إف إم تي'

'github.com/shirou/gopsutil/host'
)
func رئيسي () {
معلومات , يخطئ := يستضيف . معلومات ()
لو يخطئ != لا شيء {
fmt . برينتلن ( 'خطأ:' , يخطئ )
يعود
}
fmt . برينتلن ( 'اسم المضيف:' , معلومات . اسم المضيف )
}

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

خاتمة

في هذا البرنامج التعليمي، تعلمنا كل شيء عن ميزة اسم المضيف في Go. لقد قمنا أيضًا بتغطية جميع الطرق التي يمكنك استخدامها لاسترداد اسم المضيف للجهاز المحلي.