in

Créez votre propre système de mise à jour de fichiers automatisé

Chaque administrateur de serveur dispose d’un ensemble de programmes utilitaires qu’il aime utiliser. En règle générale, ces outils sont conservés sur chaque machine pour garantir la disponibilité et peuvent provenir de diverses sources telles que Sysinternals et Nirsoft.

Pour maintenir ces outils à jour avec les dernières versions, la mise à jour manuelle peut être assez fastidieuse et longue, en particulier lorsqu’il y a plusieurs serveurs dans le mix. Nous avons donc une solution pour vous: une solution simple à mettre en place où vous maintenez un seul ensemble d’outils et toutes vos machines synchronisent les versions de leurs outils à cet emplacement.

Par exemple, supposons que vous mainteniez des systèmes sur 3 réseaux distincts et que vous souhaitiez avoir le même ensemble de 10 outils disponibles sur toutes ces machines pour les scripts et la maintenance. Vous auriez un dossier principal d’outils (disponible via un site Web) dans lequel vous maintiendrez les versions que vous souhaitez distribuer à tous vos systèmes. Tous vos autres systèmes puis «téléphonez à la maison» dans ce dossier principal et téléchargez la version respective localement. Ce processus fournit une solution automatisée pour toujours s’assurer que vos versions d’utilitaires sont cohérentes dans tous vos systèmes.

Mise en place de l’environnement

L’environnement pour que cela fonctionne est assez facile à mettre en place et, une fois cela fait, est vraiment une solution «set it and forget it».

  1. Créez un dossier à l’intérieur d’un site Web auquel vous avez accès et qui servira de dossier principal (c’est-à-dire ToolsFolder).
  2. Téléchargez tous vos utilitaires courants dans ce dossier.
  3. Sur les serveurs que vous souhaitez synchroniser avec le site maître, placez le script ci-dessous dans le dossier local qui contient les outils (et WGet si vous ne l’avez pas déjà).
  4. Mettez à jour l’URL de votre dossier principal (par exemple http://my.site.com/ToolsFolder).
  5. Planifiez l’exécution périodique du script et tous les outils locaux qui existent sur le site maître seront synchronisés.

Utilisations alternatives

Bien que nous ayons couvert une utilisation pratique qu’un administrateur système peut avoir pour ce type de script, il existe de nombreuses autres situations dans lesquelles ce script peut être utile:

  • Permet de mettre à jour les utilitaires Sysinternals et Nirsoft sur les machines locales (les URL sont incluses dans le script).
  • À utiliser sur un système de bureau pour synchroniser un ensemble de documents avec une copie principale.

Le script prend en charge à la fois le codage en dur d’une URL et la fourniture d’une URL à partir de la ligne de commande (par exemple, UpdateFromWeb http://source.site.com/Stuff.zip), alors utilisez votre imagination.

Le scénario

@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 : http://live.sysinternals.com/tools
REM  NirSoft      : http://www.nirsoft.net/panel
SET URL=http://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

Liens

Télécharger UpdateFromWeb Script depuis SysadminGeek.com

Télécharger WGet

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment affiner une image dans Photoshop

Comment affiner une image dans Photoshop

Comment utiliser les nouveaux effets d’iMessage (comme l’encre invisible)