VBoxAutostartDarwin.sh revision e366e4992f5d81a0b93412e10d2ef9dc06f930ed
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering#!/bin/sh
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering#
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# Copyright (C) 2012 Oracle Corporation
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering#
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# This file is part of VirtualBox Open Source Edition (OSE), as
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# available from http://www.virtualbox.org. This file is free software;
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# you can redistribute it and/or modify it under the terms of the GNU
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# General Public License (GPL) as published by the Free Software
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# Foundation, in version 2 as it comes in the "COPYING" file of the
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering#
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering#
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# Wrapper for the per user autostart daemon. Gets a list of all users
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering# and starts the VMs.
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering#
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poetteringfunction vboxStartAllUserVms()
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering{
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering # Go through the list and filter out all users without a shell and a
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering # non existing home.
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering for user in `dscl . -list /Users`
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering do
b5efdb8af40ea759a1ea584c1bc44ecc81dd00ceLennart Poettering HOMEDIR=`dscl . -read /Users/${user} | grep NFSHomeDirectory | sed 's/NFSHomeDirectory: //g'`
3ffd4af22052963e7a29431721ee204e634bea75Lennart Poettering USERSHELL=`dscl . -read /Users/${user} | grep UserShell | sed 's/UserShell: //g'`
0d39fa9c69b97a2ceb156053deef69c0866c2b97Lennart Poettering
d15d0333be6a1ca7fdd99a1881d967b6be8f387aZbigniew Jędrzejewski-Szmek # Check for known home directories and shells for daemons
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering if [[ "${HOMEDIR}" == "/var/empty" || "${HOMEDIR}" == "/dev/null" || "${HOMEDIR}" == "/var/root"
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering || "${USERSHELL}" == "/usr/bin/false" || "${USERSHELL}" == "/dev/null" || "${USERSHELL}" == "/usr/sbin/uucico" ]]
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering then
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering continue
4349cd7c1d153c4ffa23cf1cff1644e0afa9bcf0Lennart Poettering fi
6bedfcbb2970e06a4d3280c8fb62083d252ede73Lennart Poettering
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering # Start the daemon
4e731273edfe852a3eee2949cd20f49fd5b4f6d7Lennart Poettering su ${user} -c "/Applications/VirtualBox.app/Contents/MacOS/VBoxAutostart --quiet --start --background --config ${1}"
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering
8fcde01280adcbd07e8205b91ac52b06305b6208Lennart Poettering done
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering}
059cb3858acd038ff2cef10a3a99119bf71a8fc6Lennart Poettering
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poetteringcase $1 in
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering --start) vboxStartAllUserVms ${2};;
689aede8c622ba68d9060e4edee27364445b2007Lennart Poettering *) echo "Unknown option ${1}";;
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poetteringesac
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering