[pve-devel] [PATCH] Add new pvereport command

Emmanuel Kasper e.kasper at proxmox.com
Thu Oct 22 10:46:05 CEST 2015


---
 bin/Makefile  | 10 +++++--
 bin/pvereport | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 97 insertions(+), 2 deletions(-)
 create mode 100755 bin/pvereport

diff --git a/bin/Makefile b/bin/Makefile
index 9cfeafe..827e30d 100644
--- a/bin/Makefile
+++ b/bin/Makefile
@@ -15,7 +15,8 @@ SCRIPTS =  			\
 	pvemailforward.pl	\
 	pveupgrade		\
 	pveupdate		\
-	pveperf
+	pveperf			\
+	pvereport
 
 SERVICE_MANS = $(addsuffix .8, ${SERVICES})
 SERVICE_PODS = $(addsuffix .pod, ${SERVICE_MANS})
@@ -25,7 +26,8 @@ CLI_MANS = 				\
 	pveversion.1			\
 	pveupgrade.1			\
 	pveperf.1				\
-	pvesh.1
+	pvesh.1				\
+	pvereport.1
 
 CLI_PODS = $(addsuffix .pod, ${CLI_MANS})
 
@@ -66,6 +68,10 @@ pvesh.1.pod: pvesh
 	podselect $< > $@.tmp
 	mv $@.tmp $@
 
+pvereport.1.pod: pvereport
+	podselect $< > $@.tmp
+	mv $@.tmp $@
+
 %.service-bash-completion:
 	perl -I.. -T -e "use PVE::Service::$*; PVE::Service::$*->generate_bash_completions();" >$@.tmp
 	mv $@.tmp $@
diff --git a/bin/pvereport b/bin/pvereport
new file mode 100755
index 0000000..0fe3482
--- /dev/null
+++ b/bin/pvereport
@@ -0,0 +1,89 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use PVE::pvecfg;
+
+($> == 0 ) || die "please run as root\n";
+
+my @general = ('hostname', 'pveversion --verbose', 'cat /etc/hosts', 'top -b -n 1  | head -n 15',
+  'pvesubscription get','lscpu', 'grep --max-count=1 "model name" /proc/cpuinfo' );
+
+my @storage = ('cat /etc/pve/storage.cfg', 'pvesm status', 'cat /etc/fstab', 'mount', 'df --human');
+
+my @volumes = ('lvdisplay', 'vgdisplay', 'zpool status', 'zfs list');
+
+my @machines = ('qm list', 'grep . /etc/pve/qemu-server/*');
+
+my @net = ('ifconfig', 'cat /etc/network/interfaces', 'grep . /etc/pve/firewall/*',
+  'iptables-save');
+
+my @cluster = ('pvecm nodes', 'pvecm status');
+
+if (PVE::pvecfg::version() >= 4.0) {
+    push @machines, 'grep . /etc/pve/lxc/*' ;
+    push @cluster, 'cat /etc/pve/corosync.conf' ;
+} else {
+    push @machines, 'grep . /etc/pve/openvz/*' ;
+    push @cluster,  'clustat', 'cat /etc/cluster.conf' ;
+}
+
+my $general_report = {
+    title => 'general system info',
+    commands => \@general,
+};
+
+my $storage_report = {
+    title => 'info about storage (lvm and zfs)',
+    commands => \@storage,
+};
+
+my $volume_report = {
+    title => 'info about virtual machines',
+    commands => \@machines,
+};
+
+my $net_report = {
+    title => 'info about network and firewall',
+    commands => \@net,
+};
+
+my $cluster_report = {
+    title => 'info about clustering',
+    commands => \@cluster,
+};
+
+my @global_report = ($general_report, $storage_report, $volume_report, $net_report, $cluster_report);
+
+# execute commands and display their output as if they've been done on a interactive shell
+# so the local sysadmin can reproduce what we're doing
+sub do_execute {
+    my ($shell_command) = @_;
+    print "$shell_command \n";
+    system $shell_command;
+    print "\n";
+}
+
+foreach my $subreport (@global_report) {
+    my $title = $subreport->{'title'};
+    my @commands = @{$subreport->{'commands'}};
+
+    print "==== ".$title." ====\n";
+    foreach my $shell_command (@commands) {
+	do_execute($shell_command);
+    }
+}
+
+__END__
+
+=head1 NAME
+
+pvereport - Proxmox VE Report tool
+
+=head1 SYNOPSIS
+
+pvereport
+
+=head1 DESCRIPTION
+
+Display various information related to a Proxmox VE system
-- 
2.1.4




More information about the pve-devel mailing list