#!/bin/bash # create temporary machine PROGNAME=`basename $0` || exit 1 VZBASE=/var/lib/vz/private VZID=900 VG=cube LV=$RANDOM$RANDOM LVSIZE=2G BASE=/dev/mapper/${LV}_crypt function debug { if [ "$DEBUG" = "1" ]; then echo "${PROGNAME}:debug:$1" 1>&2; fi } function warning { if [ "$QUIET" = "0" ]; then echo "${PROGNAME}:warning:$1" 1>&2; fi } function usage { echo "Usage: ${PROGNAME}" exit } while [ "$1" != "" ]; do case $1 in -D | --debug ) shift DEBUG=1 ;; -q | --quiet ) shift QUIET=1 ;; -h | --help ) usage ;; -* ) echo "$PROGNAME: unrecognized option \`$1'" echo "Try \`$PROGNAME --help' for more information." exit 1 ;; * ) break; ;; esac done if ! mkdir $VZBASE/$VZID; then warning "unable to create $VZBASE/$VZID, can't run" exit 1 fi function cleanup { debug "cleanup called, arg=$1" trap - EXIT HUP INT TERM ERR if [ -b $BASE ]; then umount /var/lib/vz/root/$VZID/var/mirror/debian vzctl stop $VZID umount $BASE cryptsetup remove $BASE fi lvremove -f $VG/$LV rmdir $VZBASE/$VZID exit $1 } function fatal { echo "${PROGNAME}:${1:-"unknown error"}" 1>&2 cleanup 1 } function sig_handler_HUPINTTERM { fatal "cought HUP, INT or TERM signal, exiting" } function sig_handler_ERR { cleanup 1 } function sig_handler_EXIT { cleanup 0 } trap sig_handler_HUPINTTERM HUP INT TERM trap sig_handler_ERR ERR trap sig_handler_EXIT EXIT debug "using vg=$VG, lv=$LV ($LVSIZE), vzid=$VZID" lvcreate $VG -L $LVSIZE -n $LV cryptsetup -d /dev/random -s 256 -c aes-cbc-essiv:sha256 create `basename $BASE` /dev/$VG/$LV mke2fs $BASE mount $BASE $VZBASE/$VZID debootstrap --arch i386 lenny $VZBASE/$VZID file:///var/mirror/debian echo temp > $VZBASE/$VZID/etc/hostname sed -i -e '/getty/d' $VZBASE/$VZID/etc/inittab rm -f $VZBASE/$VZID/etc/mtab ln -s /proc/mounts $VZBASE/$VZID/etc/mtab mkdir -p $VZBASE/$VZID/var/mirror/debian echo "deb file:///var/mirror/debian lenny main" > $VZBASE/$VZID/etc/apt/sources.list cat << "X" > $VZBASE/$VZID/etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet static address 192.168.1.32 netmask 255.255.255.0 broadcast 192.168.1.255 X cat << "X" > $VZBASE/$VZID/etc/resolv.conf nameserver 10.0.21.1 X #sed -i -e 's/id:2:initdefault:/id:1:initdefault:/' $VZBASE/$VZID/etc/inittab mkdir $VZBASE/$VZID/home/user chown 1000:1000 $VZBASE/$VZID/home/user vzctl start $VZID brctl addif br0 veth900.1 brctl addif br1 veth900.0 mount cube:/var/mirror/debian /var/lib/vz/root/$VZID/var/mirror/debian vzctl exec $VZID apt-get update vzctl exec $VZID apt-get -y install iceweasel less icedove xdm wmaker x11-xserver-utils xterm menu pidgin openssh-client #cat << "X" >> $VZBASE/$VZID/etc/tor/torrc #AutomapHostsOnResolve 1 #TransPort 9040 #DNSPort 53 #X echo "192.168.1.2" >> $VZBASE/$VZID/etc/X11/xdm/Xaccess sed -i -e 's/DisplayManager.requestPort/!DisplayManager.requestPort/' $VZBASE/$VZID/etc/X11/xdm/xdm-config sed -i -e 's/^:0 local/#:0 local/' $VZBASE/$VZID/etc/X11/xdm/Xservers echo "user:x:1000:1000:,,,:/home/user:/bin/bash" >> $VZBASE/$VZID/etc/passwd echo 'user:$1$KVqK8e9B$PyjRo1lLCCtgNI//PNstf/:14303:0:99999:7:::' >> $VZBASE/$VZID/etc/shadow vzctl exec $VZID /etc/init.d/xdm start bash