【问题标题】:Execute a .Bat file within ASP Classic page在 ASP Classic 页面中执行 .Bat 文件
【发布时间】:2014-09-24 14:51:49
【问题描述】:

我想使用 ASP Classic 重新启动位于另一台服务器的服务,但它在我这边不起作用。

我有 2 个批处理文件,它们将在另一个远程服务器中停止和启动多个服务:

sc \\<machine address> stop service1
sc \\<machine address> stop service2

sc \\<machine address> start service1
sc \\<machine address> start service2

我将从我的 ASP 经典代码中调用它,如下所示:

dim wshell
set wshell = CreateObject("WScript.Shell") 
wshell.run "c:\folder1\stopService.bat" 
wshell.run "c:\folder1\startService.bat" 
set wshell = nothing 

使用这些代码,它仍然无法正常工作。我已经阅读了与此问题类似的解决方案,将 ApplicationPool 更改为 LocalSystem 并为文件提供足够的权限。但仍然不适合我。

我缺少什么来解决这个问题?

请帮忙!谢谢!

【问题讨论】:

    标签: batch-file asp-classic


    【解决方案1】:

    我能够解决如何重新启动位于另一台服务器中的多个服务的问题:

    我像这样制作了我的批处理文件,在我的服务所在的服务器中调用另一个批处理文件:

    cmdkey.exe /add:<machine_ipAddress> /user:<domain>\<username>/pass:<password> 
    psexec.exe \\<machine_ipAddress>   "C:\batch.bat"
    cmdkey.exe /delete:<machine_ipAddress> 
    

    这就是 batch.bat 的样子:

    cmd /c "net stop "service1" & net stop "service2" & net start "service1" & net start "service2"" 
    

    这可能不是最有效的解决方案,但肯定有效:)

    谢谢!

    【讨论】:

      【解决方案2】:

      确保您已授予您的 .bat 文件权限以由与应用程序池用户相同的用户执行。

      如果您遇到任何错误并且没有提及它们,那么请这样做。

      【讨论】:

      【解决方案3】:

      能够从网站运行 .BAT 文件是一项非常危险的操作。黑客喜欢这种类型的东西,并且认为没有黑客会对闯入您公司的网络感兴趣。您应该寻找另一种做事方式。例如,您可以在远程服务器上有一个进程定期查看某个数据库中的某个值,并让您的页面更改该值以停止或重新启动服务。

      另一种方法是使用众多可用应用程序之一来获取远程桌面。

      在所有情况下,在开始将网站用作网络上任何服务器的远程控制器之前,请三思而后行。

      【讨论】:

      • 感谢提醒。无论如何,当页面收到超时时,将执行 .bat 文件。我们网站上提供的用户没有任何按钮或任何可以点击的东西来执行 .bat 文件:)
      • 也许吧,但仅仅为 Web 服务器提供执行 .bat 文件所需的权限这一事实本身就很吓人。如果黑客可以控制您的 Web 服务器并能够在服务器上写入一些文件,这将是他/她首先要检查的事情之一。不要忘记,入侵机器通常是一个多步骤的过程;尤其是对于服务器而不是桌面。
      猜你喜欢
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      相关资源
      最近更新 更多