54 |
$hostname = $arg; |
$hostname = $arg; |
55 |
} |
} |
56 |
} |
} |
57 |
|
|
58 |
} |
} |
59 |
|
|
60 |
|
# nuke arguments so that prompt doesn't get confused |
61 |
|
@ARGV = (); |
62 |
|
|
63 |
$ip ||= prompt('Enter IP: ', -require => { |
$ip ||= prompt('Enter IP: ', -require => { |
64 |
'Must be IP (e.g. 192.168.0.1): ' => qr/$RE{net}{IPv4}/, |
'Must be IP (e.g. 192.168.0.1): ' => qr/$RE{net}{IPv4}/, |
65 |
}) unless ($ip =~ /$RE{net}{IPv4}/); |
}) unless ($ip =~ /$RE{net}{IPv4}/); |
125 |
|
|
126 |
vzctl('start', $ve_id); |
vzctl('start', $ve_id); |
127 |
|
|
128 |
my $customize_sh = <<'__END_OF_SH__'; |
runscript( $ve_id, 'custom/00-all.sh' ); |
|
|
|
|
# use shadow passwords |
|
|
pwconv |
|
|
|
|
|
# upgrade to lastest version |
|
|
apt-get -y update |
|
|
apt-get -y upgrade |
|
|
|
|
|
# install additional packages |
|
|
apt-get -y --force-yes install vim less ssh sudo screen telnet finger |
|
|
|
|
|
# remove unwanted packages |
|
|
apt-get -y remove nano |
|
|
|
|
|
# apt-iselect helper |
|
|
wget -t 1 -T 5 -O /usr/local/bin/apt-iselect http://www.rot13.org/~dpavlin/projects/scripts/apt-iselect |
|
|
chmod 755 /usr/local/bin/apt-iselect |
|
|
|
|
|
# lock root user |
|
|
usermod -L root |
|
|
|
|
|
# disable getty |
|
|
sed -i -e '/getty/d' /etc/inittab |
|
|
|
|
|
# sane permissions for /root directory |
|
|
chmod 700 /root |
|
|
|
|
|
# disable sync() for syslog |
|
|
sed -i -e 's@\([[:space:]]\)\(/var/log/\)@\1-\2@' /etc/syslog.conf |
|
|
|
|
|
# fix /etc/mtab |
|
|
rm -f /etc/mtab |
|
|
ln -s /proc/mounts /etc/mtab |
|
|
|
|
|
# remove unneeded packages |
|
|
dpkg --purge modutils |
|
|
dpkg --purge ppp pppoeconf pppoe pppconfig |
|
|
|
|
|
# disable services |
|
|
update-rc.d -f klogd remove |
|
|
update-rc.d -f quotarpc remove |
|
|
update-rc.d -f exim4 remove |
|
|
update-rc.d -f inetd remove |
|
|
|
|
|
# clean packages |
|
|
apt-get clean |
|
|
|
|
|
__END_OF_SH__ |
|
|
|
|
|
foreach my $l (split(/\n/, $customize_sh)) { |
|
|
next if ($l =~ /^\s*$/); |
|
|
if ($l =~ /^#\s+(.+)$/) { |
|
|
warn ">> $1\n"; |
|
|
} else { |
|
|
vzctl('exec', $ve_id, $l); |
|
|
} |
|
|
} |
|
129 |
|
|
130 |
#vzctl('stop', $ve_id); |
#vzctl('stop', $ve_id); |
131 |
|
|
132 |
my $passwd = prompt('root passwd: ', -echo=>'*'); |
my $passwd = prompt( -prompt => 'root passwd: ', -echo=>'*' ); |
133 |
vzctl('set', $ve_id, '--userpasswd', 'root:' . $passwd ) if ($passwd); |
vzctl('set', $ve_id, '--userpasswd', 'root:' . $passwd ) if $passwd; |
134 |
|
|
135 |
my $login = prompt('create login: '); |
my $login = prompt('create login: '); |
136 |
if ($login) { |
if ($login) { |
137 |
$passwd = prompt("$login passwd: ", -echo=>'*'); |
$passwd = prompt( -prompt => "$login passwd: ", -echo=>'*'); |
138 |
vzctl('exec', $ve_id, "useradd --create-home $login"); |
vzctl('exec', $ve_id, "useradd --create-home $login"); |
139 |
vzctl('set', $ve_id, '--userpasswd', "$login:$passwd" ); |
vzctl('set', $ve_id, '--userpasswd', "$login:$passwd" ); |
140 |
} |
} |