পাইথন লিনাক্স সিস্টেমে সিস্টেম অ্যাডমিনিস্ট্রেশন টাস্ক অটোমেট করার জন্য একটি চমৎকার প্রোগ্রামিং ল্যাঙ্গুয়েজ। এর বিস্তৃত লাইব্রেরি সিলেকশনảnh многих টাস্কের ইফিশিয়েন্সি বাড়াতে ব্যবহার করা যায়। নিচের উদাহরণগুলো ব্যবহার করে, আপনি কেবল চন্দ সেকেন্ডে লিনাক্স সিস্টেম কমান্ড চালাতে পারেন, ফাইল এবং ডিরেক্টরি নিয়ে কাজ করতে পারেন, নেটওয়ার্কিং টাস্ক পারফর্ম করতে পারেন এবং অথেনটিকেশন প্রক্রিয়া অটোমেট করতে পারেন।
পাইথন কী?
পাইথনকে ভালোভাবে বর্ণনা করা যায় একটি জেনারেল-পারপাস প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবে। এটি একজন ডাচ কম্পিউটার সায়েন্টিস্ট গুইডো ভ্যান রসাম द्वारा ১৯৮০-এর দশকের শেষে এবং ১৯৯০-এর দশকের শুরুতে ডেভেলপ করা হয়েছিল একটি ডাইনামিক্যালি-টাইপড প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং "ABC" প্রোগ্রামিং ল্যাঙ্গুয়েজের সাকসেসর হিসেবে।
আজ এটি বিশ্বের সবচেয়ে জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজগুলোর একটি হিসেবে বিবেচিত হয়, ব্যবহার-ক্ষেত্র বাড়ছে ওয়েব ডেভেলপমেন্ট থেকে কমপ্লেক্স ম্যাথেম্যাটিক্স এবং সায়েন্টিফিক ক্যালকুলেশন পর্যন্ত। এটি অ্যালিগ্যান্ট সিনট্যাক্স এবং রিলেটিভলি ইজি টু লার্ন হওয়ার জন্যও প্রশংসিত হয়।
লিনাক্সে পাইথন ইনস্টল করা
অনেক লিনাক্স ডিস্ট্রিবিউশনে পাইথন ডিফল্টভাবে ইনস্টলড থাকে। আপনার সিস্টেমে পাইথন ৩ ইনস্টলড আছে কিনা চেক করতে, আপনি python3 কমান্ড --version ফ্ল্যাগ দিয়ে চালাতে পারেন:
python3 --version
যদি পাইথন ইনস্টলড থাকে, কমান্ডটি আপনার পাইথন কনফিগারেশনের ভার্সন ডিসপ্লে করবে।
উবুন্টু এবং ডেবিয়ান সিস্টেমে পাইথন ইনস্টল করতে:
sudo apt update && sudo apt upgrade -y sudo apt install python3.10
বিকল্পভাবে, পাইথন ".tgz" বা ".xz" ফাইল হিসেবেও ডাউনলোড করা যায়।
"os" মডিউল ব্যবহার করা
লিনাক্স সিস্টেম অ্যাডমিনিস্ট্রেটরদের জন্য সেরা পাইথন লাইব্রেরির একটি হল "os" মডিউল। আপনি এটিকে বিভিন্ন ধরনের টাস্ক অটোমেট করতে ব্যবহার করতে পারেন, যেন ডিরেক্টরি এবং ফাইল হ্যান্ডলিং। এটি সিস্টেম কমান্ডও রান করতে পারে।
উদাহরণস্বরূপ, আপনি মডিউলটি ব্যবহার করে একটি নতুন ডিরেক্টরি তৈরি করতে পারেন:
# OS মডিউল ইম্পোর্ট করুন import os # নতুন ডিরেক্টরির নাম dir_name = "example" try: # নতুন ডিরেক্টরি তৈরি করুন os.mkdir(dir_name) # রেজাল্ট প্রিন্ট করুন, যদি ডিরেক্টরি সফলভাবে তৈরি হয় print(f"Directory '{dir_name}' created successfully") # রেজাল্ট প্রিন্ট করুন, যদি ডিরেক্টরি ইতিমধ্যে থাকে except FileExistsError: print(f"Directory '{dir_name}' already exists")
আপনি মডিউলটি ব্যবহার করে একটি ডিরেক্টরি ডিলিটও করতে পারেন:
# OS মডিউল ইম্পোর্ট করুন import os # ডিলিট করার ডিরেক্টরির নাম dir_name = "example" try: # ডিরেক্টরি ডিলিট করুন os.rmdir(dir_name) # রেজাল্ট প্রিন্ট করুন, যদি সফলভাবে ডিলিট হয় print(f"Directory '{dir_name}' deleted successfully") # রেজাল্ট প্রিন্ট করুন, যদি ডিরেক্টরি এক্সিস্ট না করে except FileNotFoundError: print(f"Directory '{dir_name}' doesn't exist")
আপনি ফাইল এবং ডিরেক্টরি রিনেমও করতে পারেন:
# OS মডিউল ইম্পোর্ট করুন import os # ডিরেক্টরি বা ফাইলের করেন্ট নাম current_name = "example" new_name = "example2.0" try: # ডিরেক্টরি বা ফাইল রিনেম করুন content = os.rename(current_name, new_name) # ডিরেক্টরির কন্টেন্ট প্রিন্ট করুন print(f"Directory/File '{current_name}' was successfully renamed to '{new_name}'") # এরর মেসেজ প্রিন্ট করুন, যদি ডিরেক্টরি বা ফাইল এক্সিস্ট না করে except FileNotFoundError: print(f"Directory/File '{current_name}' doesn't exist")
ফাইলগুলো মডিউল ব্যবহার করে সহজে রিমুব করা যায়:
# OS মডিউল ইম্পোর্ট করুন import os # ডিলিট করার ফাইলের নাম file_name = "example.txt" try: # ফাইল ডিলিট করুন os.remove(file_name) # রেজাল্ট প্রিন্ট করুন, যদি সফলভাবে ডিলিট হয় print(f"File '{file_name}' deleted successfully") # রেজাল্ট প্রিন্ট করুন, যদি ফাইল এক্সিস্ট না করে except FileNotFoundError: print(f"File '{file_name}' doesn't exist")
কারেন্ট ওয়ার্কিং ডিরেক্টরি সহজে প্রিন্ট করা যায়:
# OS মডিউল ইম্পোর্ট করুন import os try: # কারেন্ট ওয়ার্কিং ডিরেক্টরি পান cwd = os.getcwd() # কারেন্ট ওয়ার্কিং ডিরেক্টরির নাম প্রিন্ট হয় print(cwd) # যদি এরর হয়, তবে প্রিন্ট হয় except: print("An error occurred")
একটি ডিরেক্টরির কন্টেন্ট, যেন ফাইল এবং সাবডিরেক্টরি, সহজে চেক করা যায়:
# OS মডিউল ইম্পোর্ট করুন import os # ডিরেক্টরির নাম dir_name = "example" try: # ডিরেক্টরির কন্টেন্ট পান content = os.listdir(dir_name) # ডিরেক্টরির কন্টেন্ট প্রিন্ট করুন print(content) # এরর প্রিন্ট করুন, যদি ডিরেক্টরি এক্সিস্ট না করে except FileNotFoundError: print(f"Directory '{dir_name}' doesn't exist")
মডিউল ব্যবহার করে কারেন্ট ইউজার প্রিন্ট করুন:
# OS মডিউল ইম্পোর্ট করুন import os try: # কারেন্ট ইউজারের নাম পান user = os.getlogin() # কারেন্ট ইউজারের নাম প্রিন্ট করুন print(user) # এরর মেসেজ প্রিন্ট করুন, যদি ঘটে except: print("An error occurred")
মডিউল ব্যবহার করে লিনাক্স শেল কমান্ডও রান করুন:
# OS মডিউল ইম্পোর্ট করুন import os # চালানোর শেল কমান্ড command = "sudo apt update && sudo apt upgrade -y" try: # সিস্টেম কমান্ড রান করুন result = os.system(command) # কমান্ডের রেজাল্ট প্রিন্ট করুন print(result) # এরর মেসেজ প্রিন্ট করুন, যদি এরর হয় except: print("An error occurred")
"socket" মডিউল ব্যবহার করে নেটওয়ার্কিং টাস্ক পারফর্ম করা
পাইথনে একটি মডিউল আছে যা বিভিন্ন নেটওয়ার্কিং টাস্ক পারফর্ম করা এবং কমপ্লেক্স নেটওয়ার্কিং-রিলেটেড ইউটিলিটি তৈরি করার জন্য তৈরি, যেন পোর্ট স্ক্যানার এবং ভিডিও গেম সার্ভার। এর কোন আশ্চর্য নয় যে "socket" মডিউলটি আপনার সিস্টেমে কমন এবং বেসিক নেটওয়ার্কিং টাস্ক পারফর্ম করার জন্যও ব্যবহার করা যায়।
আপনি উদাহরণস্বরূপ, আপনার সিস্টেমের IP অ্যাড্রেস এবং হোস্টনেম চেক করতে পারেন:
# socket মডিউল ইম্পোর্ট করুন import socket try: # হোস্টনেম পান host = socket.gethostname() # হোস্টের IP অ্যাড্রেস পান ip = socket.gethostbyname(host) # IP অ্যাড্রেস প্রিন্ট করুন print(f"IP address: {ip}") # হোস্টনেম প্রিন্ট করুন print(f"Hostname: {host}") # এরর মেসেজ প্রিন্ট করুন, যদি এরর হয় except: print("An error occurred")
আপনি মডিউলটি ব্যবহার করে একটি ওয়েবসাইটের IP অ্যাড্রেসও চেক করতে পারেন:
# socket মডিউল ইম্পোর্ট করুন import socket try: # চেক করার ডোমেইন domain = "duckduckgo.com" # ডোমেইনের IP অ্যাড্রেস পান ip = socket.gethostbyname(domain) # IP অ্যাড্রেস প্রিন্ট করুন print(f"IP address: {ip}") # এরর মেসেজ প্রিন্ট করুন, যদি এরর হয় except: print("An error occurred")
Paramiko ব্যবহার করে SSH সার্ভারে লগইন করা এবং কমান্ড চালানো
আপনি যদি SSH সার্ভার সেটআপ-এ লগইন করার প্রক্রিয়া এবং সেখানে কমান্ড চালানো অটোমেট করতে চান, তবে "Paramiko" পাইথন লাইব্রেরি অত্যন্ত উপযোগী হবে।
প্রথমে লাইব্রেরিটি পাইথনের pip3 প্যাকেজ ম্যানেজার ব্যবহার করে ডাউনলোড করুন:
pip3 install paramiko
মডিউলটি ব্যবহার করে SSH সার্ভারে লগইন করুন এবং কমান্ড চালান:
# Paramiko লাইব্রেরি ইম্পোর্ট করুন import paramiko # IP এবং ক্রেডেনশিয়াল স্পেসিফাই করুন ip = '127.0.0.1' port = 22 user = 'example' password = 'example' command = "uname -a" try: # Paramiko ক্লায়েন্ট ইনিশিয়েট করুন ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # SSH সার্ভারের সাথে কানেক্ট করুন ssh.connect(ip, port, user, password) # সিস্টেমে একটি কমান্ড রান করুন stdin, stdout, stderr = ssh.exec_command(command) # কমান্ডের রেজাল্ট প্রিন্ট করুন print(stdout.read().decode()) # এরর মেসেজ প্রিন্ট করুন, যদি এরর হয় except: print("An error occurred")
ফ্রিকোয়েন্টলি আস্কড কুয়েশচনস
১. কি এই মডিউল এবং লাইব্রেরিগুলো ব্যবহার করতে পাইথন ৩ লাগবে?
যদিও এই লাইব্রেরি এবং মডিউলগুলো অধিকাংশ পাইথন ২-তে কাজ করে, সিনট্যাক্সে পার্থক্য আছে, এবং এই কোড স্নিপেটগুলো রান করবে না। কিছু পরিবর্তন দিয়ে আপনি সেগুলো পাইথন ২-তে রান করার জন্য অ্যাডাপ্ট করতে পারেন। তবে পাইথন ২ আউটডেটেড, তাই আপনাকে পাইথন ৩ ব্যবহার করা উচিত।
২. কি "os" এবং "socket" মডিউল ইনস্টল করতে হবে?
সাধারণত, না। পাইথন-এর অধিকাংশ ইনস্টলেশন এই মডিউলগুলো আউট-অফ-দ-বক্স দিয়ে থাকে।
৩. কি Paramiko ব্যবহার করে নন-ইউনিক্স সিস্টেমে লগইন করা যায়?
Paramiko-এর ডেভেলপার অনুযায়ী, এই সময় লাইব্রেরিটি নন-ইউনিক্স সিস্টেমে SSH দিয়ে লগইন করতে ব্যবহার করা যায় না।