[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