3 |
use strict; |
use strict; |
4 |
use Shell qw/rm vzlist vzctl/; |
use Shell qw/rm vzlist vzctl/; |
5 |
|
|
6 |
my $vz = '/vz'; |
use lib 'lib'; |
7 |
my $conf = '/etc/vz/conf'; |
use VZ; |
8 |
|
check_root; |
9 |
|
|
10 |
my $VEID = shift @ARGV; |
my $VEID = shift @ARGV; |
11 |
|
|
12 |
sub vzlist_config { |
die "Usage: $0 VEID\n\n", join("\n",vzlist_configs()),"\n" unless $VEID; |
|
my @c; |
|
|
open( my $cfgs, 'find /etc/vz/conf -maxdepth 1 -name "*.conf" |' ) || die "can't run find: $!"; |
|
|
while(<$cfgs>) { |
|
|
chomp; |
|
|
if ( m#^.+/(\d+)\.conf$# ) { |
|
|
if ( -d "$vz/private/$1" ) { |
|
|
push @c, $1; |
|
|
} else { |
|
|
warn "WARNING: have config for $1 but no private directory\n"; |
|
|
} |
|
|
} else { |
|
|
warn "SKIPPED: $_\n"; |
|
|
} |
|
|
} |
|
|
return @c; |
|
|
} |
|
|
|
|
|
die "Usage: $0 VEID\n\n", join("\n",vzlist_config()),"\n" unless $VEID; |
|
13 |
|
|
14 |
my $c = "$conf/$VEID.conf"; |
my $c = "$vz_conf/$VEID.conf"; |
15 |
if ( -e $c ) { |
if ( -e $c ) { |
16 |
vzctl('stop', $VEID); |
vzctl('stop', $VEID); |
17 |
unlink $c || die "can't remove $c: $!"; |
unlink $c || die "can't remove $c: $!"; |
18 |
|
warn "# removed $c\n"; |
19 |
} else { |
} else { |
20 |
warn "WARNING: configuration file $c doesn't exist\n"; |
warn "WARNING: configuration file $c doesn't exist\n"; |
21 |
} |
} |
22 |
|
|
23 |
foreach my $p ( qw/root private/ ) { |
foreach my $p ( qw/root private/ ) { |
24 |
my $c = "$vz/$p/$VEID"; |
my $c = "$vz_root/$p/$VEID"; |
25 |
if ( -e $c ) { |
if ( -e $c ) { |
26 |
rm('-Rf', $c); |
rm('-Rf', $c); |
27 |
die "can't remove $c: $!" if -e $c; |
die "can't remove $c: $!" if -e $c; |
28 |
|
warn "# removed $c\n"; |
29 |
} else { |
} else { |
30 |
warn "WARNING: directory $c doesn't exist\n"; |
warn "WARNING: directory $c doesn't exist\n"; |
31 |
} |
} |