Added - SSH Known Hosts Manager

This commit is contained in:
2026-01-23 11:35:04 +01:00
parent fe55065adb
commit 7517a2521f

View File

@@ -0,0 +1,243 @@
@echo off
REM === SSH Known Hosts Manager ===
setlocal enabledelayedexpansion
set SSH_DIR=%USERPROFILE%\.ssh
set KNOWN_HOSTS=%SSH_DIR%\known_hosts
set KNOWN_HOSTS_OLD=%SSH_DIR%\known_hosts.old
:MENU
cls
echo ========================================
echo SSH Known Hosts Manager
echo ========================================
echo.
echo SSH Directory: %SSH_DIR%
echo.
REM Check if .ssh directory exists
if not exist "%SSH_DIR%" (
echo ERROR: .ssh directory not found!
echo Directory does not exist: %SSH_DIR%
echo.
pause
exit /b 1
)
REM Check which files exist
set HOSTS_EXISTS=0
set HOSTS_OLD_EXISTS=0
if exist "%KNOWN_HOSTS%" set HOSTS_EXISTS=1
if exist "%KNOWN_HOSTS_OLD%" set HOSTS_OLD_EXISTS=1
REM Display available files
echo Available files:
echo.
if %HOSTS_EXISTS%==0 if %HOSTS_OLD_EXISTS%==0 (
echo No known_hosts files found!
echo.
pause
exit /b 0
)
set FILE_COUNT=0
if %HOSTS_EXISTS%==1 (
set /a FILE_COUNT+=1
echo [!FILE_COUNT!] known_hosts
set "FILE_1=HOSTS"
)
if %HOSTS_OLD_EXISTS%==1 (
set /a FILE_COUNT+=1
echo [!FILE_COUNT!] known_hosts.old
if %HOSTS_EXISTS%==1 (
set "FILE_2=HOSTS_OLD"
) else (
set "FILE_1=HOSTS_OLD"
)
)
echo.
echo [0] Exit
echo.
echo ========================================
set /p FILE_CHOICE="Select file to manage: "
if "%FILE_CHOICE%"=="0" goto EXIT
REM Determine which file was selected
set "SELECTED_FILE="
set "SELECTED_NAME="
if "%FILE_CHOICE%"=="1" (
if "!FILE_1!"=="HOSTS" (
set "SELECTED_FILE=%KNOWN_HOSTS%"
set "SELECTED_NAME=known_hosts"
) else if "!FILE_1!"=="HOSTS_OLD" (
set "SELECTED_FILE=%KNOWN_HOSTS_OLD%"
set "SELECTED_NAME=known_hosts.old"
)
)
if "%FILE_CHOICE%"=="2" (
if "!FILE_2!"=="HOSTS_OLD" (
set "SELECTED_FILE=%KNOWN_HOSTS_OLD%"
set "SELECTED_NAME=known_hosts.old"
)
)
if "!SELECTED_FILE!"=="" (
echo Invalid selection!
timeout /t 2 >nul
goto MENU
)
:FILE_MENU
cls
echo ========================================
echo Managing: !SELECTED_NAME!
echo ========================================
echo.
echo [1] View file content
echo [2] Delete specific line
echo [3] Delete entire file
echo [0] Back to file selection
echo.
echo ========================================
set /p ACTION="Select action: "
if "%ACTION%"=="1" goto VIEW_FILE
if "%ACTION%"=="2" goto DELETE_LINE
if "%ACTION%"=="3" goto DELETE_FILE
if "%ACTION%"=="0" goto MENU
goto FILE_MENU
:VIEW_FILE
cls
echo ========================================
echo Content of !SELECTED_NAME!
echo ========================================
echo.
set LINE_NUM=0
for /f "delims=" %%a in (!SELECTED_FILE!) do (
set /a LINE_NUM+=1
echo [!LINE_NUM!] %%a
)
if %LINE_NUM%==0 (
echo File is empty
)
echo.
echo Total lines: %LINE_NUM%
echo.
pause
goto FILE_MENU
:DELETE_LINE
cls
echo ========================================
echo Delete Line from !SELECTED_NAME!
echo ========================================
echo.
echo Current content:
echo ----------------------------------------
set LINE_NUM=0
for /f "delims=" %%a in (!SELECTED_FILE!) do (
set /a LINE_NUM+=1
echo [!LINE_NUM!] %%a
)
echo ----------------------------------------
echo Total lines: %LINE_NUM%
echo.
if %LINE_NUM%==0 (
echo File is empty - nothing to delete
pause
goto FILE_MENU
)
set /p DEL_LINE="Enter line number to delete (0 to cancel): "
if "%DEL_LINE%"=="0" goto FILE_MENU
REM Validate input
set "VALID=0"
for /l %%i in (1,1,%LINE_NUM%) do (
if "%DEL_LINE%"=="%%i" set "VALID=1"
)
if "%VALID%"=="0" (
echo Invalid line number!
pause
goto FILE_MENU
)
echo.
set /p BACKUP="Create backup before deletion? (Y/N): "
if /i "%BACKUP%"=="Y" (
copy "!SELECTED_FILE!" "!SELECTED_FILE!.backup" >nul 2>&1
echo Backup created: !SELECTED_NAME!.backup
)
echo Deleting line %DEL_LINE%...
REM Create new file without the specified line
set CURRENT_LINE=0
(for /f "delims=" %%a in (!SELECTED_FILE!) do (
set /a CURRENT_LINE+=1
if not !CURRENT_LINE!==%DEL_LINE% echo %%a
)) > "!SELECTED_FILE!.tmp"
move /y "!SELECTED_FILE!.tmp" "!SELECTED_FILE!" >nul
echo.
echo [OK] Line %DEL_LINE% deleted successfully!
echo.
pause
goto FILE_MENU
:DELETE_FILE
cls
echo ========================================
echo Delete !SELECTED_NAME! File
echo ========================================
echo.
echo WARNING: This will delete the entire !SELECTED_NAME! file!
echo.
set /p CONFIRM="Are you sure? (Y/N): "
if /i not "%CONFIRM%"=="Y" (
echo Operation cancelled.
pause
goto FILE_MENU
)
echo.
set /p BACKUP="Create backup before deletion? (Y/N): "
if /i "%BACKUP%"=="Y" (
copy "!SELECTED_FILE!" "!SELECTED_FILE!.backup" >nul 2>&1
echo Backup created: !SELECTED_NAME!.backup
)
del /f "!SELECTED_FILE!" >nul 2>&1
echo.
echo [OK] !SELECTED_NAME! file deleted!
echo.
pause
goto MENU
:EXIT
cls
echo Exiting...
timeout /t 1 /nobreak >nul
exit