Python İle Kendi Terminalimizi Yazalım
Merhaba Forum Üyeleri ve Hocaları
Bu konumda Kendi Terminalimizi yazıcaz.
Kaynak kodlarını direk vericem istediğiniz gibi geliştirebilirsiniz ben klasik komutlardan ekledim
Geliştirirseniz ve benimlede paylaşırsanız sevinirim
Yorumlarınızı bekliyorum.
SS
KODLAR
Merhaba Forum Üyeleri ve Hocaları
Bu konumda Kendi Terminalimizi yazıcaz.
Kaynak kodlarını direk vericem istediğiniz gibi geliştirebilirsiniz ben klasik komutlardan ekledim
Geliştirirseniz ve benimlede paylaşırsanız sevinirim
Yorumlarınızı bekliyorum.
SS
KODLAR
Python:
import sys
import os
import socket
import getpass
import ctypes
from datetime import datetime
import shutil
import requests
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLineEdit, QTextEdit, QPushButton, QHBoxLayout, QLabel
from PyQt5.QtCore import Qt, QPoint
import platform
from PyQt5.QtGui import QFont, QPixmap
if sys.platform == "win32":
ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0)
class KaliTerminalSimulator(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("AYTLOGO Terminal Simülatörü")
self.setGeometry(200, 200, 800, 450)
self.setWindowFlag(Qt.FramelessWindowHint)
self.setWindowOpacity(0.95)
self.background_label = QLabel(self)
self.load_and_set_background_image("https://i.hizliresim.com/oimlmkb.jpg", self.background_label)
central_widget = QWidget(self)
self.setCentralWidget(central_widget)
self.layout = QVBoxLayout(central_widget)
top_frame = QWidget(self)
top_layout = QHBoxLayout(top_frame)
minimize_button = QPushButton("")
minimize_button.setFixedSize(20, 20)
minimize_button.setStyleSheet("""
QPushButton {
background-color: #00bcd4;
border-radius: 10px;
color: #ffffff;
font-weight: bold;
}
QPushButton:hover {
background-color: #0097a7;
}
""")
minimize_button.clicked.connect(self.showMinimized)
close_button = QPushButton("")
close_button.setFixedSize(20, 20)
close_button.setStyleSheet("""
QPushButton {
background-color: #ff5252;
border-radius: 10px;
color: #ffffff;
font-weight: bold;
}
QPushButton:hover {
background-color: #d50000;
}
""")
close_button.clicked.connect(self.close)
fullscreen_button = QPushButton("")
fullscreen_button.setFixedSize(20, 20)
fullscreen_button.setStyleSheet("""
QPushButton {
background-color: #4caf50;
border-radius: 10px;
color: #ffffff;
font-weight: bold;
}
QPushButton:hover {
background-color: #388e3c;
}
""")
fullscreen_button.clicked.connect(self.toggle_fullscreen)
top_layout.addWidget(minimize_button)
top_layout.addWidget(fullscreen_button)
top_layout.addWidget(close_button)
top_layout.setAlignment(Qt.AlignRight)
self.layout.addWidget(top_frame)
self.output_area = QTextEdit(self)
self.output_area.setReadOnly(True)
self.output_area.setStyleSheet("background-color: rgba(13, 13, 13, 150); color: white; font-size: 14pt;")
self.layout.addWidget(self.output_area)
self.command_input = QLineEdit(self)
self.command_input.setPlaceholderText("root@kali:~# Komut girin")
self.command_input.setStyleSheet("background-color: rgba(51, 51, 51, 200); color: white; font-size: 13pt;")
self.command_input.returnPressed.connect(self.execute_command)
self.layout.addWidget(self.command_input)
self.commands = {
"echo": self.echo_command,
"clear": self.clear_command,
"exit": self.exit_command,
"help": self.help_command,
"date": self.date_command,
"ls": self.ls_command,
"cd": self.cd_command,
"pwd": self.pwd_command,
"uname": self.uname_command,
"cat": self.cat_command,
"mkdir": self.mkdir_command,
"rm": self.rm_command,
"touch": self.touch_command,
"whoami": self.whoami_command,
"cp": self.cp_command,
"mv": self.mv_command,
"rmdir": self.rmdir_command,
"chmod": self.chmod_command,
"chown": self.chown_command,
"ifconfig": self.ifconfig_command,
}
self.current_directory = os.getcwd()
self.old_pos = None
def load_and_set_background_image(self, url, label):
try:
response = requests.get(url, stream=True)
response.raise_for_status()
pixmap = QPixmap()
pixmap.loadFromData(response.content)
pixmap_scaled = pixmap.scaled(self.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)
label.setPixmap(pixmap_scaled)
label.setGeometry(0, 0, self.width(), self.height())
except requests.exceptions.RequestException as e:
print(f"Error downloading background image: {e}")
def toggle_fullscreen(self):
if self.isFullScreen():
self.showNormal()
else:
self.showFullScreen()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.old_pos = event.globalPos()
def mouseMoveEvent(self, event):
if self.old_pos:
delta = QPoint(event.globalPos() - self.old_pos)
self.move(self.x() + delta.x(), self.y() + delta.y())
self.old_pos = event.globalPos()
def mouseReleaseEvent(self, event):
self.old_pos = None
def execute_command(self):
command_text = self.command_input.text()
self.command_input.clear()
if command_text:
self.output_area.append(f"root@kali:~# {command_text}")
command_parts = command_text.split()
command_name = command_parts[0]
if command_name in self.commands:
try:
self.commands[command_name](command_parts[1:])
except Exception as e:
self.output_area.append(f"Hata: {str(e)}\n")
else:
self.output_area.append(f"bash: {command_name}: Komut bulunamadı\n")
def echo_command(self, args):
self.output_area.append(" ".join(args) + "\n")
def clear_command(self, args):
self.output_area.clear()
def exit_command(self, args):
self.output_area.append("Terminal kapatılıyor...\n")
QApplication.quit()
def help_command(self, args):
help_text = (
"Kullanılabilir Komutlar:\n"
"echo <metin> - Yazılan metni tekrar eder\n"
"clear - Terminali temizler\n"
"exit - Terminali kapatır\n"
"help - Yardım menüsünü gösterir\n"
"date - Şu anki tarihi gösterir\n"
"ls - Dosya ve dizinleri listele\n"
"cd <dizin> - Dizin değiştir\n"
"pwd - Geçerli dizini gösterir\n"
"uname - Sistem bilgisini gösterir\n"
"cat <dosya> - Dosya içeriğini göster\n"
"mkdir <dizin> - Yeni bir dizin oluştur\n"
"rm <dosya> - Dosya sil\n"
"touch <dosya> - Yeni bir dosya oluştur\n"
"whoami - Kullanıcıyı gösterir\n"
"cp <kaynak> <hedef> - Dosyayı kopyala\n"
"mv <kaynak> <hedef> - Dosyayı taşı\n"
"rmdir <dizin> - Boş dizini sil\n"
"chmod <mod> <dosya> - Dosya izinlerini değiştir\n"
"chown <kullanıcı> <dosya> - Dosya sahibini değiştir\n"
"ifconfig - Bağlı olduğu IP adresini gösterir\n"
)
self.output_area.append(help_text + "\n")
def date_command(self, args):
self.output_area.append(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")
def ls_command(self, args):
try:
files = "\n".join(os.listdir(self.current_directory))
self.output_area.append(f"{files}\n")
except FileNotFoundError:
self.output_area.append("Dizin bulunamadı\n")
def cd_command(self, args):
if args:
new_dir = args[0]
try:
os.chdir(new_dir)
self.current_directory = os.getcwd()
except FileNotFoundError:
self.output_area.append("Dizin bulunamadı\n")
else:
self.output_area.append("Bir dizin giriniz\n")
def pwd_command(self, args):
self.output_area.append(f"{self.current_directory}\n")
def uname_command(self, args):
system_info = platform.uname()
info_text = (
f"Sistem: {system_info.system}\n"
f"Hostname: {system_info.node}\n"
f"Sürüm: {system_info.release}\n"
f"Yükleme: {system_info.version}\n"
f"Mimari: {system_info.machine}\n"
)
self.output_area.append(info_text)
def cat_command(self, args):
if args:
file_name = args[0]
try:
with open(file_name, 'r') as f:
content = f.read()
self.output_area.append(content + "\n")
except FileNotFoundError:
self.output_area.append("Dosya bulunamadı\n")
else:
self.output_area.append("Bir dosya adı giriniz\n")
def mkdir_command(self, args):
if args:
dir_name = args[0]
try:
os.makedirs(dir_name)
self.output_area.append(f"{dir_name} dizini oluşturuldu\n")
except FileExistsError:
self.output_area.append("Dizin zaten var\n")
else:
self.output_area.append("Bir dizin adı giriniz\n")
def rm_command(self, args):
if args:
file_name = args[0]
try:
os.remove(file_name)
self.output_area.append(f"{file_name} dosyası silindi\n")
except FileNotFoundError:
self.output_area.append("Dosya bulunamadı\n")
else:
self.output_area.append("Bir dosya adı giriniz\n")
def touch_command(self, args):
if args:
file_name = args[0]
with open(file_name, 'a'):
os.utime(file_name, None)
self.output_area.append(f"{file_name} dosyası oluşturuldu\n")
else:
self.output_area.append("Bir dosya adı giriniz\n")
def whoami_command(self, args):
self.output_area.append(f"Kullanıcı: {getpass.getuser()}\n")
def cp_command(self, args):
if len(args) == 2:
src, dest = args
try:
shutil.copy(src, dest)
self.output_area.append(f"{src} dosyası {dest} konumuna kopyalandı\n")
except FileNotFoundError:
self.output_area.append("Kaynak dosya bulunamadı\n")
else:
self.output_area.append("Geçersiz komut. Kullanım: cp <kaynak> <hedef>\n")
def mv_command(self, args):
if len(args) == 2:
src, dest = args
try:
shutil.move(src, dest)
self.output_area.append(f"{src} dosyası {dest} konumuna taşındı\n")
except FileNotFoundError:
self.output_area.append("Kaynak dosya bulunamadı\n")
else:
self.output_area.append("Geçersiz komut. Kullanım: mv <kaynak> <hedef>\n")
def rmdir_command(self, args):
if args:
dir_name = args[0]
try:
os.rmdir(dir_name)
self.output_area.append(f"{dir_name} dizini silindi\n")
except FileNotFoundError:
self.output_area.append("Dizin bulunamadı veya boş değil\n")
else:
self.output_area.append("Bir dizin adı giriniz\n")
def chmod_command(self, args):
if len(args) == 2:
mode, file_name = args
try:
os.chmod(file_name, int(mode, 8))
self.output_area.append(f"{file_name} dosyasının izinleri değiştirildi\n")
except FileNotFoundError:
self.output_area.append("Dosya bulunamadı\n")
else:
self.output_area.append("Geçersiz komut. Kullanım: chmod <mod> <dosya>\n")
def chown_command(self, args):
if len(args) == 2:
user, file_name = args
try:
os.chown(file_name, int(user), -1)
self.output_area.append(f"{file_name} dosyasının sahibi değiştirildi\n")
except FileNotFoundError:
self.output_area.append("Dosya bulunamadı\n")
else:
self.output_area.append("Geçersiz komut. Kullanım: chown <kullanıcı> <dosya>\n")
def ifconfig_command(self, args):
ip_info = self.get_ip_info()
self.output_area.append(f"Ağ Arayüz Bilgileri:\n{ip_info}\n")
def get_ip_info(self):
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)
return f"Hostname: {hostname}\nIP Address: {ip_address}"
if __name__ == "__main__":
app = QApplication(sys.argv)
terminal = KaliTerminalSimulator()
terminal.show()
sys.exit(app.exec_())




