I copied the pt-summary script from the Percona Toolkit and put it in the post below in case you don’t want to install the whole toolkit.
Percona Toolkit – pt-summary shell script
https://gheeknet.wordpress.com/?p=518
I wrote this so someone can do a poor mans manually scripted inventory / documentation of your Linux server(s) (RHEL based). The output from this script will create a nicely formatted XML that can be dropped right into a Freemind file.
Find your .mm file that you will use in Freemind (pick your location in the file and copy/paste the node info) or create a clean one like the example below.
Example:
<map version="0.9.0"> <!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> <node COLOR="#338800" CREATED="1335892427459" ID="ID_1651254375" MODIFIED="1335914182567" TEXT="My Linux Servers"> <node CREATED="1336084328712" FOLDED="true" ID="ID_545525996" STYLE="fork" TEXT="MON01"> <node CREATED="1336084330688" FOLDED="true" ID="ID_565609429" TEXT="System Summary"> <node CREATED="1336084330688" FOLDED="true" ID="ID_392279737" TEXT="System Summary"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME=" Date" VALUE="2012-05-03 22:32:10 UTC (local TZ: MST -0700)"/> <attribute NAME=" Hostname" VALUE="centos54.linux.domain"/> <attribute NAME=" Uptime" VALUE="41 days, 23:39, 1 user, load average: 0.68, 0.38, 0.31"/> <attribute NAME=" System" VALUE="Dell Inc.; PowerEdge 1950; vNot Specified (<OUT OF SPEC>)"/> <attribute NAME=" Service Tag" VALUE="some service tag id"/> <attribute NAME=" Platform" VALUE="Linux"/> <attribute NAME=" Release" VALUE="CentOS release 5.4 (Final)"/> <attribute NAME=" Kernel" VALUE="2.6.18-164.el5PAE"/> <attribute NAME="Architecture" VALUE="CPU = 64-bit, OS = 32-bit"/> <attribute NAME=" Threading" VALUE="NPTL 2.5"/> <attribute NAME=" Compiler" VALUE="GNU CC version 4.1.2 20080704 (Red Hat 4.1.2-44)."/> <attribute NAME=" SELinux" VALUE="Permissive"/> <attribute NAME=" Virtualized" VALUE="No virtualization detected"/> </node> </node> <node CREATED="1336084330689" FOLDED="true" ID="ID_9081042188" TEXT="Processor"> <node CREATED="1336084330689" FOLDED="true" ID="ID_3133169832" TEXT="Processor"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME=" Processors" VALUE="physical = 1, cores = 4, virtual = 4, hyperthreading = no"/> <attribute NAME=" Speeds" VALUE="4x1995.049"/> <attribute NAME=" Models" VALUE="4xIntel(R) Xeon(R) CPU E5335 @ 2.00GHz"/> <attribute NAME=" Caches" VALUE="4x4096 KB"/> </node> </node> <node CREATED="1336084330689" FOLDED="true" ID="ID_4516226642" STYLE="fork" TEXT="Memory"> <node CREATED="1336084330689" FOLDED="true" ID="ID_9303160679" TEXT="Memory Summary"> <node CREATED="1336084330689" FOLDED="true" ID="ID_6187080024" TEXT="Memory Summary"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME=" Total" VALUE="2.0G"/> <attribute NAME=" Free" VALUE="81.9M"/> <attribute NAME=" Used" VALUE="physical = 1.9G, swap allocated = 2.0G, swap used = 780.0k, virtual = 1.9G"/> <attribute NAME=" Buffers" VALUE="183.9M"/> <attribute NAME=" Caches" VALUE="777.1M"/> <attribute NAME=" Dirty" VALUE="6316 kB"/> <attribute NAME=" UsedRSS" VALUE="1.8G"/> <attribute NAME=" Swappiness" VALUE="60"/> <attribute NAME=" DirtyPolicy" VALUE="40, 10"/> </node> </node> <node CREATED="1336084330689" FOLDED="true" ID="ID_7505443526" TEXT="Memory Banks"> <node CREATED="1336084330689" FOLDED="true" ID="ID_2992848714" TEXT="Memory Banks"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME="Locator" VALUE=" Size Speed Form Factor Type Type Detail"/> <attribute NAME="DIMM1" VALUE=" 1024 MB 667 MHz FB-DIMM DDR2 FB-DIMM Synchronous"/> <attribute NAME="DIMM2" VALUE=" 1024 MB 667 MHz FB-DIMM DDR2 FB-DIMM Synchronous"/> <attribute NAME="DIMM3" VALUE=" {EMPTY} Unknown FB-DIMM DDR2 FB-DIMM Synchronous"/> <attribute NAME="DIMM4" VALUE=" {EMPTY} Unknown FB-DIMM DDR2 FB-DIMM Synchronous"/> <attribute NAME="DIMM5" VALUE=" {EMPTY} Unknown FB-DIMM DDR2 FB-DIMM Synchronous"/> <attribute NAME="DIMM6" VALUE=" {EMPTY} Unknown FB-DIMM DDR2 FB-DIMM Synchronous"/> <attribute NAME="DIMM7" VALUE=" {EMPTY} Unknown FB-DIMM DDR2 FB-DIMM Synchronous"/> <attribute NAME="DIMM8" VALUE=" {EMPTY} Unknown FB-DIMM DDR2 FB-DIMM Synchronous"/> </node> </node> </node> <node CREATED="1336084330689" FOLDED="true" ID="ID_5249004985" TEXT="Mounted Filesystems"> <node CREATED="1336084330689" FOLDED="true" ID="ID_7641022705" TEXT="Mounted Filesystems"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME="Mountpoint" VALUE="Filesystem, Size, Used, Type, Opts"/> <attribute NAME="/boot" VALUE="/dev/sda1, 99M, 18%, ext3, rw,nosuid"/> <attribute NAME="/var" VALUE="/dev/sda3, 21G, 40%, ext3, rw"/> <attribute NAME="/tmp" VALUE="/dev/sda5, 494M, 24%, ext3, rw"/> <attribute NAME="/home" VALUE="/dev/sda6, 1.9G, 53%, ext3, rw,nosuid"/> <attribute NAME="/" VALUE="/dev/sda7, 3.8G, 33%, ext3, rw"/> <attribute NAME="/usr" VALUE="/dev/sda8, 3.8G, 35%, ext3, rw"/> <attribute NAME="/dev/shm" VALUE="tmpfs, 1014M, 0%, tmpfs, rw"/> </node> </node> <node CREATED="1336084330689" FOLDED="true" ID="ID_5445514046" STYLE="fork" TEXT="Network"> <node CREATED="1336084330699" FOLDED="true" ID="ID_931470206" TEXT="bond0"> <node CREATED="1336084330699" FOLDED="true" ID="ID_4868000148" TEXT="bond0"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME="MIITOOL" VALUE="10 Mbit, half duplex, link ok"/> <attribute NAME="ONBOOT" VALUE="yes"/> <attribute NAME="IPADDR" VALUE="10.0.1.70"/> </node> </node> <node CREATED="1336084330708" FOLDED="true" ID="ID_3056584660" TEXT="bond1"> <node CREATED="1336084330708" FOLDED="true" ID="ID_5465277235" TEXT="bond1"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME="MIITOOL" VALUE="10 Mbit, half duplex, link ok"/> <attribute NAME="ONBOOT" VALUE="yes"/> <attribute NAME="IPADDR" VALUE="10.0.6.7"/> </node> </node> <node CREATED="1336084330717" FOLDED="true" ID="ID_5479778297" TEXT="eth0"> <node CREATED="1336084330717" FOLDED="true" ID="ID_5414246572" TEXT="eth0"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME="MIITOOL" VALUE="negotiated, link ok"/> <attribute NAME="HWADDR" VALUE="00:19:B9:E6:2B:31"/> <attribute NAME="ONBOOT" VALUE="yes"/> <attribute NAME="MASTER" VALUE="bond0"/> </node> </node> <node CREATED="1336084330726" FOLDED="true" ID="ID_6661200172" TEXT="eth1"> <node CREATED="1336084330726" FOLDED="true" ID="ID_2473564425" TEXT="eth1"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME="MIITOOL" VALUE="negotiated, link ok"/> <attribute NAME="HWADDR" VALUE="00:19:B9:E6:2B:33"/> <attribute NAME="ONBOOT" VALUE="yes"/> <attribute NAME="MASTER" VALUE="bond1"/> </node> </node> <node CREATED="1336084330734" FOLDED="true" ID="ID_6276371651" TEXT="eth2"> <node CREATED="1336084330734" FOLDED="true" ID="ID_7696366231" TEXT="eth2"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME="MIITOOL" VALUE="10 Mbit, half duplex, no link"/> <attribute NAME="HWADDR" VALUE="00:15:17:2E:B6:CE"/> <attribute NAME="ONBOOT" VALUE="no"/> </node> </node> <node CREATED="1336084330742" FOLDED="true" ID="ID_2722883920" TEXT="eth3"> <node CREATED="1336084330742" FOLDED="true" ID="ID_1804908795" TEXT="eth3"> <attribute_layout NAME_WIDTH="79" VALUE_WIDTH="450"/> <attribute NAME="MIITOOL" VALUE="10 Mbit, half duplex, no link"/> <attribute NAME="HWADDR" VALUE="00:15:17:2E:B6:CF"/> <attribute NAME="ONBOOT" VALUE="no"/> </node> </node> </node> <node CREATED="1336084330743" FOLDED="true" ID="ID_5436431323" TEXT="Applications"> <node CREATED="1336084330743" FOLDED="true" ID="ID_9595296346" TEXT="Applications"> <attribute_layout NAME_WIDTH="125" VALUE_WIDTH="450"/> <attribute NAME="aide" VALUE="RPM: aide-0.13.1-6.el5 InstallDate: Wed 04 Apr 2012 11:04:38 AM MST"/> <attribute NAME="bind-libs" VALUE="RPM: bind-libs-9.3.6-4.P1.el5 InstallDate: Thu 08 Dec 2011 08:16:01 PM MST"/> <attribute NAME="expect" VALUE="RPM: expect-5.43.0-5.1 InstallDate: Thu 08 Dec 2011 08:15:09 PM MST"/> <attribute NAME="iplike" VALUE="RPM: iplike-1.0.9-1 InstallDate: Fri 09 Dec 2011 04:10:44 PM MST"/> <attribute NAME="java-1.6.0-openjdk" VALUE="RPM: java-1.6.0-openjdk-1.6.0.0-1.25.1.10.6.el5_8 InstallDate: Mon 19 Mar 2012 05:54:07 PM MST"/> <attribute NAME="kernel-PAE" VALUE="RPM: kernel-PAE-2.6.18-164.el5 InstallDate: Thu 08 Dec 2011 08:18:02 PM MST"/> <attribute NAME="libpcap" VALUE="RPM: libpcap-0.9.4-14.el5 InstallDate: Thu 08 Dec 2011 08:16:02 PM MST"/> <attribute NAME="McAfeeVSEForLinux" VALUE="RPM: McAfeeVSEForLinux-1.7.0-28611 InstallDate: Mon 19 Mar 2012 06:06:42 PM MST"/> <attribute NAME="MFEcma" VALUE="RPM: MFEcma-4.6.0-1694 InstallDate: Mon 19 Mar 2012 06:02:44 PM MST"/> <attribute NAME="MFErt" VALUE="RPM: MFErt-2.0-0 InstallDate: Mon 19 Mar 2012 06:02:43 PM MST"/> <attribute NAME="minicom" VALUE="RPM: minicom-2.1-3 InstallDate: Mon 26 Mar 2012 06:18:35 PM MST"/> <attribute NAME="net-snmp-utils" VALUE="RPM: net-snmp-utils-5.3.2.2-14.el5_7.1 InstallDate: Mon 06 Feb 2012 09:59:29 AM MST"/> <attribute NAME="ntp" VALUE="RPM: ntp-4.2.2p1-9.el5.centos.2 InstallDate: Thu 08 Dec 2011 08:16:38 PM MST"/> <attribute NAME="opennms" VALUE="RPM: opennms-1.8.4-1 InstallDate: Thu 08 Dec 2011 08:17:51 PM MST"/> <attribute NAME="opennms-core" VALUE="RPM: opennms-core-1.8.4-1 InstallDate: Thu 08 Dec 2011 08:17:10 PM MST"/> <attribute NAME="opennms-docs" VALUE="RPM: opennms-docs-1.8.4-1 InstallDate: Thu 08 Dec 2011 08:15:35 PM MST"/> <attribute NAME="opennms-plugin-provisioning-rancid" VALUE="RPM: opennms-plugin-provisioning-rancid-1.8.4-1 InstallDate: Thu 08 Dec 2011 08:17:31 PM MST"/> <attribute NAME="opennms-webapp-jetty" VALUE="RPM: opennms-webapp-jetty-1.8.4-1 InstallDate: Thu 08 Dec 2011 08:17:30 PM MST"/> <attribute NAME="openssh" VALUE="RPM: openssh-4.3p2-36.el5 InstallDate: Thu 08 Dec 2011 08:17:33 PM MST"/> <attribute NAME="openssh-server" VALUE="RPM: openssh-server-4.3p2-36.el5 InstallDate: Thu 08 Dec 2011 08:17:39 PM MST"/> <attribute NAME="openssl" VALUE="RPM: openssl-0.9.8e-12.el5 InstallDate: Thu 08 Dec 2011 08:15:44 PM MST"/> <attribute NAME="postgresql-server" VALUE="RPM: postgresql-server-8.4.3-1PGDG.rhel5 InstallDate: Thu 08 Dec 2011 08:17:36 PM MST"/> <attribute NAME="rancid" VALUE="RPM: rancid-2.3.4-1 InstallDate: Thu 08 Dec 2011 08:16:06 PM MST"/> <attribute NAME="security-blanket" VALUE="RPM: security-blanket-4.0.8-r17082.el5 InstallDate: Mon 19 Mar 2012 06:08:18 PM MST"/> <attribute NAME="syslog-ng-premium-edition" VALUE="RPM: syslog-ng-premium-edition-3.0.5-1.rhel5 InstallDate: Tue 20 Dec 2011 01:58:31 PM MST"/> <attribute NAME="viewvc" VALUE="RPM: viewvc-1.0.12-1.el5.rf InstallDate: Thu 08 Dec 2011 08:17:54 PM MST"/> </node> </node> </node> </node>
Here is the actual script “pt2mm.pl” that does all the work.
#!/usr/bin/perl # Author: Lance Vermilion <scripting(a)gheek.net> # Purpose: Convert output from pt-summary (Percona Toolkit script) # to xml that is then directly able to be pasted into the # <freemind_file>.mm. # Date: May 2, 2012 # Version: 0.1 use strict; use warnings; use Sys::Hostname; use Time::HiRes qw(gettimeofday); # The applist is the only configurable section here. Leave everythign else alone my @applist = ( 'McAfeeVSEForLinux','MFEcma','MFErt','mpr','syslog-ng-premium-edition','java-1.6.0-openjdk','heartbeat','security-blanket','tomcat5','tomcat6','mysql-server','postgresql-server','drbd','kernel-PAE','openssh','openssh-server','openssl','kmod-drbd-PAE','bind-chroot','bind','bind-libs','net-snmp-utils','kmod-drbd','caching-nameserver','opennms','opennms-core','opennms-webapp-jetty','opennms-docs','opennms-plugin-provisioning-rancid','iplike','minicom','expect','aide','ntp','viewvc','rancid','libpcap','libpcap-devel' ); my $node_started = 0; my $begin_skip = 0; my $tmpsection = ''; my $host = hostname; $host =~ s/\..*$//g; my @network = `egrep "^DEVICE|^HWADDR|^IPADDR|^MASTER|^ONBOOT" /etc/sysconfig/network-scripts/ifcfg-[eb]*`; my @allrpm = `rpm -qa --queryformat '%{name}|RPM: %{name}-%{version}-%{release} InstallDate: %{installtime:date}\n'`; my $pad2 = " "; my $pad4 = " "; my $pad6 = " "; my $pad8 = " "; my $pad10 = " "; print "$pad2<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" STYLE=\"fork\" TEXT=\"".uc($host)."\">\n"; for my $line (`sudo pt-summary --no-summarize-processes --no-summarize-network`) { chomp ($line); if ( $line =~ /^# Disk Schedulers And Queue Size/ ) { $begin_skip = 1; } elsif ( $line =~ /^# (.*) #+/ && $begin_skip != 1 ) { my $SECTION_HEADER = $1; $SECTION_HEADER =~ s/Percona Toolkit //g; $SECTION_HEADER =~ s/ Report//g; my $STYLE=''; if ( $SECTION_HEADER =~ /System Summary/ ) { print "$pad4<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" $STYLE TEXT=\"$SECTION_HEADER\">\n"; print "$pad6<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" $STYLE TEXT=\"$SECTION_HEADER\">\n"; print "$pad8<attribute_layout NAME_WIDTH=\"79\" VALUE_WIDTH=\"450\"/>\n"; } elsif ( $SECTION_HEADER =~ /Processor/ ) { if ( $node_started == 1 ) { print "$pad6</node>\n"; print "$pad4</node>\n"; } print "$pad4<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" $STYLE TEXT=\"$SECTION_HEADER\">\n"; print "$pad6<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" $STYLE TEXT=\"$SECTION_HEADER\">\n"; print "$pad8<attribute_layout NAME_WIDTH=\"79\" VALUE_WIDTH=\"450\"/>\n"; } elsif ( $SECTION_HEADER =~ /Memory/ ) { $STYLE='STYLE="fork"'; print "$pad6</node>\n"; print "$pad4</node>\n"; print "$pad4<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" $STYLE TEXT=\"$SECTION_HEADER\">\n"; print "$pad6<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"$SECTION_HEADER Summary\">\n"; print "$pad8<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"$SECTION_HEADER Summary\">\n"; print "$pad10<attribute_layout NAME_WIDTH=\"79\" VALUE_WIDTH=\"450\"/>\n"; } elsif ( $SECTION_HEADER =~ /Mounted Filesystems/ ) { print "$pad8</node>\n"; print "$pad6</node>\n"; print "$pad4</node>\n"; print "$pad4<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"$SECTION_HEADER\">\n"; print "$pad6<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"$SECTION_HEADER\">\n"; print "$pad8<attribute_layout NAME_WIDTH=\"79\" VALUE_WIDTH=\"450\"/>\n"; } $tmpsection = $SECTION_HEADER; $node_started = 1; } elsif ( $line !~ /^# .* #+/ && $begin_skip != 1) { if ( $line =~ /(.*) \| (.*)/ && $node_started == 1 ) { my $key = $1; my $value = $2; if ( $tmpsection !~ /Memory/ ) { print "$pad8<attribute NAME=\"$key\" VALUE=\"$value\"/>\n"; } else { print "$pad10<attribute NAME=\"$key\" VALUE=\"$value\"/>\n"; } } elsif ( $line =~ /(Locator)(.*)/ ) { print "$pad8</node>\n"; print "$pad6</node>\n"; print "$pad6<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"Memory Banks\">\n"; print "$pad8<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"Memory Banks\">\n"; print "$pad10<attribute_layout NAME_WIDTH=\"79\" VALUE_WIDTH=\"450\"/>\n"; print "$pad10<attribute NAME=\"$1\" VALUE=\"$2\"/>\n"; } elsif ( $line =~ /(DIMM[0-9])(.*)/ ) { print "$pad10<attribute NAME=\"$1\" VALUE=\"$2\"/>\n"; } elsif ( $line =~ /[0-9]\%|Opts.*Mountpoint/ ) { my ( undef, $fs, $sz, $used, $type, $opts, $mnt ) = split (/\s+/, $line); print "$pad8<attribute NAME=\"$mnt\" VALUE=\"$fs, $sz, $used, $type, $opts\"/>\n"; } } } print "$pad6</node>\n"; print "$pad4</node>\n"; print "$pad4<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" STYLE=\"fork\" TEXT=\"Network\">\n"; my $int_details_started = 0; for my $int (@network) { $int =~ s/.*DEVICE=/DEVICE=/; $int =~ s/.*HWADDR=/HWADDR=/; $int =~ s/.*IPADDR=/IPADDR=/; $int =~ s/.*MASTER=/MASTER=/; $int =~ s/.*ONBOOT=/ONBOOT=/; if ( $int =~ /DEVICE=(.*)/ ) { my $DEVICE=$1; if ( $int_details_started == 1 ) { print "$pad8</node>\n"; print "$pad6</node>\n"; } my $miitool = 'interface disabled'; my $miitooloutput = `sudo /sbin/mii-tool $1 2>/dev/null`; $miitool = $miitooloutput if ( $miitooloutput ne '' ); $miitool =~ s/^(eth|bond)[0-9]: //g; chomp($miitool); print "$pad6<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"$DEVICE\">\n"; print "$pad8<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"$DEVICE\">\n"; print "$pad10<attribute_layout NAME_WIDTH=\"79\" VALUE_WIDTH=\"450\"/>\n"; print "$pad10<attribute NAME=\"MIITOOL\" VALUE=\"$miitool\"/>\n"; $int_details_started = 1; } elsif ( $int =~ /(HWADDR)=(.*)/ ) { print "$pad10<attribute NAME=\"$1\" VALUE=\"$2\"/>\n"; } elsif ( $int =~ /(IPADDR)=(.*)/ ) { print "$pad10<attribute NAME=\"$1\" VALUE=\"$2\"/>\n"; } elsif ( $int =~ /(MASTER)=(.*)/ ) { print "$pad10<attribute NAME=\"$1\" VALUE=\"$2\"/>\n"; } elsif ( $int =~ /(ONBOOT)=(.*)/ ) { print "$pad10<attribute NAME=\"$1\" VALUE=\"$2\"/>\n"; } } print "$pad8</node>\n"; print "$pad6</node>\n"; print "$pad4</node>\n"; # Get list of Important Applications print "$pad4<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"Applications\">\n"; print "$pad6<node CREATED=\"" . int (gettimeofday * 1000) . "\" FOLDED=\"true\" ID=\"ID_" . int(rand(10000000000)) . "\" TEXT=\"Applications\">\n"; print "$pad8<attribute_layout NAME_WIDTH=\"125\" VALUE_WIDTH=\"450\"/>\n"; for my $app (sort { lc($a) cmp lc($b) } @applist) { for my $rpm (sort { lc($a) cmp lc($b) } @allrpm) { chomp ( $rpm ); my ( $appname, $rpmdetail ) = split(/\|/, $rpm); print "$pad8<attribute NAME=\"$app\" VALUE=\"$rpmdetail\"/>\n" if ( $app eq $appname ); } } print "$pad6</node>\n"; print "$pad4</node>\n"; print "$pad2</node>\n";
Leave a Reply