Todo administrador de servidores tem um conjunto de programas utilitários que eles gostam de usar. Normalmente, essas ferramentas são mantidas em cada máquina para garantir a disponibilidade e podem vir de uma variedade de fontes, como Sysinternals e Nirsoft.
Para manter essas ferramentas atualizadas para as versões mais recentes, a atualização manual pode ser bastante entediante e demorada, especialmente quando há vários servidores no mix. Portanto, temos uma solução para você: uma solução simples para configurar, onde você mantém um único conjunto de ferramentas e todas as suas máquinas sincronizam as versões de suas ferramentas para esse local.
Por exemplo, suponha que você mantenha sistemas em 3 redes separadas e que tenha o mesmo conjunto de 10 ferramentas disponíveis em todas essas máquinas para scripts e manutenção. Você teria uma pasta mestra de ferramentas (disponível em um site da Web) onde você mantém as versões de lançamento que deseja distribuir para todos os seus sistemas. Todos os seus outros sistemas, em seguida, "casa de telefone" para esta pasta mestre e baixe a respectiva versão localmente. Esse processo fornece uma solução automatizada para garantir sempre que suas versões de utilitário sejam consistentes em todos os seus sistemas.
Configurando o Ambiente
O ambiente para que isso funcione é muito fácil de configurar e, uma vez feito, é realmente uma solução para "esquecer e esquecer".
- Crie uma pasta dentro de um site que você tenha acesso ao servidor que servirá como a pasta principal (ou seja, ToolsFolder).
-
Carregue todos os seus utilitários comuns para esta pasta.
- Nos servidores que você deseja sincronizar com o site mestre, coloque o script abaixo na pasta local que contém as ferramentas (e o WGet, caso ainda não o tenha).
-
Atualize o URL para sua pasta mestra (por exemplo, https://my.site.com/ToolsFolder).
- Programe o script para ser executado periodicamente e todas as ferramentas locais existentes no site principal serão sincronizadas.
Usos alternativos
Embora tenhamos abordado um uso prático que um administrador de sistemas pode ter para esse tipo de script, há muitas outras situações em que esse script pode ser útil:
- Use para atualizar os utilitários Sysinternals e Nirsoft em máquinas locais (os URLs estão incluídos no script).
- Use em um sistema de mesa para manter um conjunto de documentos sincronizados com uma cópia mestre.
O script suporta a codificação de um URL, bem como o fornecimento de um a partir da linha de comando (por exemplo, UpdateFromWeb https://source.site.com/Stuff.zip), portanto, use sua imaginação.
O script
@ECHO OFF TITLE Update From Web ECHO Update From Web ECHO Written by: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. SETLOCAL EnableExtensions REM Place this script in the folder which contains the utilities to update. REM Requires WGet to be in the same folder as this script or in a location set in the PATH variable. REM URL to look for updates on in the event none is specified as a parameter. REM URL's of interest --- REM Sysinternals: https://live.sysinternals.com/tools REM NirSoft: https://www.nirsoft.net/panel SET URL=https://my.site.com/ToolsFolder REM If a parameter is specified, use that as the URL. IF NOT {%1}=={} SET URL=%~1 REM Set this value to 1 to restart tasks that are stopped during the update process. SET RestartKilledTasks=0 ECHO Detected directory: %~dp0 %~d0 CD %~p0 ECHO. ECHO. SET NewFile=.NEW FOR /F %%A IN ('DIR /B') DO WGet --output-document='%%A%NewFile%' '%URL%/%%A' REM Delete empty (not found) files. FORFILES /P. /C 'CMD /C IF @fsize==0 DEL /F /Q @path' SET StartWhenFinished='%TEMP%StartWhenFinished.tmp.txt' ECHO;Terminated tools > %StartWhenFinished% FOR /F %%A IN ('DIR /B') DO ( IF EXIST '%%A%NewFile%' ( ECHO Found new version of: %%A REM If the file is running, kill it so it can be replaced. FOR /F %%B IN ('TASKLIST') DO ( IF /I [%%A]==[%%B] ( ECHO %%B is currently running, killing process. ECHO %%A >> %StartWhenFinished% TASKKILL /IM '%%B' /T /F ) ) REM Replace with the new version. DEL /F /Q '%%A' RENAME '%%A%NewFile%' '%%A' ) ) IF {%RestartKilledTasks%}=={1} ( ECHO. ECHO Resuming killed tasks FOR /F 'usebackq skip=1' %%A IN (%StartWhenFinished%) DO ( ECHO Starting %%A START 'Restarting %%A' '%%A' ) ) IF EXIST '%StartWhenFinished%' DEL '%StartWhenFinished%' ENDLOCAL
Links
Baixe o script UpdateFromWeb de SysadminGeek.com
Baixar WGet