私はここ数週間Luaを学んでいますが、これは何度も何度も私の1つのこだわりのポイントです。私はこのトピックに関する投稿や本を読んでみました。
Luaを使用してソフトウェア監視システム(Nimsoft)にクエリを実行すると、データがテーブルに返されます。
出力全体を投稿することはしませんが、構造を説明すると思うスニペットを次に示します。
テーブル参照は「h_resp」です
root:
domain:nevil-nmsdom
robotlist:
1:
ssl_mode:0
os_user2:
origin:nevil-nmshub
os_major:UNIX
ip:192.168.1.58
os_minor:Linux
addr:/nevil-nmsdom/nevil-nmshub/nevil-multibot_03
status:0
license:1
last_inst_change:1340754931
created:1341306789
offline:0
last_change:1341306869
lastupdate:1344522976
autoremove:0
os_user1:
flags:1
os_description:Linux 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64
name:nevil-multibot_03
metric_id:M64FB142FE77606C2E924DD91FFCC3BB4
device_id:DDFF83AB8CD8BC99B88221524F9320D22
heartbeat:900
port:48100
version:5.52 Dec 29 2011
2: etc...etc....
これを実現するために、このフォーラムで見つけたtdump関数を使用します。
for k,v in pairs(h_resp) do
print(k.." ",v)
end
私にトップレベルを与えます、私はこれを理解しています。
domain nevil-nmsdom
robotlist table:0x22136a0
それから私は「ロボットリスト」を取得しようとします
for k,v in pairs(h_resp.robotlist) do
print(k.." ",v)
end
以下に示すように、インデックスは整数であり、別のテーブルを評価します。
1 table:0x237e530
0 table:0x22112a0
3 table:0x2211460
2 table:0x2392ee0
5 table:0x2213e80
4 table:0x22130e0
7 table:0x2283b80
6 table:0x2283ff0
8 table:0x22a71e0
また、次を使用して、これらの「ネストされた」テーブルの1つに対処できるという事実もわかります。
for k,v in pairs(h_resp.robotlist["0"]) do
print(k.." ",v)
end
ssl_mode 0
os_user2
origin network
os_major UNIX
ip 192.168.1.31
os_minor Linux
addr /nevil-nmsdom/nevil-nmshub/nevil-mysql
status 0
...etc...etc...
私のポイントでは、robotlistに格納されているすべてのテーブルを反復処理するようにLuaに依頼する方法を理解できません。
第二に、私は長らく曲がりくねった電子メールをお詫びしますが、私はまだこれを学び/理解しようとしています....私は以前のプログラミング/スクリプトの経験がありません。
ありがとう