【问题标题】:Spaces in file paths for puppet on WindowsWindows 上 puppet 文件路径中的空格
【发布时间】:2017-10-18 05:58:57
【问题描述】:

我需要在 Windows 上使用 Puppet 安装一些产品。我使用执行资源

exec { 'install':
            command => 'C:\\windows\system32\cmd.exe /c "c:\\Program Files\\zabbix_agentd_64.exe --config c:\\Program Files\\zabbix_agentd.conf --install"',
            }

语法没问题,但我明白了

'c:/Program' 未被识别为内部或外部命令

我也试过command => 'C:\\windows\system32\cmd.exe /c "c:\Program Files\zabbix_agentd_64.exe --config c:\Program Files\zabbix_agentd.conf --install"'command => 'C:\\windows\system32\cmd.exe /c "c:\\Program/Files\\zabbix_agentd_64.exe --config c:\\Program/Files\\zabbix_agentd.conf --install"' 但它说语法错误(事实上是正确的)。有什么想法吗?

【问题讨论】:

    标签: windows file path puppet


    【解决方案1】:

    Puppet(实际上可能是下面的 Ruby)将您的命令字符串拆分为单词,而不考虑内部引号。我认为您无法采取任何措施来防止这种情况发生,但有a related issue in Puppet's bug tracker。您可以考虑对该问题发表评论/投票。 应该可以将命令以分词形式指定给 Exec,作为一个数组,这将为您的问题提供解决方案。

    我现在看到了两种可能的替代方案:

    • 为目录使用 8.3 名称(请参阅how to get DOS path instead of Windows path)。这可能很棘手,因为我不认为 8.3 路径仅由文件名唯一确定——它可能会受到同级文件和目录名称的影响。

    • 为 Exec 指定一个 PATH,通过它可以找到所需的可执行文件,并通过其简单名称运行它。

    【讨论】:

    • 感谢约翰的重播。 DOS 路径有效,但为 exec 指定路径无效,我之前尝试过。在 Windows 上的 Puppet 中编写清单我发现了很多错误,这是这个操作系统上非常粗糙的工具......有趣的是,使用 Windows 路径作为带有空格的目录,例如。文件或服务资源完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2017-09-09
    • 2014-09-07
    • 2012-05-09
    • 2011-11-27
    • 2013-08-01
    相关资源
    最近更新 更多