Linux Automation

Python ile Linux Terminal Kontrolü

Spread the love

Bu makale, Python kullanarak Linux terminallerini kontrol etme ve onlarla etkileşim kurma tekniklerini ele alıyor. Basit komut yürütmeden kalıcı terminal oturumlarını içeren daha gelişmiş senaryolara kadar çeşitli yöntemleri kapsayacağız.

İçerik Tablosu

Yeni Terminal Açma ve Komutları Çalıştırma

Yeni bir terminal açmanın ve komutları çalıştırmanın en basit yolu subprocess modülünü kullanmaktır. Bu, yeni bir terminal emülatörü işlemi başlatmayı ve komutu bir bağımsız değişken olarak geçirmeyi içerir. Terminal başlatmak için özel komut, masaüstü ortamınıza bağlı olarak değişir (örneğin, gnome-terminal, konsole, xterm).

import subprocess

def run_command_in_new_terminal(command, terminal_command="gnome-terminal"):
    """Yeni bir terminal açar ve belirtilen komutu çalıştırır.

    Args:
        command: Çalıştırılacak komut.
        terminal_command: Terminal emülatörünü başlatacak komut. Varsayılan olarak 'gnome-terminal'.
    """
    try:
        subprocess.run([terminal_command, '--', 'bash', '-c', command + ' ; exec bash'])  #Terminali açık tutar
        print(f"'{command}' komutu yeni bir terminalde çalıştırıldı.")
    except FileNotFoundError:
        print(f"Hata: {terminal_command} bulunamadı. Lütfen kurulu olduğundan ve PATH'inizde olduğundan emin olun.")
    except subprocess.CalledProcessError as e:
        print(f"Komutu çalıştırırken hata: {e}")

run_command_in_new_terminal("ls -l")
run_command_in_new_terminal("top", terminal_command="xterm") # xterm ile örnek

Bu geliştirilmiş sürüm farklı terminal emülatörlerini işler ve komut tamamlandıktan sonra terminali açık tutmak için exec bash kullanır.

Python Sürümünü Kontrol Etme

Python sürümünü belirlemek, sys modülünü kullanarak oldukça basittir:

import sys

def get_python_version():
    """Geçerli Python sürümünü yazdırır."""
    print(f"Python sürümü: {sys.version}")

get_python_version()

Terminalleri Açık Tutma

Bir komut tamamlandıktan sonra açık bir terminal sağlamak için, komutunuzun süresiz olarak çalışmasını veya kabuğu aktif tutmak için bir mekanizma kullanmasını sağlayın. Örneğin, ls -l gibi tek seferlik bir komut yerine, sürekli veri çıkışı sağlayan bir komut (örneğin, tail -f /var/log/syslog) kullanın veya kabuğu çalışır durumda tutan bir komut ekleyin (ilk örnekte gösterildiği gibi).

Gelişmiş subprocess Teknikleri

Daha karmaşık etkileşimler için subprocess.Popen() daha ince bir kontrol sağlar. Standart giriş, çıkış ve hata akışları aracılığıyla oluşturulan işlemle çift yönlü iletişim kurulmasına olanak tanır. Bununla birlikte, zaten açık olan bir terminali doğrudan manipüle etmek, muhtemelen yalancı terminalleri (pty’ler) içeren daha gelişmiş teknikler gerektirir.

Sonuç

Bu makale, basit komut yürütmeden daha karmaşık kontrole kadar, Python aracılığıyla Linux terminallerini yönetmenin çeşitli yöntemlerini sundu. subprocess modülü bu görevlerin merkezinde yer almaktadır. Uygun terminal emülatörünü seçin ve komutları belirli ortamınıza göre uyarlayın. Son derece etkileşimli senaryolar veya karmaşık kontrol için, daha gelişmiş terminal manipülasyonu için pty modülünü inceleyin.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir