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