This commit is contained in:
framp 2018-08-17 22:15:16 +02:00
parent b0ffc3afd9
commit 0fea4cc2a7
1 changed files with 47 additions and 9 deletions

View File

@ -2,6 +2,35 @@
version="v0.1" version="v0.1"
# nice function to get user who invoked this script via sudo
# Borrowed from http://stackoverflow.com/questions/4598001/how-do-you-find-the-original-user-through-multiple-sudo-and-su-commands
# adapted to return current user if no sudoers is used
function findUser() {
if [[ -z "$SUDO_USER" || "$SUDO_USER" == "root" ]]; then
echo $USER
return
fi
thisPID=$$
origUser=$(whoami)
thisUser=$origUser
while [ "$thisUser" = "$origUser" ]; do
if [ "$thisPID" = "0" ]; then
thisUser="root"
break
fi
ARR=($(ps h -p$thisPID -ouser,ppid;))
thisUser="${ARR[0]}"
myPPid="${ARR[1]}"
thisPID=$myPPid
done
getent passwd "$thisUser" | cut -d: -f1
}
function info() { function info() {
echo "$1..." echo "$1..."
} }
@ -13,19 +42,27 @@ function error() {
} }
function cleanup() { function cleanup() {
if losetup $loopback &>/dev/null; then if losetup $loopback &>/dev/null; then
losetup -d "$loopback" losetup -d "$loopback"
fi fi
if [ "$debug" = true ]; then
# give logfile back to user
local user=$(findUser)
if [[ $user != "root" ]]; then
chown --reference=/home/$user "$LOGFILE"
fi
fi
} }
function logVariables() { function logVariables() {
if [ "$debug" = true ]; then if [ "$debug" = true ]; then
echo "--- Line $1" >> "$LOGFILE" echo "Line $1" >> "$LOGFILE"
shift shift
local v var local v var
for var in "$@"; do for var in "$@"; do
eval "v=\$$var" eval "v=\$$var"
echo "--- $var: $v" >> $LOGFILE echo "$var: $v" >> $LOGFILE
done done
fi fi
} }
@ -44,18 +81,19 @@ while getopts ":sd" opt; do
done done
shift $((OPTIND-1)) shift $((OPTIND-1))
echo "${0##*/} $version"
CURRENT_DIR=$(pwd) CURRENT_DIR=$(pwd)
SCRIPTNAME="${0##*/}" SCRIPTNAME="${0##*/}"
LOGFILE=${CURRENT_DIR}/${SCRIPTNAME%.*}.log LOGFILE=${CURRENT_DIR}/${SCRIPTNAME%.*}.log
if [ "$debug" = true ]; then if [ "$debug" = true ]; then
info "Creating log file $LOGFILE" info "Creating log file $LOGFILE"
rm $LOGFILE &>/dev/null
exec 1> >(stdbuf -i0 -o0 -e0 tee -a "$LOGFILE" >&1) exec 1> >(stdbuf -i0 -o0 -e0 tee -a "$LOGFILE" >&1)
exec 2> >(stdbuf -i0 -o0 -e0 tee -a "$LOGFILE" >&2) exec 2> >(stdbuf -i0 -o0 -e0 tee -a "$LOGFILE" >&2)
fi fi
echo "${0##*/} $version"
#Args #Args
img="$1" img="$1"
@ -64,11 +102,11 @@ if [[ -z "$img" ]]; then
usage usage
fi fi
if [[ ! -f "$img" ]]; then if [[ ! -f "$img" ]]; then
echo "ERROR in $LINENO: $img is not a file..." error $LINENO "$img is not a file..."
exit -2 exit -2
fi fi
if (( EUID != 0 )); then if (( EUID != 0 )); then
echo "ERROR in $LINENO: You need to be running as root." error $LINENO "You need to be running as root."
exit -3 exit -3
fi fi