#!/bin/sh export PATH=/bin TMPDIR=/tmp trap 'sync ; echo 1 >/proc/sys/kernel/sysrq ; echo b >/proc/sysrq-trigger' EXIT mount -t proc proc /proc mount -t devtmpfs devtmpfs /dev mount -t tmpfs tmp /tmp mount -t ext4 -r /dev/vdb /root/student mount -t ext4 -r /dev/vdc /root/project mount -t ext4 /dev/vdd /root/results cp -a /root/student/. /tmp/ cp -a --remove-destination /root/project/build/. /tmp/ chmod -R 777 /tmp cd /tmp rm -f program ( ulimit -t 30 -u 256 -n 256 -f 2048 timeout -s 9 30 \ setpriv --reuid=1 --regid=1 --clear-groups --no-new-privs --inh-caps=-all \ make -B >/root/results/build.log 2>&1 echo $? >/root/results/build.status ) for TEST in /root/project/tests/* ; do NAME="$(basename "$TEST")" ARGS="/root/project/args/$NAME" [ -f "$ARGS" ] || ARGS=/dev/null cp -a --remove-destination "$TEST" /tmp/test chmod 755 /tmp/test ( ulimit -t 2 -u 256 -n 256 -f 2048 timeout -s 9 2 \ setpriv --reuid=1 --regid=1 --clear-groups --no-new-privs --inh-caps=-all \ /tmp/test <"$ARGS" >"/root/results/$NAME" 2>/dev/null echo $? >"/root/results/$NAME.status" ) done