これは、merlinデータベースのreport_dataテーブルからデータを取得するために作成したシェルスクリプトです。
data=$(mysql merlin -BNe 'select * from report_data')
echo "$data"
生成された出力は次のとおりです。
1 1634036113 701 NULL NULL monitor-localhost-616569842d586 Service latency 0 1 1 0 OK: service latency min/avg/max = 0.00/0.00/0.20 NULL
2 1634036123 701 NULL NULL monitor-localhost-616569842d586 Zombie process 0 1 1 0 OK: 0 zombie process(es) NULL
3 1634036131 701 NULL NULL monitor-localhost-616569842d586 Host orphans 0 1 1 0 OK: Orphaned host checks: NULL
以下はテーブルの列です。
| id | timestamp | event_type | flags | attrib | host_name | service_description | state | hard | retry | downtime_depth | output | long_output |
各行を別々のエンティティとして使用し、それを解析したいと思います。
答え1
次のように試すことができます。
#!/bin/bash
mysql merlin -e "SELECT * FROM report_data" | while read id timestamp event_type flags attrib host_name; do
#echo "$id | $timestamp | $event_type | $flags | $attrib | $host_name"
array+=("$id | $timestamp | $event_type | $flags | $attrib | $host_name")
done
印刷したばかりですが、1行ずつ配列に追加するなど、好きなようにできます。