Added - SSH Known Hosts Manager
This commit is contained in:
243
files/ssh-known-hosts-manager.bat
Normal file
243
files/ssh-known-hosts-manager.bat
Normal 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
|
||||||
Reference in New Issue
Block a user