3

尝试编写自定义因子模块:

Facter.add("something_status") do
  setcode do
    $string_to_parse = Facter::Util::Resolution.exec('somecommand --print ')
    ... do something to string
    return something-new
  end
end

对 ruby​​ 来说非常新……用什么做这件事的正确语法是什么?

4

1 回答 1

6

你离这样做不远了。你不需要在变量名之前使用 $ 并且你不应该以 return 结尾。范围内的最新 var 将由 Facter 检索。

下面是一个示例代码,它分析 uname 输出并返回一个带有关于内核版本和 ipv6 支持的字符串的事实。

这只是一个例子,但它有效,只是尝试过。

Facter.add("customer") do
  setcode do
    kernel_release = Facter::Util::Resolution.exec('/bin/uname -r')
    # Get version
    if kernel_release =~ /^3.2/
      answer = "Latest Kernel"  
    elsif kernel_release =~ /^3.0/
      answer = "3.0 Kernel"
    elsif kernel_release =~ /^2.6/
      answer = "Decent Kernel"
    else 
      answer = "Unknown Kernel"
    end
    if answer =~ /ipv6/       
      answer += " with IPV6 Support"
    else 
      answer += " without IPV6 Support"
    end
  end
end  

祝你好运!

一些对您有用的链接:Ruby Wikibooks Control Structures更多 ruby​​ 信息

于 2012-10-05T00:16:14.470 回答