构建您自己的自动文件更新系统

每个服务器管理员都有一套他们喜欢使用的实用程序。 通常,这些工具保存在每台机器上,以确保可用性,并且可以来自各种来源,如Sysinternals和Nirsoft。

为了将这些工具更新到最新版本,手动更新可能相当冗长乏味,尤其是当多个服务器混合使用时。 因此,我们为您提供一个解决方案:一个简单的设置解决方案,其中您维护一套单独的工具,所有的机器同步其工具的版本到此位置。

例如,假设您在3个独立的网络上维护系统,并希望在所有这些机器上具有相同的10个工具集用于脚本和维护。 您将有一个工具的主文件夹(通过网站提供),您可以在其中维护要分发到所有系统的发行版本。 所有其他系统然后“电话回家”到这个主文件夹,并在本地下载相应的版本。 此过程提供了一个自动化解决方案,始终确保实用程序版本在所有系统中保持一致。

设置环境

这个工作的环境很容易设置,一旦完成,真的是一个“设置它忘记它”的解决方案。

  1. 在您有权访问的网站中创建一个文件夹,服务器将作为主文件夹(即ToolsFolder)。
  2. 将所有常见公用程序上传到此文件夹。
  3. 在要同步到主站点的服务器上,将脚本放在包含工具的本地文件夹中(如果您还没有工具,则将其放在本地文件夹中)。
  4. 将URL更新到主文件夹(即http://my.site.com/ToolsFolder)。
  5. 调度脚本以定期运行,并且主站点上存在的所有本地工具将同步。

替代用途

虽然我们涵盖了实际使用系统管理员可能有这种类型的脚本,有很多其他情况下,这个脚本可以派上用场:

  • 用于在本地计算机上更新Sysinternals和Nirsoft实用程序(URL包含在脚本中)。
  • 在桌面系统上使用以保持与主副本同步的一组文档。

该脚本支持硬编码URL,以及从命令行提供一个(即UpdateFromWeb http://source.site.com/Stuff.zip),所以使用你的想象力。

剧本

  @ECHO OFF
 TITLE从Web更新
 Web的ECHO更新
 ECHO作者:Jason Faulkner
 ECHO SysadminGeek.com
echo。
echo。

 SETLOCAL EnableExtensions

 REM将此脚本放在包含要更新的实用程序的文件夹中。
 REM需要WGet与此脚本位于相同的文件夹中,或者位于PATH变量中设置的位置。

 REM URL以查找事件中没有指定为参数的更新。
 REM URL的兴趣---
 REM Sysinternals:http://live.sysinternals.com/tools
 REM NirSoft:http://www.nirsoft.net/panel
 SET URL = http://my.site.com/ToolsFolder

 REM如果指定了参数,请将其用作URL。
 IF NOT {%1} == {} SET URL =%〜1

 REM将此值设置为1可重新启动在更新过程中停止的任务。
 SET RestartKilledTasks = 0


 ECHO检测目录:%〜dp0
 %〜d0
 CD%〜p0
echo。
echo。

 SET NewFile = .NEW

 FOR / F %% A IN(DIR / B)DO WGet --output-document =“%% A%NewFile%”“%URL%/ %% A”
 REM删除空(未找到)文件。
 FORFILES / P。  / C“CMD / C IF @ fsize == 0 DEL / F / Q @path”

 SET StartWhenFinished =“%TEMP%StartWhenFinished.tmp.txt”
 ECHO;终止工具>%StartWhenFinished%

 FOR / F %% A IN(DIR / B)DO(
    IF EXIST“%% A%NewFile%”(
       ECHO发现新版本:%% A
       REM如果文件正在运行,请将其删除,以便可以替换它。
       FOR / F %% B IN(TASKLIST)DO(
          IF / I [%% A] == [%% B](
             ECHO %% B当前正在运行,正在进行杀毒进程。
             ECHO %% A >>%StartWhenFinished%
             TASKKILL / IM“%% B”/​​ T / F
         
      
       REM替换为新版本。
       DEL / F / Q“%% A”
       RENAME“%% A%NewFile%”“%% A”
   


 IF {%RestartKilledTasks%} == {1}(
   echo。
    ECHO恢复已杀死的任务
    FOR / F“usebackq skip = 1”%% A IN(%StartWhenFinished%)DO(
       ECHO Starting %% A
       START“重新启动%% A”“%% A”
   


 IF EXIST“%StartWhenFinished%”DEL“%StartWhenFinished%”

 ENDLOCAL

链接

从SysadminGeek.com下载UpdateFromWeb脚本

下载WGet

赞 (0)
分享到:更多 ()