【问题标题】:Create script to reboot computers where hostnames are located in text file创建脚本以重新启动主机名位于文本文件中的计算机
【发布时间】:2019-06-08 17:24:56
【问题描述】:

我正在尝试创建一个脚本来启动一个命令来重新启动主机名位于 .txt 文件中的机器。我在 Jenkins 上运行它,所以理想情况下它应该在 Groovy 中,但是 shell 脚本可以工作。

我尝试使用 Groovy 来创建此代码。我的目标是找到 .txt 文件并将此 CMD 命令应用于它

String fileContent = new File("C:/Users/omr/Documents/Temp/test.txt").text
println fileContent

"cmd /c shutdown -r -t 0".execute(fileContent)

到目前为止,我还没有运气,我研究了很多如何从 Groovy 执行 cmd 命令,它们都声明了 .execute(),但是我觉得这是不对的。

【问题讨论】:

    标签: java arrays shell jenkins groovy


    【解决方案1】:

    如果您需要在 Windows 上执行此操作,请尝试使用 PsShutdownNirCmd 实用程序重新启动远程计算机。还有一个批处理文件来循环浏览您的主机名:

    @echo off
    for /F "tokens=*" %%A in (test.txt) do (
      echo psshutdown -r -t 0 \\%%A
    )
    

    我不认为这里真的需要 Java/Groovy,可能只是作为 shell 脚本的包装器。

    【讨论】:

    • 谢谢 Nikita,是的,这很简单,我只是把它放在一个包装纸上。我想如果我想在 bash 中为 linux 脚本执行此操作,那将是相同类型的思考。从文件中读取并放入变量,然后对变量执行重启命令...
    【解决方案2】:

    要远程运行,您可以使用psexec。 在groovy中读取测试文件,有以下两种解决方案:

    String fileContents = new File('/path/to/file').text
    

    如果您需要指定字符编码,请改用以下代码:

    String fileContents = new File('/path/to/file').getText('UTF-8')
    

    如果您需要读取文件 Line Bye Line。

    File file1 = new File("C:\path\to\file\myTestfile.txt");
    for (def i=0;i<=30;i++) // specify how many line need to read eg.. 30
    {
     log.info file1.readLines().get(i)
    
    }
    

    你也可以使用cmd来读取文本文件。

    FOR /F %i IN (file.txt) DO @echo %i
    

    【讨论】:

      猜你喜欢
      • 2015-01-24
      • 2017-11-26
      • 2017-11-30
      • 2015-06-19
      • 1970-01-01
      • 2015-12-20
      • 2018-03-30
      • 1970-01-01
      • 2021-11-19
      相关资源
      最近更新 更多