Linux Automation

Python से लिनक्स टर्मिनल नियंत्रण में महारथ

Spread the love

यह लेख पायथन का उपयोग करके लिनक्स टर्मिनलों को नियंत्रित करने और उनके साथ इंटरैक्ट करने की तकनीकों का पता लगाता है। हम सरल कमांड निष्पादन से लेकर लगातार टर्मिनल सत्रों को शामिल करने वाले अधिक उन्नत परिदृश्यों तक विभिन्न विधियों को कवर करेंगे।

विषय सूची

एक नया टर्मिनल खोलना और कमांड चलाना

नया टर्मिनल खोलने और कमांड निष्पादित करने का सबसे सरल तरीका subprocess मॉड्यूल का उपयोग करना है। इसमें एक नया टर्मिनल एमुलेटर प्रक्रिया लॉन्च करना और कमांड को एक तर्क के रूप में पास करना शामिल है। टर्मिनल लॉन्च करने के लिए विशिष्ट कमांड आपके डेस्कटॉप वातावरण (जैसे, gnome-terminal, konsole, xterm) के आधार पर अलग-अलग होता है।

import subprocess

def run_command_in_new_terminal(command, terminal_command="gnome-terminal"):
    """एक नया टर्मिनल खोलता है और निर्दिष्ट कमांड चलाता है।

    Args:
        command: निष्पादित करने के लिए कमांड।
        terminal_command: टर्मिनल एमुलेटर लॉन्च करने के लिए कमांड। डिफ़ॉल्ट रूप से 'gnome-terminal'।
    """
    try:
        subprocess.run([terminal_command, '--', 'bash', '-c', command + ' ; exec bash'])  #टर्मिनल को खुला रखता है
        print(f"कमांड '{command}' एक नए टर्मिनल में निष्पादित किया गया।")
    except FileNotFoundError:
        print(f"त्रुटि: {terminal_command} नहीं मिला। कृपया सुनिश्चित करें कि यह स्थापित है और आपके PATH में है।")
    except subprocess.CalledProcessError as e:
        print(f"कमांड निष्पादित करने में त्रुटि: {e}")

run_command_in_new_terminal("ls -l")
run_command_in_new_terminal("top", terminal_command="xterm") # xterm के साथ उदाहरण

यह बेहतर संस्करण विभिन्न टर्मिनल एमुलेटर को संभालता है और कमांड के समाप्त होने के बाद टर्मिनल को खुला रखने के लिए exec bash का उपयोग करता है।

पायथन संस्करण की जाँच करना

sys मॉड्यूल का उपयोग करके पायथन संस्करण का निर्धारण सरल है:

import sys

def get_python_version():
    """वर्तमान पायथन संस्करण प्रिंट करता है।"""
    print(f"पायथन संस्करण: {sys.version}")

get_python_version()

टर्मिनलों को चालू रखना

किसी कमांड के पूर्ण होने के बाद एक खुला टर्मिनल बनाए रखने के लिए, सुनिश्चित करें कि आपका कमांड अनिश्चित काल तक चलता है या शेल को सक्रिय रखने के लिए किसी तंत्र का उपयोग करता है। उदाहरण के लिए, ls -l जैसे एकमुश्त कमांड के बजाय, एक कमांड का उपयोग करें जो लगातार डेटा आउटपुट करता है, जैसे tail -f /var/log/syslog, या एक कमांड शामिल करें जो शेल को चलता रहता है (जैसा कि पहले उदाहरण में दिखाया गया है)।

उन्नत subprocess तकनीकें

अधिक जटिल इंटरैक्शन के लिए, subprocess.Popen() बेहतर नियंत्रण प्रदान करता है। यह अपने मानक इनपुट, आउटपुट और त्रुटि धाराओं के माध्यम से स्पॉन की गई प्रक्रिया के साथ द्विदिश संचार की अनुमति देता है। हालाँकि, पहले से खुले टर्मिनल को सीधे हेरफेर करने के लिए अधिक उन्नत तकनीकों की आवश्यकता होती है, जिसमें संभावित रूप से छद्म-टर्मिनल (ptys) शामिल होते हैं।

निष्कर्ष

इस लेख में पायथन के माध्यम से लिनक्स टर्मिनलों के प्रबंधन के लिए विभिन्न तरीकों को प्रस्तुत किया गया है, जिसमें सरल कमांड निष्पादन से लेकर अधिक परिष्कृत नियंत्रण तक शामिल है। ये कार्य subprocess मॉड्यूल के लिए केंद्रीय हैं। उपयुक्त टर्मिनल एमुलेटर चुनना और अपने विशिष्ट वातावरण में कमांड को अनुकूलित करना याद रखें। अत्यधिक इंटरैक्टिव परिदृश्यों या जटिल नियंत्रण के लिए, अधिक उन्नत टर्मिनल हेरफेर के लिए pty मॉड्यूल का पता लगाएँ।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *