■
sysreportをExcelに変換したいという声に反応して、コア部分であるxls変換部分を作ってみました。
「完成イメージ」
運用時代に使っていたコンフィグレーションシートを自動的に作成するイメージ。って言っても誰も反応できない。っていうか、フォーマットを決めるというのも面倒なので、必要なテキストを全てExcelにして、シートの結合をOpenofficeでやるというのはどうだろうか*1。
「出力に必要だと思われる情報」
NO | 入力情報 | 入力情報詳細 |
1 | ホスト情報 | hostname,uname |
2 | NW情報 | 存在する全てのeth情報(IPaddress,netmask,gateway,routing情報) |
3 | オープンポート情報 | セキュリティ診断時に必要 |
4 | cron登録情報 | - |
5 | 起動service情報 | - |
6 | install済みパッケージ情報 | - |
7 | disk情報 | lvmであれば、lvm情報,partition情報 |
9 | いつ取得した情報か | - |
10 | HW情報 | memory情報含む |
11 | セキュリティ設定情報 | firewall,selinux |
12 | モジュール情報 | - |
13 | grub関連 | - |
この位で十分ではないですかね。
ということで、以下が出来た訳です。あとは、上記情報を.xlsにしたときのOutput具合を確認して、それぞれ対応し、シェルでsysreportと連携し完全自動化と。
#!/usr/bin/perl -w
use strict;
use Jcode;
use Unicode::String qw(utf8 utf16);
use Spreadsheet::WriteExcel;my $count = 2;
# Create a new workbook called simple.xls and add a worksheet
my $workbook = Spreadsheet::WriteExcel->new("simple.xls");
my $uni_font = $workbook->add_format(font => 'Arial Unicode MS');
my $worksheet = $workbook->add_worksheet(utf8( Jcode->new('シート1')->utf8 )->utf16,1);# Write some text
$worksheet->write_unicode(0, 0, utf8( Jcode->new('sysreport')->utf8 )->utf16);# Write some numbers
while(<>) {
s/\s+/,/g;
my @list = split(/,/, $_);for ( my $i = 0; $i < @list; $i++) {
$worksheet->write($count, $i, "$list[$i]");
}
$count++;
}
*1:シートの結合方法はまだ調べていないっすw