如何确定 sysdig 字段是否存在或处理错误(如果不存在)



>我正在使用 Sysdig 捕获一些事件,并根据需要使用一个小凿子(LUA 脚本(来捕获和格式化事件。 在 on_init(( 上,我请求这样的字段:

f_field = chisel.request_field("<field>")

我的问题是如何在请求字段之前检查字段是否存在? 我将使用一个刚刚在 0.24.1 上发布的新字段,但理想情况下,我希望我的凿子继续在没有此字段的情况下处理旧版本的 sysdig。 我尝试将chisel.request_field调用包装在 pcall(( 中,如下所示:

ok, f_field = pcall(chisel.request_field("<field>"))

甚至实现我自己的"get_field"功能:

function get_field(field)
ok, f = pcall(chisel.request_field(field))
if ok then return f else return nil end
end
f_field = get_field("<field>")
if f_field ~= nil then
-- do something
end

但错误("chisel requesting nonexistent field <field>"(仍然存在。

我看不到检查字段是否存在的方法,但我似乎也无法处理错误。 如果可能的话,我真的不想要我的脚本的多个版本。

谢谢 史蒂夫·

你快到了。您的问题在于您如何使用pcall。Pcall 接受函数值和您希望用来调用该函数的任何参数。在您的示例中,您将request_field函数调用的结果传递给pcall。试试这个。.

ok, f = pcall(chisel.request_field, "field")

pcall将使用保护模式下的 args 调用chisel方法,并捕获任何后续错误。

相关内容

  • 没有找到相关文章

最新更新