Bu Python sınıfı, Linux terminaline arayüz ile komut göndermeye olanak tanır. Genellikle Füze Paket Yükleyicisi yazılımının bir parçasıdır ve diğer yazılımcıların terminale komut göndermelerini kolaylaştırmak için tasarlanmıştır.
Sınıf, PyQt5 kütüphanesi kullanılarak geliştirilmiştir ve aşağıdaki temel adımları içerir:
-
Sudo Şifresi Alma: Kullanıcıdan sudo/root yetkileri için şifre alır.
sudo_password, ok_pressed = QInputDialog.getText(self, 'Sudo Şifresi', 'Sudo şifrenizi girin:', QLineEdit.Password)
-
Seçilen Program Bilgisini Alma: 'apps.json' dosyasındaki verileri kullanarak, kullanıcının seçtiği programa ait bilgileri alır.
with open('apps.json', 'r') as file: apps_data = json.load(file) selected_program = next((app for app in apps_data if app.get('appId') == self.app_id), None)
-
Komutu Sudo Yetkileriyle Çalıştırma: Sudo yetkileriyle bir komutu çalıştırmak için subprocess kütüphanesini kullanır. Kullanıcıdan alınan sudo şifresini kullanarak işlemi başlatır.
command = f'sudo -S {app_command}' process = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
-
Kullanıcı Girişi Gerekiyorsa İşlemi Tamamlama: Eğer komut kullanıcı girişi istiyorsa, kullanıcıya bir giriş ile devam etme seçeneği sunar.
if "[E/h]" in process.stdout.read(): response, ok_pressed = QInputDialog.getItem(self, 'Devam Et', 'Bu işlemi devam ettirmek ister misiniz?', ['E', 'h'], 0)
-
Terminal Çıktısını Gösterme: İşlemin çıktılarını bir yeni pencerede gösterir.
output_dialog = OutputDialog(process.stdout.read(), process.stderr.read()) output_dialog.exec_()
-
Terminali Kapatma İsteği: Kullanıcıdan terminali kapatmak isteyip istemediğini sorar.
response = self.ask_to_close_terminal() if response == "Yes": self.close()
Eğer bir komut çalıştırılırken hata oluşursa, subprocess.CalledProcessError
yakalanır ve hatayla ilgili bilgiler yazdırılır.
except subprocess.CalledProcessError as e:
print(f"Komutu çalıştırma hatası: {e}")
print(f"Komut çıktısı (stdout): {e.stdout}")
print(f"Komut çıktısı (stderr): {e.stderr}")
Bu sınıf açık kaynaklıdır ve MIT Lisansı altında lisanslanmıştır.
Bu README.md dosyası, sınıfınızın temel kullanımını ve hata durumlarını anlamak için diğer geliştiricilere rehberlik etmek üzere tasarlanmıştır. Dilerseniz, belgeleri özelleştirebilir ve daha fazla detay ekleyebilirsiniz.