diff options
author | Florian Pritz <bluewind@server-speed.net> | 2011-05-21 23:37:23 +0200 |
---|---|---|
committer | Florian Pritz <bluewind@server-speed.net> | 2011-05-21 23:46:20 +0200 |
commit | c8538b8fbc96f1df22d0a21836ad55bf242fdfce (patch) | |
tree | 8f199127c1ea0aabdacac4aba1b9b588b024938e /bootrun | |
download | bootrun-c8538b8fbc96f1df22d0a21836ad55bf242fdfce.tar.gz bootrun-c8538b8fbc96f1df22d0a21836ad55bf242fdfce.tar.xz |
initial commit
Signed-off-by: Florian Pritz <bluewind@server-speed.net>
Diffstat (limited to 'bootrun')
-rw-r--r-- | bootrun | 67 |
1 files changed, 67 insertions, 0 deletions
@@ -0,0 +1,67 @@ +#!/bin/bash + +get_homedirs() { + while read line; do + uname="$(cut -d: -f1 <<< "$line")" + uid="$(cut -d: -f3 <<< "$line")" + udir="$(cut -d: -f6 <<< "$line")" + if [[ "$uid" -ge 1000 ]]; then + echo "$uname:$udir" + fi + done </etc/passwd +} + +start_run() { + rcuser=$2 + rclog="/var/log/bootrun/$rcuser.log" + touch "$rclog" + chmod 600 "$rclog" + chown "$rcuser" "$rclog" + echo "Bootrun on $(date)" >> "$rclog" + su -l "$rcuser" -c "$1" &>> "$rclog" +} + +start() { + touch /var/log/bootrun.log + chmod 640 /var/log/bootrun.log + chown root:log /var/log/bootrun.log + mkdir -p /var/log/bootrun + + for line in $(get_homedirs); do + user="$(cut -d: -f1 <<< "$line")" + file="$(cut -d: -f2 <<< "$line")/.bootrun" + if [ -x "$file" ]; then + start_run "$file" "$user" &>> /var/log/bootrun.log + fi + done +} + +stop_run() { + rcuser=$2 + rclog="/var/log/bootrun/$rcuser.log" + touch "$rclog" + chmod 600 "$rclog" + chown "$rcuser" "$rclog" + echo "Shutdownrun on $(date)" >> "$rclog" + su -l "$rcuser" -c "/usr/lib/bootrun.timoutrun $1" &>> "$rclog" +} + +stop() { + rcpids="" + for line in $(get_homedirs); do + user="$(cut -d: -f1 <<< "$line")" + file="$(cut -d: -f2 <<< "$line")/.shutdownrun" + if [ -x "$file" ]; then + stop_run "$file" "$user" &>> /var/log/bootrun.log & + rcpids="$rcpids $!" + fi + done + + wait $rcpids +} + +case "$1" in + start) start;; + stop) stop;; + *) echo "usage: $0 {start|stop}";; +esac |