Качване и сваляне на файлове чрез SSH с графичен потребителски интерфейс (GUI)

transfer-ssh

Това е прост скрипт на Python, който предоставя графичен потребителски интерфейс (GUI) за качване и сваляне на файлове чрез SSH.

Подробности за скрипта

Скриптът ви подканва да въведете следната информация:

IP адрес: Въведете IP адреса на отдалечения сървър.

SSH потребителско име: Въведете потребителското име, което да използвате за SSH удостоверяване.

След това скриптът представя две опции:

Качване на файл: Въведете локалния път на файла, който искате да качите, и отдалечения път на сървъра, където искате да го качите.

Изтегляне на файл: Въведете отдалечения път на файла, който искате да изтеглите, и локалния път, където искате да го запишете.

ssh transfer

Забележка

Направил съм SSH ключът да е статичен. За това ще трябва да промените името на ключа с името на вашият ключ.

Предпоставки

Трябва да имате инсталиран Python на вашата система. Скриптът използва библиотеката tkinter за създаване на GUI

Как да започнете

Трябва да започнете със създаване на нов файл с разширение ".py". Отворете любимият си тестов редактор и добавете следният код:

# Author     : Fedya Serafiev
# Version    : 1.3
# License    : MIT
# Copyright  : Fedya Serafiev (2023)
# Github     : https://github.com/fantomas4o/ssh-transfer-script.git
# Contact    : https://urocibg.eu/

import tkinter as tk
import subprocess

class SSHFileTransferApp:
    def __init__(self, root):
        self.root = root
        self.root.title("SSH File Transfer")
        
        # Описание на променливите и тяхната инициализация
        self.private_key_path = "~/.ssh/key.id_rsa"
        self.ip_var = tk.StringVar()
        self.username_var = tk.StringVar()
        self.local_file_var = tk.StringVar()
        self.remote_file_var = tk.StringVar()
        
        # Създаване на текстовите полета
        self.create_entry("IP адрес:", self.ip_var)
        self.create_entry("Потребителско име за SSH:", self.username_var)
        self.create_entry("Локален път до файла:", self.local_file_var)
        self.create_entry("Път на сървъра до файла:", self.remote_file_var)
        
        # Създаване на бутоните и резултатен текст
        upload_button = self.create_button("Качване на файл", self.upload_file)
        download_button = self.create_button("Сваляне на файл", self.download_file)
        self.result_label = tk.Label(root, text="")
        self.result_label.pack()

    def create_entry(self, label_text, text_variable):
        label = tk.Label(root, text=label_text)
        label.pack()
        entry = tk.Entry(root, textvariable=text_variable)
        entry.pack()
        return entry

    def create_button(self, button_text, button_command):
        button = tk.Button(root, text=button_text, command=button_command)
        button.pack()
        return button

    def upload_file(self):
        ip = self.ip_var.get()
        username = self.username_var.get()
        local_file_path = self.local_file_var.get()
        remote_file_path = self.remote_file_var.get()
        cmd = f'scp -i {self.private_key_path} {local_file_path} {username}@{ip}:{remote_file_path}'
        subprocess.run(cmd, shell=True)
        self.result_label.config(text="Файлът беше успешно качен.")

    def download_file(self):
        ip = self.ip_var.get()
        username = self.username_var.get()
        local_file_path = self.local_file_var.get()
        remote_file_path = self.remote_file_var.get()
        cmd = f'scp -i {self.private_key_path} {username}@{ip}:{remote_file_path} {local_file_path}'
        subprocess.run(cmd, shell=True)
        self.result_label.config(text="Файлът беше успешно свален.")

if __name__ == "__main__":
    root = tk.Tk()
    root.geometry("400x300")  # Задаване на размерите на прозореца
    app = SSHFileTransferApp(root)
    root.mainloop()

Променете key.id_rsa с вашето име на ключа.

Запазете файла и му дайте име, примерно transfer-ssh.py

Отворете терминал и отидете до папката, съдържаща скрипта.

Стартирайте скрипта, като изпълните следната команда:

python3 transfer-ssh.py

Ще се отвори прозорецът на GUI. Следвайте подканите.

Това е.

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: