added additional functions
This commit is contained in:
parent
67a5534246
commit
92ffaa431b
2 changed files with 3 additions and 89 deletions
|
@ -1,5 +1,6 @@
|
||||||
❯ python -m ssh_manager
|
❯ python -m ssh_manager
|
||||||
|
|
||||||
|
```
|
||||||
SSH Conf Subdirectory Host List
|
SSH Conf Subdirectory Host List
|
||||||
+-------+------------+--------+--------+------------+--------------+------------------------+
|
+-------+------------+--------+--------+------------+--------------+------------------------+
|
||||||
| No. | Host | User | Port | HostName | IP Address | Conf Directory |
|
| No. | Host | User | Port | HostName | IP Address | Conf Directory |
|
||||||
|
@ -19,3 +20,4 @@ SSH Config Manager Menu
|
||||||
5. Remove Host
|
5. Remove Host
|
||||||
6. Exit
|
6. Exit
|
||||||
Select an option (1-6):
|
Select an option (1-6):
|
||||||
|
```
|
88
migration.py
88
migration.py
|
@ -1,88 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import shutil
|
|
||||||
|
|
||||||
def main():
|
|
||||||
"""
|
|
||||||
For each config file in ~/.ssh/conf, find lines matching:
|
|
||||||
IdentityFile ~/.ssh/conf/<folderA>/keys/<folderB>/id_ed25519[.pub]?
|
|
||||||
and replace them with:
|
|
||||||
IdentityFile ~/.ssh/conf/<folderB>/id_ed25519[.pub]?
|
|
||||||
|
|
||||||
Then physically move the key file from:
|
|
||||||
~/.ssh/conf/<folderA>/keys/<folderB>/
|
|
||||||
to:
|
|
||||||
~/.ssh/conf/<folderB>/
|
|
||||||
"""
|
|
||||||
|
|
||||||
conf_root = os.path.expanduser("~/.ssh/conf")
|
|
||||||
# Regex capturing the path:
|
|
||||||
# group(1) -> "IdentityFile ~/.ssh/conf/"
|
|
||||||
# group(2) -> folderA
|
|
||||||
# group(3) -> folderB
|
|
||||||
# group(4) -> "id_ed25519" or "id_ed25519.pub"
|
|
||||||
# group(5) -> "id_ed25519" (without .pub)
|
|
||||||
# group(6) -> ".pub" or empty
|
|
||||||
pattern = re.compile(r'(IdentityFile\s+~/.ssh/conf/)([^/]+)/keys/([^/]+)/((id_ed25519)(\.pub)?)')
|
|
||||||
|
|
||||||
# Walk the ~/.ssh/conf directory tree
|
|
||||||
for root, dirs, files in os.walk(conf_root):
|
|
||||||
for f in files:
|
|
||||||
# Only process "config" or "*.conf" files
|
|
||||||
if f == "config" or f.endswith(".conf"):
|
|
||||||
file_path = os.path.join(root, f)
|
|
||||||
|
|
||||||
# Read the file
|
|
||||||
with open(file_path, 'r') as fp:
|
|
||||||
lines = fp.readlines()
|
|
||||||
|
|
||||||
new_lines = []
|
|
||||||
changed = False
|
|
||||||
|
|
||||||
# Check each line for the pattern
|
|
||||||
for line in lines:
|
|
||||||
match = pattern.search(line)
|
|
||||||
if match:
|
|
||||||
# We found a line with the old IdentityFile path
|
|
||||||
new_line = pattern.sub(r'\1\3/\4', line)
|
|
||||||
changed = True
|
|
||||||
|
|
||||||
# Example of what we captured:
|
|
||||||
folderA = match.group(2) # e.g. "foxdale"
|
|
||||||
folderB = match.group(3) # e.g. "atlas"
|
|
||||||
keyfile = match.group(4) # e.g. "id_ed25519" or "id_ed25519.pub"
|
|
||||||
|
|
||||||
# Build old/new file paths
|
|
||||||
old_file_path = os.path.join(conf_root, folderA, "keys", folderB, keyfile)
|
|
||||||
new_file_path = os.path.join(conf_root, folderB, keyfile)
|
|
||||||
|
|
||||||
print(f"Moving {old_file_path} => {new_file_path}")
|
|
||||||
|
|
||||||
# Ensure the destination folder exists
|
|
||||||
os.makedirs(os.path.dirname(new_file_path), exist_ok=True)
|
|
||||||
|
|
||||||
# Move the file if it exists
|
|
||||||
if os.path.isfile(old_file_path):
|
|
||||||
try:
|
|
||||||
shutil.move(old_file_path, new_file_path)
|
|
||||||
except Exception as e:
|
|
||||||
print(f"Error moving file: {e}")
|
|
||||||
else:
|
|
||||||
print(f"[WARNING] Key file not found: {old_file_path}")
|
|
||||||
|
|
||||||
line = new_line
|
|
||||||
|
|
||||||
new_lines.append(line)
|
|
||||||
|
|
||||||
# If we changed anything, rewrite the config file
|
|
||||||
if changed:
|
|
||||||
with open(file_path, 'w') as fp:
|
|
||||||
fp.writelines(new_lines)
|
|
||||||
print(f"Updated IdentityFile paths in {file_path}")
|
|
||||||
|
|
||||||
print("Done fixing IdentityFile paths and moving key files.")
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue