]>
Commit | Line | Data |
---|---|---|
aff192e6 DM |
1 | #!/usr/bin/perl -w |
2 | ||
3 | use strict; | |
4 | use Getopt::Long; | |
5 | use PVE::pvecfg; | |
6 | ||
7 | sub read_pkglist { | |
8 | ||
9 | my $pkglist = {}; | |
10 | ||
11 | open (TMP, "dpkg-query --show -f '\${PACKAGE} \${VERSION} \${STATUS}\n'|") || | |
12 | die "cant exec dpkg-query\n"; | |
13 | ||
14 | while (defined (my $line = <TMP>)) { | |
15 | if ($line =~ m/^(\S+)\s+(\S+)\s+install\s+ok\s+installed$/) { | |
16 | my ($pkg, $version) = ($1, $2); | |
17 | $pkglist->{$pkg} = $version; | |
18 | } | |
19 | } | |
20 | ||
21 | return $pkglist; | |
22 | } | |
23 | ||
24 | my $pkglist = read_pkglist(); | |
25 | ||
26 | sub print_status { | |
27 | my ($pkg, $repoid) = @_; | |
28 | ||
29 | my $version = "not correctly installed"; | |
30 | if ($pkglist->{$pkg}) { | |
31 | $version = $pkglist->{$pkg}; | |
32 | } | |
33 | ||
34 | if ($repoid) { | |
35 | print "$pkg: $version ($repoid)\n"; | |
36 | } else { | |
37 | print "$pkg: $version\n"; | |
38 | } | |
39 | } | |
40 | ||
41 | sub print_usage { | |
42 | my $msg = shift; | |
43 | ||
44 | print STDERR "ERROR: $msg\n" if $msg; | |
45 | print STDERR "USAGE: pveversion [--verbose]\n"; | |
46 | ||
47 | } | |
48 | ||
49 | my $opt_verbose; | |
50 | ||
51 | if (!GetOptions ('verbose' => \$opt_verbose)) { | |
52 | print_usage (); | |
53 | exit (-1); | |
54 | } | |
55 | ||
56 | if (scalar (@ARGV) != 0) { | |
57 | print_usage (); | |
58 | exit (-1); | |
59 | } | |
60 | ||
61 | my $ver = PVE::pvecfg::package(); | |
62 | $ver .= '/'; | |
63 | $ver .= PVE::pvecfg::version(); | |
64 | $ver .= '/'; | |
65 | $ver .= PVE::pvecfg::repoid(); | |
66 | ||
67 | my $kver = `uname -r`; | |
68 | chomp $kver; | |
69 | ||
70 | if (!$opt_verbose) { | |
71 | print "$ver\n"; | |
72 | exit (0); | |
73 | } | |
74 | ||
75 | print_status ("pve-manager", $ver); | |
76 | print "running kernel: $kver\n"; | |
77 | ||
cc0b3dac | 78 | my @list = qw(lvm2 clvm corosync-pve openais-pve libqb redhat-cluster-pve resource-agents-pve fence-agents-pve pve-cluster qemu-server pve-firmware libpve-common-perl libpve-access-control libpve-storage-perl vncterm vzctl vzprocps vzquota); |
aff192e6 DM |
79 | |
80 | my $pkg = 'proxmox-ve-2.6.18'; | |
81 | if (my $v = $pkglist->{$pkg}) { | |
82 | print "$pkg: $v\n"; | |
83 | push @list, 'pve-qemu-kvm-2.6.18'; | |
84 | ||
85 | } | |
86 | $pkg = 'proxmox-ve-2.6.24'; | |
87 | if (my $v = $pkglist->{$pkg}) { | |
88 | print "$pkg: $v\n"; | |
89 | push @list, 'pve-qemu-kvm'; | |
90 | } | |
91 | $pkg = 'proxmox-ve-2.6.32'; | |
92 | if (my $v = $pkglist->{$pkg}) { | |
93 | print "$pkg: $v\n"; | |
94 | push @list, 'pve-qemu-kvm'; | |
95 | push @list, 'ksm-control-daemon'; | |
96 | } | |
97 | ||
98 | foreach $pkg (grep { m/^pve-kernel-/ } keys %$pkglist) { | |
99 | print "$pkg: $pkglist->{$pkg}\n"; | |
100 | } | |
101 | ||
102 | foreach my $p (@list) { | |
103 | print_status ($p); | |
104 | } | |
105 | ||
106 | exit 0; | |
107 | ||
108 | __END__ | |
109 | ||
110 | =head1 NAME | |
111 | ||
112 | pveversion - Proxmox VE version info | |
113 | ||
114 | =head1 SYNOPSIS | |
115 | ||
116 | pveversion [--verbose] | |
117 | ||
118 | =head1 DESCRIPTION | |
119 | ||
120 | Print version information for Proxmox VE packages. |