1 |
dpavlin |
36 |
#!/usr/bin/perl -w |
2 |
|
|
|
3 |
|
|
use strict; |
4 |
dpavlin |
37 |
use Shell qw/rm vzlist vzctl/; |
5 |
dpavlin |
36 |
|
6 |
|
|
my $vz = '/vz'; |
7 |
|
|
my $conf = '/etc/vz/conf'; |
8 |
|
|
|
9 |
|
|
my $VEID = shift @ARGV; |
10 |
|
|
|
11 |
|
|
sub vzlist_config { |
12 |
|
|
my @c; |
13 |
|
|
open( my $cfgs, 'find /etc/vz/conf -maxdepth 1 -name "*.conf" |' ) || die "can't run find: $!"; |
14 |
|
|
while(<$cfgs>) { |
15 |
|
|
chomp; |
16 |
|
|
if ( m#^.+/(\d+)\.conf$# ) { |
17 |
|
|
if ( -d "$vz/private/$1" ) { |
18 |
|
|
push @c, $1; |
19 |
|
|
} else { |
20 |
|
|
warn "WARNING: have config for $1 but no private directory\n"; |
21 |
|
|
} |
22 |
|
|
} else { |
23 |
|
|
warn "SKIPPED: $_\n"; |
24 |
|
|
} |
25 |
|
|
} |
26 |
|
|
return @c; |
27 |
|
|
} |
28 |
|
|
|
29 |
|
|
die "Usage: $0 VEID\n\n", join("\n",vzlist_config()),"\n" unless $VEID; |
30 |
|
|
|
31 |
|
|
my $c = "$conf/$VEID.conf"; |
32 |
|
|
if ( -e $c ) { |
33 |
dpavlin |
37 |
vzctl('stop', $VEID); |
34 |
dpavlin |
36 |
unlink $c || die "can't remove $c: $!"; |
35 |
|
|
} else { |
36 |
|
|
warn "WARNING: configuration file $c doesn't exist\n"; |
37 |
|
|
} |
38 |
|
|
|
39 |
|
|
foreach my $p ( qw/root private/ ) { |
40 |
|
|
my $c = "$vz/$p/$VEID"; |
41 |
|
|
if ( -e $c ) { |
42 |
|
|
rm('-Rf', $c); |
43 |
|
|
die "can't remove $c: $!" if -e $c; |
44 |
|
|
} else { |
45 |
|
|
warn "WARNING: directory $c doesn't exist\n"; |
46 |
|
|
} |
47 |
|
|
} |
48 |
|
|
|
49 |
|
|
print "OK: $VEID removed\n"; |