From 67a553424630000d97214d76b310849db3b70346 Mon Sep 17 00:00:00 2001 From: Arctic Date: Fri, 7 Mar 2025 06:08:30 -0600 Subject: [PATCH] added additional functions --- README.md | 27 ++++-- add_host.py | 48 +++++++---- cli.py | 32 +++++-- edit_host.py | 189 ++++++++++++++++++++++++++++++------------ list_hosts.py | 46 +++++----- regen_key.py | 221 +++++++++++++++++++++++++++++++++++++++++++++++++ remove_host.py | 186 +++++++++++++++++++++++++++++++++++++++++ utils.py | 12 +++ 8 files changed, 654 insertions(+), 107 deletions(-) create mode 100644 regen_key.py create mode 100644 remove_host.py diff --git a/README.md b/README.md index 7a28e0f..56bedce 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,21 @@ -# SSH Hosts Configuration (Example) +❯ python -m ssh_manager -This table provides an example of SSH host configurations. +SSH Conf Subdirectory Host List ++-------+------------+--------+--------+------------+--------------+------------------------+ +| No. | Host | User | Port | HostName | IP Address | Conf Directory | ++=======+============+========+========+============+==============+========================+ +| 1 | example_1 | user_1 | 22 | 10.0.0.6 | 10.0.0.6 | ~/.ssh/conf/example_1 | ++-------+------------+--------+--------+------------+--------------+------------------------+ +| 3 | example_2 | user_1 | 22 | 10.0.0.6 | 10.0.0.6 | ~/.ssh/conf/example_1 | ++-------+------------+--------+--------+------------+--------------+------------------------+ +| 3 | example_3 | user_2 | 2222 | 10.0.0.6 | 10.0.0.6 | ~/.ssh/conf/example_1 | ++-------+------------+--------+--------+------------+--------------+------------------------+ -| No. | Host | User | Port | HostName | IP Address | IdentityFile | -|---- |----------|--------|------|-----------------|--------------|--------------------------------------| -| 1 | server1 | user1 | 22 | host1.example.com | 192.168.1.10 | N/A | -| 2 | server2 | user1 | 22 | host2.example.com | 203.0.113.10 | N/A | -| 3 | server3 | user1 | 22 | host3.example.com | 10.0.0.5 | ~/.ssh/conf/server3/id_ed25519 | -| 4 | server4 | user1 | 22 | host4.example.com | 10.0.0.6 | ~/.ssh/conf/server4/id_ed25519 | +SSH Config Manager Menu +1. List Hosts +2. Add a Host +3. Edit a Host +4. Regenerate Key +5. Remove Host +6. Exit +Select an option (1-6): \ No newline at end of file diff --git a/add_host.py b/add_host.py index dd14eab..38e25eb 100644 --- a/add_host.py +++ b/add_host.py @@ -2,7 +2,7 @@ import os import subprocess -from .utils import print_error, print_warning, print_info +from .utils import print_error, print_warning, print_info, safe_input def add_host(conf_dir): """ @@ -12,18 +12,31 @@ def add_host(conf_dir): """ print_info("Adding a new SSH host...") - host_label = input("Enter Host label (e.g. myserver): ").strip() + host_label = safe_input("Enter Host label (e.g. myserver): ") + if host_label is None: + return # User canceled (Ctrl+C) + host_label = host_label.strip() if not host_label: print_error("Host label cannot be empty.") return - hostname = input("Enter HostName (IP or domain): ").strip() + hostname = safe_input("Enter HostName (IP or domain): ") + if hostname is None: + return + hostname = hostname.strip() if not hostname: print_error("HostName cannot be empty.") return - user = input("Enter username (default: 'root'): ").strip() or "root" - port = input("Enter SSH port (default: 22): ").strip() or "22" + user = safe_input("Enter username (default: 'root'): ") + if user is None: + return + user = user.strip() or "root" + + port = safe_input("Enter SSH port (default: 22): ") + if port is None: + return + port = port.strip() or "22" # Create subdirectory: ~/.ssh/conf/