Windows 上人偶文件路径中的空格
Spaces in file paths for puppet on Windows
我需要在 Windows 上使用 Puppet 安装一些产品。我使用 exec recource
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' is not recognized as an internal or external command
我也试过 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"'
但它说语法错误(实际上是正确的)。有什么想法吗?
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 指定一个路径,通过它可以找到所需的可执行文件,并运行它的简单名称。
我需要在 Windows 上使用 Puppet 安装一些产品。我使用 exec recource
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' is not recognized as an internal or external command
我也试过 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"'
但它说语法错误(实际上是正确的)。有什么想法吗?
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 指定一个路径,通过它可以找到所需的可执行文件,并运行它的简单名称。