main () { CONF_FILE="$PWD/_deploy.conf" [ -f "$CONF_FILE" ] && . "$CONF_FILE" file=${VMS}/$1 if [ -f "$file" ]; then echo "reading $file" . "$file" backup_image "$file" remove_user "$file" move_file "$file" else echo "ERROR file doesn't exist: ${file}" fi } check_instance() { # Check if the instance name exists, otherwise return filename as VM. # Takes vm*.txt and instance # prints either filename or instance variable if test -z "$2" then echo "$1" | sed "s@^$VMS@@;s@^/@@;s/\\.txt$//" else echo "$2" fi } check_owner() { # Check if the owner name exists, otherwise returns username. # Takes username and owner # prints either owner or username if test -z "$2" then echo "$1" else echo "$2" fi } check_format() { # Check if the image format exists, otherwise returns img. # Takes format # prints either format or img if test -z "$1" then echo "${FORMAT}" else echo "$1" fi } backup_image() { filename=$1 _instance=$(check_instance "$filename" "$instance") _format=$(check_format "$format") if [ -f "${IMAGES}/${_instance}.${_format}" ]; then mv ${IMAGES}/${_instance}.${_format} ${IMAGES}/${_instance}.${_format}-backup echo "vmm(4)/vmd(8) files moved: ${IMAGES}/${_instance}.${_format} ${IMAGES}/${_instance}.${_format}-backup" else echo "ERROR vmm(4)/vmd(8) files moved: ${IMAGES}/${_instance}.${_format} doesn't exist" fi } remove_user() { _owner=$(check_owner "$username" "$owner") if [ -n "$_owner" ]; then if grep -e "^${_owner}:" /etc/passwd > /dev/null; then userdel -r "$_owner" echo "userdel(8) removal: $_owner" else echo "ERROR userdel(8) removal: $_owner doesn't exist" fi if grep -e "^${_owner}:" /etc/group > /dev/null; then groupdel "$_owner" echo "groupdel(8) removal: $_owner" else echo "ERROR groupdel(8) removal: $_owner doesn't exist" fi fi } move_file() { filename=$1 cp ${filename} ${filename}-backup echo "cp(1): ${filename} ${filename}-backup" mv ${filename} ${filename}.free echo "mv(1): ${filename} ${filename}.free" chown -R mischa:mischa ${filename}-backup ${filename}.free } main "$@"