md5 Hash in puppet custom function

时间:2015-01-13 08:49:23

标签: ruby md5 puppet

目前我想从参数创建一个md5哈希。然后我想将哈希写入文件(路径是另一个参数)。

这是自定义功能:

   module Puppet::Parser::Functions
      newfunction(:write_line_to_file) do |args|
    require 'md5'
        filename = args[0]

        str = MD5.new(lookupvar(args[1])).to_s
        File.open(filename, 'a') {|fd| fd.puts str }
      end
    end

傀儡中的召唤显示:

write_line_to_file('/tmp/some_hash', "Hello world!")

我得到的结果是一个文件,内容不是哈希,而是原始字符串。 (在示例Hello World中!)

我知道这个自定义功能没有实际用途。我只是想了解md5哈希是如何工作的。

--- --- UPD

新功能(工作正常):

   require 'digest'
   module Puppet::Parser::Functions
      newfunction(:lxwrite_line_to_file) do |args|
        filename = args[0]

        str = Digest::MD5.hexdigest args[1]
        File.open(filename, 'w') {|fd| fd.puts str }
      end
    end

1 个答案:

答案 0 :(得分:3)

你正在使用哪种红宝石?

在Ruby 2.0+中有一个Digest模块(documentation here) - 为什么不使用它?

您可以使用Digest中提供的任何哈希值,如下所示:

Digest::MD5.digest '123'
=> " ,\xB9b\xACY\a[\x96K\a\x15-#Kp"

如果您更喜欢十六进制表示,请使用hexdigest

Digest::MD5.hexdigest '123'
=> "202cb962ac59075b964b07152d234b70"

还有其他哈希函数可用:

Digest::SHA2.hexdigest '123'
=> "a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3"