]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - usr.sbin/pc-sysinstall/backend/functions-runcommands.sh
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / usr.sbin / pc-sysinstall / backend / functions-runcommands.sh
1 #!/bin/sh
2 #-
3 # Copyright (c) 2010 iXsystems, Inc.  All rights reserved.
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 # 1. Redistributions of source code must retain the above copyright
9 #    notice, this list of conditions and the following disclaimer.
10 # 2. Redistributions in binary form must reproduce the above copyright
11 #    notice, this list of conditions and the following disclaimer in the
12 #    documentation and/or other materials provided with the distribution.
13 #
14 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 # SUCH DAMAGE.
25 #
26 # $FreeBSD$
27
28 # Functions which runs commands on the system
29
30 . ${BACKEND}/functions.sh
31 . ${BACKEND}/functions-parse.sh
32
33 run_chroot_cmd()
34 {
35   CMD="$@"
36   echo_log "Running chroot command: ${CMD}"
37   echo "$CMD" >${FSMNT}/.runcmd.sh
38   chmod 755 ${FSMNT}/.runcmd.sh
39   chroot ${FSMNT} sh /.runcmd.sh
40   RES=$?
41
42   rm ${FSMNT}/.runcmd.sh
43   return ${RES}
44 };
45
46 run_chroot_script()
47 {
48   SCRIPT="$@"
49   SBASE=`basename $SCRIPT`
50
51   cp ${SCRIPT} ${FSMNT}/.$SBASE
52   chmod 755 ${FSMNT}/.${SBASE}
53
54   echo_log "Running chroot script: ${SCRIPT}"
55   chroot ${FSMNT} /.${SBASE}
56   RES=$?
57
58   rm ${FSMNT}/.${SBASE}
59   return ${RES}
60 };
61
62
63 run_ext_cmd()
64 {
65   CMD="$@"
66   # Make sure to export FSMNT, in case cmd needs it
67   export FSMNT
68   echo_log "Running external command: ${CMD}"
69   echo "${CMD}"> ${TMPDIR}/.runcmd.sh
70   chmod 755 ${TMPDIR}/.runcmd.sh
71   sh ${TMPDIR}/.runcmd.sh
72   RES=$?
73
74   rm ${TMPDIR}/.runcmd.sh
75   return ${RES}
76 };
77
78
79 # Starts the user setup
80 run_commands()
81 {
82   while read line
83   do
84     # Check if we need to run any chroot command
85     echo $line | grep -q ^runCommand=  2>/dev/null
86     if [ $? -eq 0 ]
87     then
88       get_value_from_string "$line"
89       run_chroot_cmd "$VAL"
90     fi
91
92     # Check if we need to run any chroot script
93     echo $line | grep -q ^runScript= 2>/dev/null
94     if [ $? -eq 0 ]
95     then
96       get_value_from_string "$line"
97       run_chroot_script "$VAL"
98     fi
99
100     # Check if we need to run any chroot command
101     echo $line | grep -q ^runExtCommand= 2>/dev/null
102     if [ $? -eq 0 ]
103     then
104       get_value_from_string "$line"
105       run_ext_cmd "$VAL"
106     fi
107
108   done <${CFGF}
109
110 };