130 lines
3.6 KiB
Bash
130 lines
3.6 KiB
Bash
|
|
TFTPSERV=tftp
|
|
TFTPCFGDIR=/var/lib/tftpboot
|
|
|
|
function createDirs()
|
|
{
|
|
if [ $# -ne 1 ]; then
|
|
errorAndLog "${FUNCNAME}(): invalid number of parameters"
|
|
exit 1
|
|
fi
|
|
|
|
local path_ogboot_base="$1"
|
|
|
|
# Crear estructura de directorios.
|
|
echoAndLog "${FUNCNAME}(): creating directory paths in $path_ogboot_base"
|
|
mkdir -p $path_ogboot_base
|
|
mkdir -p $path_ogboot_base/bin
|
|
mkdir -p $path_ogboot_base/client/{cache,images,log}
|
|
mkdir -p $path_ogboot_base/doc
|
|
mkdir -p $path_ogboot_base/etc
|
|
mkdir -p $path_ogboot_base/lib
|
|
mkdir -p $path_ogboot_base/log/clients
|
|
ln -fs $path_ogboot_base/log /var/log/ogboot
|
|
|
|
mkdir -p $TFTPCFGDIR
|
|
ln -fs $TFTPCFGDIR $path_ogboot_base/tftpboot
|
|
mkdir -p $path_ogboot_base/tftpboot/{menu.lst,grub}
|
|
if [ $? -ne 0 ]; then
|
|
errorAndLog "${FUNCNAME}(): error while creating dirs. Do you have write permissions?"
|
|
return 1
|
|
fi
|
|
|
|
# Crear usuario ficticio.
|
|
if id -u $OPENGNSYS_CLIENT_USER &>/dev/null; then
|
|
echoAndLog "${FUNCNAME}(): user \"$OPENGNSYS_CLIENT_USER\" is already created"
|
|
else
|
|
echoAndLog "${FUNCNAME}(): creating OpenGnsys user"
|
|
useradd $OPENGNSYS_CLIENT_USER 2>/dev/null
|
|
if [ $? -ne 0 ]; then
|
|
errorAndLog "${FUNCNAME}(): error creating OpenGnsys user"
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
# Mover el fichero de registro de instalación al directorio de logs.
|
|
echoAndLog "${FUNCNAME}(): moving installation log file"
|
|
mv $LOG_FILE $OGLOGFILE && LOG_FILE=$OGLOGFILE
|
|
chmod 600 $LOG_FILE
|
|
|
|
echoAndLog "${FUNCNAME}(): directory paths created"
|
|
return 0
|
|
}
|
|
|
|
# Copia ficheros de configuración y ejecutables genéricos del servidor.
|
|
function copyServerFiles ()
|
|
{
|
|
if [ $# -ne 1 ]; then
|
|
errorAndLog "${FUNCNAME}(): invalid number of parameters"
|
|
exit 1
|
|
fi
|
|
|
|
local path_ogboot_base="$1"
|
|
|
|
# Lista de ficheros y directorios origen y de directorios destino.
|
|
local SOURCES=( server/tftpboot \
|
|
/usr/lib/shim/shimx64.efi.signed \
|
|
/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed \
|
|
)
|
|
local TARGETS=( tftpboot \
|
|
tftpboot \
|
|
tftpboot/grubx64.efi \
|
|
)
|
|
|
|
if [ ${#SOURCES[@]} != ${#TARGETS[@]} ]; then
|
|
errorAndLog "${FUNCNAME}(): inconsistent number of array items"
|
|
exit 1
|
|
fi
|
|
|
|
# Copiar ficheros.
|
|
echoAndLog "${FUNCNAME}(): copying files to server directories"
|
|
|
|
pushd $WORKDIR/ogboot
|
|
local i
|
|
for (( i = 0; i < ${#SOURCES[@]}; i++ )); do
|
|
if [ -f "${SOURCES[$i]}" ]; then
|
|
echoAndLog "Copying ${SOURCES[$i]} to $path_ogboot_base/${TARGETS[$i]}"
|
|
cp -a "${SOURCES[$i]}" "${path_ogboot_base}/${TARGETS[$i]}"
|
|
elif [ -d "${SOURCES[$i]}" ]; then
|
|
echoAndLog "Copying content of ${SOURCES[$i]} to $path_ogboot_base/${TARGETS[$i]}"
|
|
cp -a "${SOURCES[$i]}"/* "${path_ogboot_base}/${TARGETS[$i]}"
|
|
else
|
|
warningAndLog "Unable to copy ${SOURCES[$i]} to $path_ogboot_base/${TARGETS[$i]}"
|
|
fi
|
|
done
|
|
|
|
popd
|
|
}
|
|
############################################################
|
|
### Esqueleto para el Servicio pxe y contenedor tftpboot ###
|
|
############################################################
|
|
|
|
|
|
function tftpConfigure()
|
|
{
|
|
echoAndLog "${FUNCNAME}(): Configuring TFTP service."
|
|
# Habilitar TFTP y reiniciar Inetd.
|
|
if [ -n "$TFTPSERV" ]; then
|
|
if [ -f $INETDCFGDIR/$TFTPSERV ]; then
|
|
perl -pi -e 's/disable.*/disable = no/' $INETDCFGDIR/$TFTPSERV
|
|
else
|
|
service=$TFTPSERV
|
|
$ENABLESERVICE; $STARTSERVICE
|
|
fi
|
|
fi
|
|
service=$INETDSERV
|
|
$ENABLESERVICE; $STARTSERVICE
|
|
|
|
# comprobamos el servicio tftp
|
|
sleep 1
|
|
testPxe
|
|
}
|
|
|
|
# Comprueba que haya conexión al servicio TFTP/PXE.
|
|
function testPxe ()
|
|
{
|
|
echoAndLog "${FUNCNAME}(): Checking TFTP service... please wait."
|
|
echo "test" >$TFTPCFGDIR/testpxe
|
|
tftp -v 127.0.0.1 -c get testpxe /tmp/testpxe && echoAndLog "TFTP service is OK." || errorAndLog "TFTP service is down."
|
|
rm -f $TFTPCFGDIR/testpxe /tmp/testpxe
|
|
} |