From cd8f966ee70d2a8662bf59c4440ee9e86fd5dd48 Mon Sep 17 00:00:00 2001 From: Emmanuel Kasper Date: Thu, 22 Oct 2015 10:46:05 +0200 Subject: [PATCH] Add new pvereport command --- 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 9cfeafe03..827e30da8 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 000000000..0fe3482f1 --- /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