]> git.proxmox.com Git - pve-manager.git/commitdiff
Add new pvereport command
authorEmmanuel Kasper <e.kasper@proxmox.com>
Thu, 22 Oct 2015 08:46:05 +0000 (10:46 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 27 Oct 2015 06:31:57 +0000 (07:31 +0100)
bin/Makefile
bin/pvereport [new file with mode: 0755]

index 9cfeafe03827a25cf123177b9d812fa7ba9f2313..827e30da81578a7c2592690e346ca91794d47130 100644 (file)
@@ -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 (executable)
index 0000000..0fe3482
--- /dev/null
@@ -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