Update README.md
This commit is contained in:
16
README.md
16
README.md
@@ -2,9 +2,19 @@
|
|||||||
|
|
||||||
The Windows *cmd* file `install-beszel-service.cmd` installs the [Beszel](https://beszel.dev) agent as a service under Microsoft Windows.
|
The Windows *cmd* file `install-beszel-service.cmd` installs the [Beszel](https://beszel.dev) agent as a service under Microsoft Windows.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- Microsoft Windows 10 or later (32 or 64 bit)
|
||||||
|
- Git installed
|
||||||
|
|
||||||
|
If you don´t have Git installed, either
|
||||||
|
|
||||||
|
- install Git with Winget: `winget install git.git` or
|
||||||
|
- download and extract the ZIP file from [Releases](https://gitea.elpatron.me/elpatron/Install-Beszel-Agent/releases/).
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Open a `cmd.exe` shell with administrative rights.
|
Open a `cmd.exe` shell with **administrative rights**.
|
||||||
|
|
||||||
````
|
````
|
||||||
git clone https://gitea.elpatron.me/elpatron/Install-Beszel-Agent
|
git clone https://gitea.elpatron.me/elpatron/Install-Beszel-Agent
|
||||||
@@ -14,8 +24,8 @@ cd Install-Beszel-Agent
|
|||||||
|
|
||||||
## Explanation
|
## Explanation
|
||||||
|
|
||||||
The script copies `agent.exe` into the directory `%ProgramFiles%\BeszelAgent` and takes usage of *[NSSM - the Non-Sucking Service Manager](https://nssm.cc/)* to install the service. *NSSM* is being installed by *[Winget](https://github.com/microsoft/winget-cli)*.
|
The script copies `agent.exe` into the directory `%ProgramFiles%\BeszelAgent` and takes usage of *[NSSM - the Non-Sucking Service Manager](https://nssm.cc/)* to install the service. If *NSSM* is not yet installed on your system, it will be downloaded and installed to the Beszel agent directory.
|
||||||
|
|
||||||
The provided `agent.exe` was compiled on January, 18th 2025 by me and should be exchanged by a self compiled or official executable.
|
The provided `agent.exe` was compiled on January, 17th 2025 by me and should be exchanged by a self compiled or official executable.
|
||||||
|
|
||||||
For more details, see [*Using Beszel to monitor Windows*](https://blog.ktz.me/using-beszel-to-monitor-windows/) by Alex Kretschmar.
|
For more details, see [*Using Beszel to monitor Windows*](https://blog.ktz.me/using-beszel-to-monitor-windows/) by Alex Kretschmar.
|
130
RefreshEnv.cmd
130
RefreshEnv.cmd
@@ -1,130 +0,0 @@
|
|||||||
:: Code generously provided by @beatcracker: https://github.com/beatcracker/detect-batch-subshell
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
|
|
||||||
:: Dequote path to command processor and this script path
|
|
||||||
set ScriptPath=%~0
|
|
||||||
set CmdPath=%COMSPEC:"=%
|
|
||||||
|
|
||||||
:: Get command processor filename and filename with extension
|
|
||||||
for %%c in (!CmdPath!) do (
|
|
||||||
set CmdExeName=%%~nxc
|
|
||||||
set CmdName=%%~nc
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Get this process' PID
|
|
||||||
:: Adapted from: http://www.dostips.com/forum/viewtopic.php?p=22675#p22675
|
|
||||||
set "uid="
|
|
||||||
for /l %%i in (1 1 128) do (
|
|
||||||
set /a "bit=!random!&1"
|
|
||||||
set "uid=!uid!!bit!"
|
|
||||||
)
|
|
||||||
|
|
||||||
for /f "tokens=2 delims==" %%i in (
|
|
||||||
'wmic Process WHERE "Name='!CmdExeName!' AND CommandLine LIKE '%%!uid!%%'" GET ParentProcessID /value'
|
|
||||||
) do (
|
|
||||||
rem Get commandline of parent
|
|
||||||
for /f "tokens=1,2,*" %%j in (
|
|
||||||
'wmic Process WHERE "Handle='%%i'" GET CommandLine /value'
|
|
||||||
) do (
|
|
||||||
|
|
||||||
rem Strip extra CR's from wmic output
|
|
||||||
rem http://www.dostips.com/forum/viewtopic.php?t=4266
|
|
||||||
for /f "delims=" %%x in ("%%l") do (
|
|
||||||
rem Dequote path to batch file, if any (3rd argument)
|
|
||||||
set ParentScriptPath=%%x
|
|
||||||
set ParentScriptPath=!ParentScriptPath:"=!
|
|
||||||
)
|
|
||||||
|
|
||||||
rem Get parent process path
|
|
||||||
for /f "tokens=2 delims==" %%y in ("%%j") do (
|
|
||||||
rem Dequote parent path
|
|
||||||
set ParentPath=%%y
|
|
||||||
set ParentPath=!ParentPath:"=!
|
|
||||||
|
|
||||||
rem Handle different invocations: C:\Windows\system32\cmd.exe , cmd.exe , cmd
|
|
||||||
for %%p in (!CmdPath! !CmdExeName! !CmdName!) do (
|
|
||||||
if !ParentPath!==%%p set IsCmdParent=1
|
|
||||||
)
|
|
||||||
|
|
||||||
rem Check if we're running in cmd.exe with /c switch and this script path as argument
|
|
||||||
if !IsCmdParent!==1 if %%k==/c if "!ParentScriptPath!"=="%ScriptPath%" set IsExternal=1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if !IsExternal!==1 (
|
|
||||||
echo %~nx0 does not work when run from this process. If you're in PowerShell, please 'Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1' and try again.
|
|
||||||
exit 1
|
|
||||||
)
|
|
||||||
|
|
||||||
endlocal
|
|
||||||
:: End code from @beatcracker
|
|
||||||
@echo off
|
|
||||||
::
|
|
||||||
:: RefreshEnv.cmd
|
|
||||||
::
|
|
||||||
:: Batch file to read environment variables from registry and
|
|
||||||
:: set session variables to these values.
|
|
||||||
::
|
|
||||||
:: With this batch file, there should be no need to reload command
|
|
||||||
:: environment every time you want environment changes to propagate
|
|
||||||
|
|
||||||
::echo "RefreshEnv.cmd only works from cmd.exe, please install the Chocolatey Profile to take advantage of refreshenv from PowerShell"
|
|
||||||
echo | set /p dummy="Refreshing environment variables from registry for cmd.exe. Please wait..."
|
|
||||||
|
|
||||||
goto main
|
|
||||||
|
|
||||||
:: Set one environment variable from registry key
|
|
||||||
:SetFromReg
|
|
||||||
"%WinDir%\System32\Reg" QUERY "%~1" /v "%~2" > "%TEMP%\_envset.tmp" 2>NUL
|
|
||||||
for /f "usebackq skip=2 tokens=2,*" %%A IN ("%TEMP%\_envset.tmp") do (
|
|
||||||
echo/set "%~3=%%B"
|
|
||||||
)
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:: Get a list of environment variables from registry
|
|
||||||
:GetRegEnv
|
|
||||||
"%WinDir%\System32\Reg" QUERY "%~1" > "%TEMP%\_envget.tmp"
|
|
||||||
for /f "usebackq skip=2" %%A IN ("%TEMP%\_envget.tmp") do (
|
|
||||||
if /I not "%%~A"=="Path" (
|
|
||||||
call :SetFromReg "%~1" "%%~A" "%%~A"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:main
|
|
||||||
echo/@echo off >"%TEMP%\_env.cmd"
|
|
||||||
|
|
||||||
:: Slowly generating final file
|
|
||||||
call :GetRegEnv "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" >> "%TEMP%\_env.cmd"
|
|
||||||
call :GetRegEnv "HKCU\Environment">>"%TEMP%\_env.cmd" >> "%TEMP%\_env.cmd"
|
|
||||||
|
|
||||||
:: Special handling for PATH - mix both User and System
|
|
||||||
call :SetFromReg "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" Path Path_HKLM >> "%TEMP%\_env.cmd"
|
|
||||||
call :SetFromReg "HKCU\Environment" Path Path_HKCU >> "%TEMP%\_env.cmd"
|
|
||||||
|
|
||||||
:: Caution: do not insert space-chars before >> redirection sign
|
|
||||||
echo/set "Path=%%Path_HKLM%%;%%Path_HKCU%%" >> "%TEMP%\_env.cmd"
|
|
||||||
|
|
||||||
:: Cleanup
|
|
||||||
del /f /q "%TEMP%\_envset.tmp" 2>nul
|
|
||||||
del /f /q "%TEMP%\_envget.tmp" 2>nul
|
|
||||||
|
|
||||||
:: capture user / architecture
|
|
||||||
SET "OriginalUserName=%USERNAME%"
|
|
||||||
SET "OriginalArchitecture=%PROCESSOR_ARCHITECTURE%"
|
|
||||||
|
|
||||||
:: Set these variables
|
|
||||||
call "%TEMP%\_env.cmd"
|
|
||||||
|
|
||||||
:: Cleanup
|
|
||||||
del /f /q "%TEMP%\_env.cmd" 2>nul
|
|
||||||
|
|
||||||
:: reset user / architecture
|
|
||||||
SET "USERNAME=%OriginalUserName%"
|
|
||||||
SET "PROCESSOR_ARCHITECTURE=%OriginalArchitecture%"
|
|
||||||
|
|
||||||
echo | set /p dummy="Finished."
|
|
||||||
echo .
|
|
Reference in New Issue
Block a user