উত্তর:
ব্যবহার socket
এবং তার gethostname()
কার্যকারিতা। hostname
পাইথন ইন্টারপ্রেটার যে কম্পিউটারটি চালাচ্ছে এটি কম্পিউটারটি পেয়ে যাবে :
import socket
print(socket.gethostname())
socket.getfqdn()
এই দুটিই বেশ বহনযোগ্য:
import platform
platform.node()
import socket
socket.gethostname()
HOST
বা HOSTNAME
পরিবেশের ভেরিয়েবলগুলি ব্যবহার করে যে কোনও সমাধান পোর্টেবল নয়। এমনকি এটি চালানোর সময় এটি যদি আপনার সিস্টেমে কাজ করে তবে ক্রোন এর মতো বিশেষ পরিবেশে চালানোর সময় এটি কাজ নাও করতে পারে।
python -m timeit "import socket; socket.gethostname()" 10000 loops, best of 3: 76.3 usec per loop
python -m timeit "import platform; platform.node()" 1000000 loops, best of 3: 0.74 usec per loop
import os, platform; os.getenv('HOSTNAME', os.getenv('COMPUTERNAME', platform.node())).split('.')[0]
ক্রোস প্ল্যাটফর্ম হওয়া উচিত এবং যদি পরিবেশের পরিবর্তনশীল উপস্থিত থাকে তবে তাদের সমর্থন করা উচিত - যা কিছু অতি ব্যবহারকারী পরিস্থিতিতে নিয়ন্ত্রণের অনুমতি দেয়, যেমনHOSTNAME=correct python xyz.py
আপনি সম্ভবত ওএস মডিউলটি লোড করবেন, তাই অন্য পরামর্শটি হ'ল:
import os
myhost = os.uname()[1]
os
মডিউলটি । পোর্টেবল এবং সত্যই সঠিক নয়, তবে যাইহোক।
platform.uname()[1]
যা উইন্ডোজে কাজ করে।
কি সম্পর্কে :
import platform
h = platform.uname()[1]
প্রকৃতপক্ষে আপনি সমস্ত ফলাফলটি একবার দেখতে চান platform.uname()
os.getenv('HOSTNAME')
এবং os.environ['HOSTNAME']
সবসময় কাজ না। ক্রোন জব এবং ডাব্লুএসডিএলে, HTTP HOSTNAME সেট করা নেই। পরিবর্তে এটি ব্যবহার করুন:
import socket
socket.gethostbyaddr(socket.gethostname())[0]
এটি সর্বদা (উইন্ডোজেও) একটি সম্পূর্ণরূপে যোগ্য হোস্টের নাম দেয়, আপনি / ইত্যাদি / হোস্টগুলিতে একটি সংক্ষিপ্ত নাম নির্ধারণ করলেও ।
আপনি যদি / ইত্যাদি / হোস্টগুলিতে কোনও এলিফ নির্ধারণ করে থাকেন তবে socket.gethostname()
উপনামটি ফিরিয়ে দেবে। platform.uname()[1]
একই জিনিস।
আমি এমন একটি ক্ষেত্রে দৌড়েছি যেখানে উপরেরগুলি কাজ করে না আমি এখন এটি ব্যবহার করছি:
import socket
if socket.gethostname().find('.')>=0:
name=socket.gethostname()
else:
name=socket.gethostbyaddr(socket.gethostname())[0]
এটি প্রথমে গেথোস্টনামটি কল করে এটি দেখার জন্য যে এটি কোনও হোস্ট নামের মতো দেখাচ্ছে এমন কিছু ফেরত দেয় কিনা তা যদি না আমার মূল সমাধানটি ব্যবহার করে।
socket.getfqdn()
, যদিও এটি ওপি যা চায় তা নয়
আমি যদি সঠিক হয়ে থাকি তবে আপনি সকেট.জস্টস্টনেম ফাংশনটি সন্ধান করছেন:
>> import socket
>> socket.gethostname()
'terminus'
কমপক্ষে অজগর থেকে> = 3.3 :
আপনি ক্ষেত্রটি ব্যবহার করতে পারবেন nodename
এবং অ্যারে সূচকগুলি ব্যবহার এড়াতে পারেন :
os.uname().nodename
যদিও, এমনকি os.uname এর ডকুমেন্টেশন ব্যবহার করার পরামর্শ দেয়socket.gethostname()
কিছু সিস্টেমে, হোস্টনামটি পরিবেশে সেট করা থাকে। যদি এটি আপনার ক্ষেত্রে হয় তবে ওএস মডিউলটি এটি os.getenv এর মাধ্যমে পরিবেশের বাইরে নিয়ে যেতে পারে । উদাহরণস্বরূপ, যদি HOSTNAME হ'ল পরিবেশগত পরিবর্তনশীল যা আপনি চান তা অন্তর্ভুক্ত থাকলে, নিম্নলিখিতটি এটি পাবেন:
import os
system_name = os.getenv('HOSTNAME')
আপডেট: মন্তব্যগুলিতে উল্লিখিত হিসাবে, এটি সর্বদা কার্যকর হয় না, কারণ প্রত্যেকের পরিবেশ এইভাবে সেট আপ হয় না। আমি বিশ্বাস করি যে সময় আমি প্রাথমিকভাবে উত্তর দিয়েছিলাম তখনই আমি এই সমাধানটি ব্যবহার করছিলাম কারণ এটি প্রথম কোনও ওয়েব অনুসন্ধানে আমি পেয়েছিলাম এবং এটি আমার জন্য তখন কাজ করেছিল। বহনযোগ্যতার অভাবের কারণে আমি সম্ভবত এটি এখন ব্যবহার করব না। তবে আমি এই উত্তরটি রেফারেন্সের উদ্দেশ্যে রেখে চলেছি। এফডব্লিউআইডাব্লু, আপনার পরিবেশের সিস্টেমের নাম থাকলে এবং আপনি ইতিমধ্যে ওএস মডিউলটি আমদানি করে থাকলে এটি অন্যান্য আমদানির প্রয়োজনীয়তা দূর করে। এটি পরীক্ষা করুন - যদি আপনি যে পরিবেশে আপনার প্রোগ্রামটি পরিচালনা করার প্রত্যাশা করেন এমন সমস্ত পরিবেশে যদি এটি কাজ না করে তবে অন্য যে কোনও সমাধান সরবরাহ করুন।
আমার পাইলগ কনফ ফাইলটিতে পিসির নাম ব্যবহার করার দরকার ছিল এবং সকেট লাইব্রেরি পাওয়া যায় না, তবে ওএস লাইব্রেরি রয়েছে।
জন্য উইন্ডোজ আমি ব্যবহৃত:
os.getenv('COMPUTERNAME', 'defaultValue')
যেখানে ডিফল্টভ্যালু হ'ল কোনওটি ফেরত দেওয়া রোধ করার একটি স্ট্রিং
আপনাকে কোডের এই লাইনটি কার্যকর করতে হবে
sock_name = socket.gethostname()
এবং তারপরে আপনি সংযোজকটিকে সন্ধান করতে নামটি ব্যবহার করতে পারেন:
print(socket.gethostbyname(sock_name))