functions-runcommands.sh revision 302408
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: stable/11/usr.sbin/pc-sysinstall/backend/functions-runcommands.sh 220059 2011-03-27 16:57:54Z jpaetzel $
27
28# Functions which runs commands on the system
29
30. ${BACKEND}/functions.sh
31. ${BACKEND}/functions-parse.sh
32
33run_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
46run_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
63run_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
80run_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};
111