Merge branch 'log-to-syslog'
commit
55e1be600c
|
@ -3,3 +3,4 @@
|
|||
.idea
|
||||
__pycache__/
|
||||
installer/post-update
|
||||
*.swp
|
||||
|
|
|
@ -16,9 +16,6 @@ TIME=$SECONDS
|
|||
BASEDIR=/opt/opengnsys
|
||||
PATH=$PATH:$BASEDIR/bin
|
||||
REPONAME=ogAdmRepo
|
||||
REPOLOG=$BASEDIR/log/$REPONAME.log
|
||||
MCASTLOGBASE=$BASEDIR/log/mcastlog
|
||||
MCASTLOG=$MCASTLOGBASE/ogAdmRepoMcast.`date +%Y%m%d-%H%M%S`
|
||||
REPODIR="$BASEDIR/images/"
|
||||
|
||||
# Para las sincronizadas
|
||||
|
@ -31,12 +28,8 @@ KERNEL=$(file -bkr /opt/opengnsys/tftpboot/ogclient/ogvmlinuz |awk '/Linux/ {for
|
|||
|
||||
# Añade registro de incidencias.
|
||||
function echolog () {
|
||||
if [ "$1" == "-o" ]; then
|
||||
shift
|
||||
date +"%Y%m%d-%H%M%S $*"|tee -a $REPOLOG
|
||||
else
|
||||
date +"%Y%m%d-%H%M%S $*" >> $REPOLOG
|
||||
fi
|
||||
logger --tag $0 --priority local0.info "$*"
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
function mountImage () {
|
||||
|
@ -60,8 +53,6 @@ function mountImage () {
|
|||
return $RETVAL
|
||||
}
|
||||
|
||||
mkdir -p $MCASTLOGBASE
|
||||
|
||||
|
||||
PARM1=$(echo $PARM | cut -f1 -d" ")
|
||||
PARM2=$(echo $PARM | cut -f2 -d" ")
|
||||
|
@ -79,7 +70,7 @@ case "$PARM1" in
|
|||
FILE="$PARM2"
|
||||
MCASTOPT="$PARM3"
|
||||
echolog "Ejecutar $(which sendFileMcast) $FILE $MCASTOPT"
|
||||
sendFileMcast $FILE $MCASTOPT &>> $MCASTLOG
|
||||
sendFileMcast $FILE $MCASTOPT |logger --tag $0 --priority local0.info
|
||||
case $? in
|
||||
1) echolog "Parametros insuficientes"
|
||||
exit 1 ;;
|
||||
|
@ -140,16 +131,16 @@ case "$PARM1" in
|
|||
if [ $IMGSIZE -lt $SIZEREQUIRED ];then
|
||||
echolog "Redimensionamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
|
||||
echolog "truncate --size=\">$SIZEREQUIRED\"k $IMGFILE"
|
||||
truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 > $REPOLOG
|
||||
truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 |logger --tag $0 --priority local0.info
|
||||
# FS de la imagen segun el contenido del archivo .img
|
||||
if file "$IMGFILE" |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then
|
||||
losetup $LOOPDEVICE "$IMGFILE"
|
||||
echolog "resize2fs -f $LOOPDEVICE"
|
||||
resize2fs -f $LOOPDEVICE &> $REPOLOG
|
||||
resize2fs -f $LOOPDEVICE |logger --tag $0 --priority local0.info
|
||||
else
|
||||
mount -o compress=lzo "$IMGFILE" "$DIRMOUNT"
|
||||
echolog "btrfs filesystem resize max $DIRMOUNT"
|
||||
btrfs filesystem resize max "$DIRMOUNT" 2>&1 > $REPOLOG
|
||||
btrfs filesystem resize max "$DIRMOUNT" 2>&1 |logger --tag $0 --priority local0.info
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -159,7 +150,7 @@ case "$PARM1" in
|
|||
echolog "Creamos la imagen $IMGFILE al tamaño necesario: $SIZEREQUIRED"
|
||||
touch "$IMGFILE"
|
||||
echolog "truncate --size=\">$SIZEREQUIRED\"k $IMGFILE"
|
||||
truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 > $REPOLOG
|
||||
truncate --size=">$SIZEREQUIRED"k $IMGFILE 2>&1 |logger --tag $0 --priority local0.info
|
||||
#Formateamos imagen
|
||||
echo losetup $LOOPDEVICE "$IMGFILE"
|
||||
losetup $LOOPDEVICE "$IMGFILE"
|
||||
|
@ -175,7 +166,7 @@ case "$PARM1" in
|
|||
mountImage "$IMGFILE" "$DIRMOUNT"
|
||||
if [ $? -ne 0 ]; then
|
||||
rmdir "$DIRMOUNT"
|
||||
echolog -o "Error al crear/redimensionar la imagen"
|
||||
echolog "Error al crear/redimensionar la imagen"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -268,7 +259,7 @@ case "$PARM1" in
|
|||
|
||||
# Redimensiono sistema de ficheros
|
||||
echolog "resize2fs -fpM $LOOPDEVICE "
|
||||
resize2fs -fpM $LOOPDEVICE # 2>&1 > $REPOLOG
|
||||
resize2fs -fpM $LOOPDEVICE # 2>&1 |logger --tag $0 --priority local0.info
|
||||
mountImage "$IMGFILE" "$DIRMOUNT"
|
||||
# Calculamos el tamaño final del archivo
|
||||
INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
|
||||
|
|
|
@ -13,7 +13,8 @@ SERVERLOG=$BASEDIR/log/$SERVERNAME.log
|
|||
|
||||
# Añade registro de incidencias.
|
||||
function echolog () {
|
||||
date +"%Y%m%d-%H%M%S $*" >> $SERVERLOG
|
||||
logger --tag $0 --priority local0.info "$*"
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -47,8 +47,12 @@ if which curl &>/dev/null; then
|
|||
elif which wget &>/dev/null; then
|
||||
DOWNLOAD="wget -q -O -"
|
||||
fi
|
||||
BRANCH="opengnsys-#{OGVERSION}"
|
||||
$DOWNLOAD "https://raw.githubusercontent.com/opengnsys/OpenGnsys/$BRANCH/installer/opengnsys_installer.sh" | bash || exit $?
|
||||
if [[ -f /install-from-repo/installer/opengnsys_installer.sh ]]; then
|
||||
/install-from-repo/installer/opengnsys_installer.sh || exit $?
|
||||
else
|
||||
BRANCH="opengnsys-#{OGVERSION}"
|
||||
$DOWNLOAD "https://raw.githubusercontent.com/opengnsys/OpenGnsys/$BRANCH/installer/opengnsys_installer.sh" | bash || exit $?
|
||||
fi
|
||||
mv /opt/opengnsys/log/bash.log /opt/opengnsys/log/opengnsys_installer.log
|
||||
echo y | /opt/opengnsys/bin/setserveraddr $(ip -o link show | tail -1 | cut -d: -f2)
|
||||
# Insert DHCP data.
|
||||
|
@ -134,6 +138,9 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|||
og.vm.network "private_network", mac: "#{MACPREFIX}10".tr(":",""), ip: "#{SERVERIP}", virtualbox__intnet: true
|
||||
# Comment out to disable synced folder.
|
||||
#og.vm.synced_folder ".", "/vagrant", disabled: true
|
||||
if (ENV['INSTALL_FROM_REPO'])
|
||||
og.vm.synced_folder ENV['INSTALL_FROM_REPO'], "/install-from-repo"
|
||||
end
|
||||
# Launch provisioning script.
|
||||
og.vm.provision "shell", inline: OGSERVERSCRIPT
|
||||
end
|
||||
|
|
|
@ -96,6 +96,7 @@ EOT
|
|||
fi
|
||||
else
|
||||
# Create new JSON file.
|
||||
echolog "creating new infofile '$INFOFILE'"
|
||||
if [ -z "$OUNAME" ]; then
|
||||
cat << EOT | jq . > $INFOFILE
|
||||
{"directory":"$IMAGESDIR","images":[${IMAGENAME:+$JSON}],"ous":[]}
|
||||
|
@ -191,7 +192,7 @@ function checkremoved() {
|
|||
[ -e "$INFOFILE" ] || addToJson
|
||||
which sponge &>/dev/null || raiseError notfound "Need to install \"moreutils\"."
|
||||
|
||||
checkfiles
|
||||
checkdirs
|
||||
checkremoved
|
||||
echolog "calling checkfiles()"; checkfiles
|
||||
echolog "calling checkdirs()"; checkdirs
|
||||
echolog "calling checkremoved()"; checkremoved
|
||||
|
||||
|
|
|
@ -14,12 +14,12 @@
|
|||
#*/ ##
|
||||
BASEDIR=/opt/opengnsys
|
||||
REPODIR="$BASEDIR/images"
|
||||
REPOLOG=$BASEDIR/log/ogAdmRepo.log
|
||||
# Cargamos los mensajes en el idioma del sistema.
|
||||
# Comprobamos que el fichero de idioma existe. Si no "es_ES" por defecto.
|
||||
ls $BASEDIR/client/etc/lang.$LANG.conf &>/dev/null
|
||||
[ $? -eq 0 ] || LANG="es_ES"
|
||||
source $BASEDIR/client/etc/lang.$LANG.conf
|
||||
source $BASEDIR/lib/ogfunctions.sh
|
||||
|
||||
PROG="$(basename $0)"
|
||||
# Si se solicita, mostrar ayuda.
|
||||
|
@ -58,8 +58,8 @@ touch $IMGFILE.lock
|
|||
SIZEREQUIRED=$3
|
||||
[ $SIZEREQUIRED -lt 300000 ] && SIZEREQUIRED=300000
|
||||
|
||||
echo CREATE_IMAGE "$1" $IMGEXT $SIZEREQUIRED
|
||||
echolog "CREATE_IMAGE \"$1\" $IMGEXT $SIZEREQUIRED"
|
||||
echo -ne CREATE_IMAGE "$1" $IMGEXT $SIZEREQUIRED| /opt/opengnsys/sbin/ogAdmRepoAux || exit $?
|
||||
echo "Los resultado se registran en $REPOLOG. "
|
||||
echolog "Los resultado se registran en syslogd o journal. "
|
||||
|
||||
rm $IMGFILE.lock
|
||||
|
|
|
@ -27,6 +27,8 @@ IMGEXT="img"
|
|||
BAKEXT="ant"
|
||||
DIFFEXT="diff"
|
||||
|
||||
source $OPENGNSYS/lib/ogfunctions.sh
|
||||
|
||||
# Si se solicita, mostrar ayuda.
|
||||
if [ "$*" == "help" ]; then
|
||||
cat << EOT
|
||||
|
@ -59,7 +61,7 @@ for IMG in "$OGIMG/$1.$IMGEXT" "$OGIMG/$1.$IMGEXT.$DIFFEXT" "$OGIMG/$1"; do
|
|||
# Borro la imagen si existe
|
||||
if [ -r $IMG ] ; then
|
||||
IMGPATH=$IMG
|
||||
echo "Borrando imagen $IMGPATH"
|
||||
echolog "Borrando imagen $IMGPATH"
|
||||
rm -fr $IMGPATH{,.sum,.full.sum,.torrent}
|
||||
break
|
||||
fi
|
||||
|
@ -70,7 +72,7 @@ done
|
|||
[ "_${IMGPATH}_" == "__" ] && IMGPATH=$OLDPATH
|
||||
# Recuperar copia de seguridad de la imagen.
|
||||
if [ -n "$RECOVERBACKUP" ]; then
|
||||
[ -e $IMGPATH.$BAKEXT ] && echo "Recuperando copia $IMGPATH.$BAKEXT"
|
||||
[ -e $IMGPATH.$BAKEXT ] && echolog "Recuperando copia $IMGPATH.$BAKEXT"
|
||||
mv -f $IMGPATH.$BAKEXT $IMGPATH && \
|
||||
(mv -f $IMGPATH.sum.$BAKEXT $IMGPATH.sum 2>/dev/null
|
||||
mv -f $IMGPATH.full.sum.$BAKEXT $IMGPATH.full.sum 2>/dev/null
|
||||
|
@ -79,6 +81,6 @@ fi
|
|||
|
||||
# Borrar copia de seguridad de la imagen.
|
||||
if [ -n "$DELETEBACKUP" ]; then
|
||||
[ -e $IMGPATH.$BAKEXT ] && echo "Eliminando copia $IMGPATH.$BAKEXT"
|
||||
[ -e $IMGPATH.$BAKEXT ] && echolog "Eliminando copia $IMGPATH.$BAKEXT"
|
||||
rm -f $IMGPATH.$BAKEXT && rm -f $IMGPATH.{sum,full.sum,torrent}.$BAKEXT
|
||||
fi
|
||||
|
|
|
@ -13,13 +13,14 @@ OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
|
|||
PATH=$PATH:$OPENGNSYS/bin
|
||||
OGIMG="$OPENGNSYS/images"
|
||||
REPOCFG="$OPENGNSYS/etc/ogAdmRepo.cfg"
|
||||
LOGFILE="$OPENGNSYS/log/$PROG.log"
|
||||
|
||||
source $OPENGNSYS/lib/ogfunctions.sh
|
||||
|
||||
# Error si no está bien configurado el repositorio de imágenes.
|
||||
[ -d $OGIMG -a -f $REPOCFG ] || exit 1
|
||||
|
||||
# Procesar ficheros de imágenes.
|
||||
trap 'echo "`date` : Proceso interrumpido" >> $LOGFILE; exit ' 1 2 3 6 9 15
|
||||
trap "echolog Proceso interrumpido; exit" 1 2 3 6 9 15
|
||||
|
||||
shopt -s nullglob
|
||||
TODELETE=( $OPENGNSYS/www/tmp/*.delete )
|
||||
|
|
|
@ -45,7 +45,7 @@ case $# in
|
|||
esac
|
||||
[ "${REPO,,}" == "${HOSTNAME,,}" ] || [ "${REPO,,}" == "localhost" ] || [[ ${REPO} =~ ^127\. ]] || [ "${REPO,,}" == "${IPlocal,,}" ] && raiseError access "Cannot import from local repository."
|
||||
|
||||
# Fetching image info from the repository.
|
||||
echolog 'Fetching image info from the repository.'
|
||||
read -rp "Enter repository API token: " APITOKEN
|
||||
IMAGEINFO="$(curl -k -H "Authorization: $APITOKEN" "https://$REPO/opengnsys/rest/repository/image/$IMAGE" 2> /dev/null | jq -r .)"
|
||||
IMAGENAME="$(jq -r '.name' <<< "$IMAGEINFO" 2>/dev/null)"
|
||||
|
@ -63,7 +63,8 @@ IMAGELOCKED="$(jq -r '.locked' <<< "$IMAGEINFO" 2>/dev/null)"
|
|||
[ "$IMAGELOCKED" == "true" ] && raiseError access "Image locked by remote repository."
|
||||
IMAGESIZE="$(jq -r '.size' <<< "$IMAGEINFO" 2>/dev/null)"
|
||||
[ -z "$IMAGESIZE" ] && raiseError access "Cannot retrieve image size"
|
||||
# Checking if local image exists.
|
||||
|
||||
echolog 'Checking if local image exists.'
|
||||
IMAGEPATH="$REPODIR/$IMAGENAME.$IMAGETYPE"
|
||||
LOCKFILE="$IMAGEPATH.lock"
|
||||
if [ -e "$IMAGEPATH" ]; then
|
||||
|
@ -85,19 +86,22 @@ fi
|
|||
trap "rm -f $LOCKFILE" 1 2 3 6 9 15
|
||||
# Creating lock file.
|
||||
touch $LOCKFILE
|
||||
# Backing up local image.
|
||||
|
||||
echolog 'Backing up local image.'
|
||||
if [ $BACKUP -eq 1 ]; then
|
||||
mv -vf "$IMAGEPATH" "$IMAGEPATH.ant" 2>/dev/null
|
||||
mv -vf "$IMAGEPATH.torrent" "$IMAGEPATH.torrent.ant" 2>/dev/null
|
||||
mv -vf "$IMAGEPATH.sum" "$IMAGEPATH.sum.ant" 2>/dev/null
|
||||
mv -vf "$IMAGEPATH.full.sum" "$IMAGEPATH.full.sum.ant" 2>/dev/null
|
||||
fi
|
||||
# Downloading image file.
|
||||
|
||||
echolog 'Downloading image file.'
|
||||
[[ $IMAGEPATH =~ / ]] && mkdir -p "$(dirname "$IMAGEPATH")"
|
||||
if scp "$USERNAME@$REPO:$IMAGEPATH" $REPODIR; then
|
||||
echolog 'Download successful.'
|
||||
# Cheking image size.
|
||||
DOWNLOADSIZE=$(stat -c "%s" "$IMAGEPATH")
|
||||
[ $IMAGESIZE -ne $DOWNLOADSIZE ] && echo "Warning: image sizes differ: source=$IMAGESIZE, target=$DOWNLOADSIZE."
|
||||
[ $IMAGESIZE -ne $DOWNLOADSIZE ] && echolog "Warning: image sizes differ: source=$IMAGESIZE, target=$DOWNLOADSIZE."
|
||||
# Storing creation info.
|
||||
jq -r '.clonator+":"+.compressor+":"+.filesystem+":"+(.datasize|tostring)+":"' <<<"$IMAGEINFO" > "$IMAGEPATH.info"
|
||||
# Updating the database when the repo is also configured as Administration Server.
|
||||
|
@ -143,7 +147,7 @@ INSERT INTO imagenes
|
|||
fi
|
||||
fi
|
||||
else
|
||||
# On download error, trying to recover backup.
|
||||
echolog 'Download error, trying to recover backup.'
|
||||
raiseError download "$USERNAME@$REPO:$IMAGEPATH"
|
||||
if [ $BACKUP -eq 1 ]; then
|
||||
mv -vf "$IMAGEPATH.ant" "$IMAGEPATH" 2>/dev/null
|
||||
|
|
|
@ -20,6 +20,7 @@ REPODIR="$BASEDIR/images"
|
|||
ls $BASEDIR/client/etc/lang.$LANG.conf &>/dev/null
|
||||
[ $? -eq 0 ] || LANG="es_ES"
|
||||
source $BASEDIR/client/etc/lang.$LANG.conf
|
||||
source $BASEDIR/lib/ogfunctions.sh
|
||||
|
||||
|
||||
PROG="$(basename $0)"
|
||||
|
@ -61,6 +62,7 @@ mkdir -p "$MOUNTDIR"
|
|||
# Comprobamos si la imagen esta montada y si es así nos salimos.
|
||||
df |grep "$MOUNTDIR$" 2>&1 >/dev/null && echo "$MOUNTDIR" && exit 0
|
||||
|
||||
echolog "Mounting image '$IMGFILE' on '$MOUNTDIR'."
|
||||
if [ "$IMGFS" == "EXT4" ] ; then
|
||||
mount -t ext4 "$IMGFILE" "$MOUNTDIR"
|
||||
else
|
||||
|
|
|
@ -47,6 +47,7 @@ ls $BASEDIR/client/etc/lang.$LANG.conf &>/dev/null
|
|||
[ $? -eq 0 ] || LANG="es_ES"
|
||||
|
||||
source $BASEDIR/client/etc/lang.$LANG.conf
|
||||
source $BASEDIR/lib/ogfunctions.sh
|
||||
|
||||
# Sistema de fichero de la imagen según kernel, menor que 3.7 EXT4. comparamos revision
|
||||
[ $(uname -r|cut -d. -f2) -lt 7 ] && IMGFS="EXT4" || IMGFS="BTRFS"
|
||||
|
@ -89,7 +90,7 @@ touch $PARTCLONEIMG.lock $AUXIMG.lock
|
|||
|
||||
|
||||
# Datos imagen.
|
||||
echo [10] Obtenemos datos del partclone.
|
||||
echolog "[10] Obtenemos datos del partclone."
|
||||
FILEHEAD=/tmp/$(basename $PARTCLONEIMG).infohead
|
||||
COMPRESSOR=`file $PARTCLONEIMG | awk '{print $2}'`
|
||||
$COMPRESSOR -dc $PARTCLONEIMG 2>/dev/null | head > $FILEHEAD
|
||||
|
@ -100,13 +101,13 @@ then
|
|||
echo $PARTCLONEINFO | grep GB > /dev/null && SIZEFACTOR=1000000 || SIZEFACTOR=1024
|
||||
IMGSIZE=$(echo $PARTCLONEINFO | awk -v FACTOR=$SIZEFACTOR '{gsub(/\: /,"\n"); printf "%d\n", $11*FACTOR;}')
|
||||
else
|
||||
echo "Error: partclone.info no detecta la imagen"
|
||||
echolog "Error: partclone.info no detecta la imagen"
|
||||
exit 5
|
||||
fi
|
||||
[ "$FS" == "NTFS" ] && echo "Error: Todavia no podemos convertir imagenes de Windows" && exit 6
|
||||
|
||||
# Calculamos el espacio disponible en la particion de opengnsys.
|
||||
echo -n "[20]$MSG_SCRIPTS_CREATE_SIZE "
|
||||
echolog "[20]$MSG_SCRIPTS_CREATE_SIZE "
|
||||
for DIR in "/" "/opt" "/opt/opengnsys" "/opt/opengnsys/images"
|
||||
do
|
||||
AUXSIZE=$(df|grep $DIR$|awk '{print $3}')
|
||||
|
@ -114,31 +115,31 @@ do
|
|||
done
|
||||
let REQUIRESIZE=2*$IMGSIZE
|
||||
if [ $PARTSIZE -lt $REQUIRESIZE ]; then
|
||||
echo "No hay espacio suficiente para descomprimir y crear la imagen: $REQUIRESIZE."
|
||||
echolog "No hay espacio suficiente para descomprimir y crear la imagen: $REQUIRESIZE."
|
||||
exit 16
|
||||
fi
|
||||
echo "$REQUIRESIZE $PARTSIZE"
|
||||
echolog "$REQUIRESIZE $PARTSIZE"
|
||||
|
||||
# Descomprimimos la imagen de partclone.
|
||||
echo [30] Descomprimimos la imagen de partclone.
|
||||
echolog "[30] Descomprimimos la imagen de partclone."
|
||||
$COMPRESSOR -dc $PARTCLONEIMG | $PATHPARTCLONE/partclone.restore -C -s - -O $AUXIMG
|
||||
|
||||
TIME2=$[SECONDS-TIME1]
|
||||
echo " $MSG_SCRIPTS_TASK_END: $MSG_SCRIPTS_TIME_PARTIAL: $[TIME2/60]m $[TIME2%60]s"
|
||||
echolog " $MSG_SCRIPTS_TASK_END: $MSG_SCRIPTS_TIME_PARTIAL: $[TIME2/60]m $[TIME2%60]s"
|
||||
|
||||
# Montamos la imagen:
|
||||
mkdir -p $AUXDIR
|
||||
mount $AUXIMG $AUXDIR
|
||||
|
||||
# Sincronizamos de la imagen del partclone a la del rsync.
|
||||
echo "[60] Sincronizamos desde la imagen de partclone a la de rsync."
|
||||
echolog "[60] Sincronizamos desde la imagen de partclone a la de rsync."
|
||||
if [ "$TYPE" == "SYNC1" ]; then
|
||||
mkdir -p $RSYNCIMG
|
||||
echo " * Log temporal en: $TMPLOG"
|
||||
echo rsync -aHAX $AUXDIR/ $RSYNCIMG --- log: $TMPLOG
|
||||
echolog " * Log temporal en: $TMPLOG"
|
||||
echolog "rsync -aHAX $AUXDIR/ $RSYNCIMG --- log: $TMPLOG"
|
||||
rsync -aHAXv $AUXDIR/ $RSYNCIMG >> $TMPLOG
|
||||
TIME3=$[SECONDS-TIME2]
|
||||
echo " $MSG_SCRIPTS_TASK_END: $MSG_SCRIPTS_TIME_PARTIAL: $[TIME3/60]m $[TIME3%60]s"
|
||||
echolog " $MSG_SCRIPTS_TASK_END: $MSG_SCRIPTS_TIME_PARTIAL: $[TIME3/60]m $[TIME3%60]s"
|
||||
else
|
||||
IMGINFO="/tmp/ogimg.info$$"
|
||||
IMGDIR="$REPODIR/mount/$(basename $RSYNCIMG)"
|
||||
|
@ -152,27 +153,27 @@ else
|
|||
let SIZE=$SIZE*$ZFACTOR/100
|
||||
|
||||
# Creamos el fichero de la imagen vacio (queda montado)
|
||||
echo " * $MSG_HELP_ogCreateFileImage"
|
||||
echolog " * $MSG_HELP_ogCreateFileImage"
|
||||
$BINDIR/createfileimage $(basename $RSYNCIMG) img $SIZE || exit 5
|
||||
touch $RSYNCIMG.img.lock
|
||||
TIME3=$[SECONDS-TIME2]
|
||||
echo " $MSG_SCRIPTS_TASK_END: $MSG_SCRIPTS_TIME_PARTIAL: $[TIME3/60]m $[TIME3%60]s"
|
||||
echolog " $MSG_SCRIPTS_TASK_END: $MSG_SCRIPTS_TIME_PARTIAL: $[TIME3/60]m $[TIME3%60]s"
|
||||
|
||||
# Sincronizo las imagenes antigua y nueva.
|
||||
echo " * Sincroniza las imagenes antigua y nueva. log temporal en: $TMPLOG"
|
||||
echo rsync -aHAX $AUXDIR/ $IMGDIR
|
||||
echolog " * Sincroniza las imagenes antigua y nueva. log temporal en: $TMPLOG"
|
||||
echolog "rsync -aHAX $AUXDIR/ $IMGDIR"
|
||||
rsync -aHAXv $AUXDIR/ $IMGDIR >> $TMPLOG
|
||||
TIME4=$[SECONDS-TIME3]
|
||||
echo " $MSG_SCRIPTS_TASK_END: $MSG_SCRIPTS_TIME_PARTIAL: $[TIME4/60]m $[TIME4%60]s"
|
||||
echolog " $MSG_SCRIPTS_TASK_END: $MSG_SCRIPTS_TIME_PARTIAL: $[TIME4/60]m $[TIME4%60]s"
|
||||
# copiamos el fichero de informacion dentro de la imagen.
|
||||
mv $IMGINFO $IMGDIR/ogimg.info
|
||||
# Desmontamos la imagen y la reducimos al minimo.
|
||||
$BINDIR/unmountimage $(basename $RSYNCIMG) img
|
||||
echo " * $MSG_HELP_ogReduceImage."
|
||||
echolog " * $MSG_HELP_ogReduceImage."
|
||||
rm $RSYNCIMG.img.lock
|
||||
$BINDIR/reduceimage $(basename $RSYNCIMG) img
|
||||
|
||||
fi
|
||||
|
||||
TIME=$[SECONDS-TIME1]
|
||||
echo " $MSG_SCRIPTS_END: $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s"
|
||||
echolog " $MSG_SCRIPTS_END: $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s"
|
||||
|
|
|
@ -15,12 +15,12 @@
|
|||
#*/ ##
|
||||
BASEDIR=/opt/opengnsys
|
||||
REPODIR="$BASEDIR/images"
|
||||
REPOLOG=$BASEDIR/log/ogAdmRepo.log
|
||||
# Cargamos los mensajes en el idioma del sistema.
|
||||
# Comprobamos que el fichero de idioma existe. Si no "es_ES" por defecto.
|
||||
ls $BASEDIR/client/etc/lang.$LANG.conf &>/dev/null
|
||||
[ $? -eq 0 ] || LANG="es_ES"
|
||||
source $BASEDIR/client/etc/lang.$LANG.conf
|
||||
source $BASEDIR/lib/ogfunctions.sh
|
||||
|
||||
PROG="$(basename $0)"
|
||||
# Si se solicita, mostrar ayuda.
|
||||
|
@ -53,6 +53,6 @@ fi
|
|||
|
||||
touch $IMGFILE.lock
|
||||
echo -ne REDUCE_IMAGE "$1" ${IMGEXT#*\.} | /opt/opengnsys/sbin/ogAdmRepoAux
|
||||
echo "Los resultado se registran en $REPOLOG. "
|
||||
echolog "Los resultado se registran en syslogd o journal. "
|
||||
|
||||
rm $IMGFILE.lock
|
||||
|
|
|
@ -11,6 +11,8 @@ OGBIN=$OPENGNSYS/bin
|
|||
PATH=$PATH:$OGBIN
|
||||
REPO_IFACE="$(/opt/opengnsys/bin/getRepoIface)"
|
||||
|
||||
source $OPENGNSYS/lib/ogfunctions.sh
|
||||
|
||||
# Si se solicita, mostrar ayuda.
|
||||
if [ "$*" == "help" ]; then
|
||||
echo "Formato: $PROG fichero|nombreImagen datosMulticast"
|
||||
|
@ -48,8 +50,9 @@ PARAMS=$(echo "$2" | \
|
|||
END {print v1,v2,v3,v4,v5,v6}
|
||||
')
|
||||
read -re PORTBASE METHOD ADDRESS BITRATE NCLIENTS MAXTIME <<< "$PARAMS"
|
||||
echolog "$PROG called with parameters PORTBASE ($PORTBASE) METHOD ($METHOD) ADDRESS ($ADDRESS) BITRATE ($BITRATE) NCLIENTS ($NCLIENTS) MAXTIME ($MAXTIME)"
|
||||
if [ -z "$MAXTIME" ]; then
|
||||
echo "$PROG Error: Datos de sesión incorrectos: \"$2\""
|
||||
echolog "$PROG Error: Datos de sesión incorrectos: \"$2\""
|
||||
exit 3
|
||||
fi
|
||||
|
||||
|
@ -59,5 +62,7 @@ CERROR="8x8/128"
|
|||
# Envío de fichero por Multicast.
|
||||
# Se desabilita el uso de mbuffer: esta versión del upd-sender no la admite.
|
||||
#which mbuffer &> /dev/null && MBUFFER="--pipe 'mbuffer -m 20M'"
|
||||
|
||||
echolog "Invoking $OGBIN/udp-sender \"$MBUFFER\" --nokbd --retries-until-drop 65 --portbase \"$PORTBASE\" \"$METHOD\" --interface \"$REPO_IFACE\" --mcast-data-address \"$ADDRESS\" --fec \"$CERROR\" --max-bitrate \"$BITRATE\" --ttl 16 --min-clients \"$NCLIENTS\" --max-wait \"$MAXTIME\" --file \"$FICHIMG\""
|
||||
$OGBIN/udp-sender "$MBUFFER" --nokbd --retries-until-drop 65 --portbase "$PORTBASE" "$METHOD" --interface "$REPO_IFACE" --mcast-data-address "$ADDRESS" --fec "$CERROR" --max-bitrate "$BITRATE" --ttl 16 --min-clients "$NCLIENTS" --max-wait "$MAXTIME" --file "$FICHIMG"
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@ OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
|
|||
PATH=$PATH:$OPENGNSYS/bin
|
||||
OGIMG="$OPENGNSYS/images"
|
||||
REPOCFG="$OPENGNSYS/etc/ogAdmRepo.cfg"
|
||||
LOGFILE="$OPENGNSYS/log/$PROG.log"
|
||||
DEFAULTFILE=/etc/default/opengnsys
|
||||
source $DEFAULTFILE
|
||||
source $OPENGNSYS/lib/ogfunctions.sh
|
||||
# No hacer nada si no está definido como repositorio.
|
||||
[ "$RUN_OGADMREPO" == "yes" ] || exit 0
|
||||
# Error si no está bien configurado el repositorio de imágenes.
|
||||
|
@ -28,7 +28,7 @@ TRACKERURL="http://$IPlocal:6969/announce"
|
|||
pushd $OGIMG >/dev/null
|
||||
|
||||
# Procesar ficheros de imágenes.
|
||||
trap 'echo "`date` : Proceso interrumpido" >> $LOGFILE; exit ' 1 2 3 6 9 15
|
||||
trap 'echolog Proceso interrumpido; exit' 1 2 3 6 9 15
|
||||
for IMG in *.{img,pgz,diff,dsk} */*.{img,pgz,diff,dsk} ; do
|
||||
# Saltar al siguiente si la imagen está bloqueada o si no existe el fichero.
|
||||
LOCKFILE="$IMG.lock"
|
||||
|
@ -46,7 +46,7 @@ for IMG in *.{img,pgz,diff,dsk} */*.{img,pgz,diff,dsk} ; do
|
|||
[ "$(basename $IMG)" = "$TORRFILE" -a "[$FILESIZE]" = "$TORRSIZE" ] && continue
|
||||
fi
|
||||
# Bloquear imagen, crear ficheros Torrent y Checksum y desbloquear imagen.
|
||||
echo "`date` : Inicio creación de fichero $TORRENT" >> $LOGFILE
|
||||
echolog "Inicio creación de fichero $TORRENT"
|
||||
touch "$LOCKFILE"
|
||||
trap "rm -f $LOCKFILE" 1 2 3 6 9
|
||||
rm -f "$TORRENT" "$SUMFILE"
|
||||
|
@ -56,12 +56,13 @@ for IMG in *.{img,pgz,diff,dsk} */*.{img,pgz,diff,dsk} ; do
|
|||
# Datasum completo para transferencias torrent
|
||||
DATAFULLSUM=$(md5sum -b "$IMG"| cut -f1 -d" ")
|
||||
echo $DATAFULLSUM > "$SUMFULLFILE"
|
||||
echolog "Running ctorrent -t \"$IMG\" -u $TRACKERURL -s \"$TORRENT\" -c $DATAFULLSUM -l 4194304"
|
||||
nice -n ${BTSEEDER_PRIORITY:-0} ctorrent -t "$IMG" -u $TRACKERURL -s "$TORRENT" -c $DATAFULLSUM -l 4194304 2>/dev/null
|
||||
rm -f "$LOCKFILE"
|
||||
if [ -f "$TORRENT" ]; then
|
||||
echo "`date` : Fin creación de fichero $TORRENT" >> $LOGFILE
|
||||
echolog "Fin creación de fichero $TORRENT"
|
||||
else
|
||||
echo "`date` : ERROR en creación de fichero $TORRENT" >> $LOGFILE
|
||||
echolog "ERROR en creación de fichero $TORRENT"
|
||||
fi
|
||||
# Modificación realizada en la corrección temporal de la incidencia #535
|
||||
break
|
||||
|
|
|
@ -3,19 +3,18 @@ BTTRACK=/usr/bin/bttrack.bittorrent
|
|||
BTSEEDER=/usr/bin/btlaunchmany.bittornado
|
||||
BTTRACKPORT=6969
|
||||
BTTRACKDFILE=/tmp/dstate
|
||||
BTTRACKLOG=/opt/opengnsys/log/bttrack.log
|
||||
BTINTERVAL=10
|
||||
BTTORRENTSDIR=/opt/opengnsys/images
|
||||
# Desactivar descarga de torrents desde clientes no autorizados.
|
||||
BTALLOW_GET=0
|
||||
# parametros basados en EAC 05-04-2009 antonio doblas viso.
|
||||
BTTRACK_OPTIONS=" --save_dfile_interval $BTINTERVAL --timeout_downloaders_interval $BTINTERVAL --port $BTTRACKPORT --dfile $BTTRACKDFILE --reannounce_interval $BTINTERVAL --logfile $BTTRACKLOG --allowed_dir $BTTORRENTSDIR --allow_get $BTALLOW_GET "
|
||||
BTTRACK_OPTIONS=" --save_dfile_interval $BTINTERVAL --timeout_downloaders_interval $BTINTERVAL --port $BTTRACKPORT --dfile $BTTRACKDFILE --reannounce_interval $BTINTERVAL --allowed_dir $BTTORRENTSDIR --allow_get $BTALLOW_GET "
|
||||
BTTRACKPID="/var/run/bttrack.pid"
|
||||
BTSEEDERPID="/var/run/btseeder.pid"
|
||||
|
||||
################### #######################################
|
||||
|
||||
pkill bttrack
|
||||
systemctl --user stop bttrack.service
|
||||
rm -f $BTTRACKDFILE
|
||||
sleep 2
|
||||
bttrack $BTTRACK_OPTIONS &>> $BTTRACKLOG &
|
||||
systemd-run --user --unit bttrack.service --wait bttrack $BTTRACK_OPTIONS
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
#*/ ##
|
||||
BASEDIR=/opt/opengnsys
|
||||
REPODIR="$BASEDIR/images"
|
||||
REPOLOG=$BASEDIR/log/ogAdmRepo.log
|
||||
# Cargamos los mensajes en el idioma del sistema.
|
||||
# Comprobamos que el fichero de idioma existe. Si no "es_ES" por defecto.
|
||||
ls $BASEDIR/client/etc/lang.$LANG.conf &>/dev/null
|
||||
[ $? -eq 0 ] || LANG="es_ES"
|
||||
|
||||
source $BASEDIR/client/etc/lang.$LANG.conf
|
||||
source $OPENGNSYS/lib/ogfunctions.sh
|
||||
|
||||
PROG="$(basename $0)"
|
||||
# Si se solicita, mostrar ayuda.
|
||||
|
@ -49,4 +49,4 @@ fi
|
|||
df |grep "$MOUNTDIR$" 2>&1 >/dev/null || exit 0
|
||||
|
||||
echo -ne UMOUNT_IMAGE "$1" $IMGEXT | /opt/opengnsys/sbin/ogAdmRepoAux
|
||||
echo "Los resultado se registran en $REPOLOG. "
|
||||
echolog "Los resultado se registran en syslogd o journal. "
|
||||
|
|
|
@ -57,6 +57,7 @@ WHEREEXPR="${WHEREEXPR% OR}"
|
|||
# Looking for data.
|
||||
SEDEXPR=""
|
||||
while read -pe NAME IP MAC ROUTER LAB; do
|
||||
echolog "Just read these from the database: NAME ($NAME) IP ($IP) MAC ($MAC) ROUTER ($ROUTER) LAB ($LAB)"
|
||||
[ "$LAB" ] || break
|
||||
if [ "$EXAM" ]; then
|
||||
IP="${IP/10.1./192.168.}"
|
||||
|
@ -94,9 +95,10 @@ SELECT nombreordenador, ip,
|
|||
# Edit DHCP configuration file.
|
||||
[ "$SEDEXPR" ] || raiseError notfound "$RESOURCES"
|
||||
cp -a $DHCPCONF $DHCPCONFBCK || raiseError access "Cannot back-up DHCP configuration file"
|
||||
echolog "Sed expression: ($SEDEXPR)"
|
||||
sed -i -re "$SEDEXPR" $DHCPCONF
|
||||
# Delete duplicate empty lines.
|
||||
perl -0777pi -e "s/\n{3,}/\n\n/g" $DHCPCONF
|
||||
# Restart the service, if needed.
|
||||
[ "$RESTART" ] && restart isc-dhcp-server
|
||||
[ "$RESTART" ] && echolog "Restarting DHCP server" && restart isc-dhcp-server
|
||||
|
||||
|
|
|
@ -19,6 +19,8 @@ APACHE_USER=${APACHE_USER:-"www-data"} # Usuario de ejecución de Apache
|
|||
APACHE_GROUP=${APACHE_GROUP:-"www-data"} # Grupo de ejecución de Apache
|
||||
PROG=$(basename "$0")
|
||||
|
||||
source $OPENGNSYS_DIR/lib/ogfunctions.sh
|
||||
|
||||
# Control de errores.
|
||||
if [ "$USER" != "root" ]; then
|
||||
echo "$PROG: Error: solo ejecutable por root" >&2
|
||||
|
@ -37,6 +39,7 @@ if [ -z "$(getent passwd "$APACHE_USER" 2>/dev/null)" -o -z "$(getent group "$AP
|
|||
exit 1
|
||||
fi
|
||||
|
||||
echolog "Fixing filesystem permissions"
|
||||
mkdir -p $OPENGNSYS_DIR/{log/clients,images/groups}
|
||||
chown -R :$OPENGNSYS_USER $OPENGNSYS_DIR/{log/clients,images/groups}
|
||||
find $OPENGNSYS_DIR/log/clients -type f -exec chmod 664 {} \;
|
||||
|
|
|
@ -10,6 +10,10 @@
|
|||
#@date 2014-01-20
|
||||
#*/ ##
|
||||
|
||||
PROG=$(basename $0)
|
||||
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
|
||||
source $OPENGNSYS/lib/ogfunctions.sh
|
||||
|
||||
BASEDIR="/opt/opengnsys/images/mount"
|
||||
DIR=$(ls $BASEDIR)
|
||||
if [ "$USER" != "root" ]; then
|
||||
|
@ -22,15 +26,15 @@ umount /opt/opengnsys/images/mount/* &>/dev/null
|
|||
# Guardamos los directorios que siguen montados.
|
||||
MOUNTEDDIR=$(df |grep /opt/opengnsys/images/mount)
|
||||
# Comprobamos que no esta montado y borramos.
|
||||
echo "Borrando los directorios de montaje de las imagenes:"
|
||||
echolog "Borrando los directorios de montaje de las imagenes:"
|
||||
for IMGDIR in $DIR
|
||||
do
|
||||
echo -n " $IMGDIR:"
|
||||
echolog " $IMGDIR:"
|
||||
if ! echo $MOUNTEDDIR |grep -e "$BASEDIR/$IMGDIR " -e "$BASEDIR/$IMGDIR$" >/dev/null ; then
|
||||
rm -rf $BASEDIR/$IMGDIR
|
||||
echo "directorio borrado."
|
||||
echolog "directorio borrado."
|
||||
else
|
||||
echo "directorio ocupado, no se puede borrar."
|
||||
echolog "directorio ocupado, no se puede borrar."
|
||||
|
||||
fi
|
||||
done
|
||||
|
|
|
@ -15,6 +15,8 @@ TARFILE=$(realpath $1 2>/dev/null)
|
|||
tmpmod=/tmp/module$$
|
||||
tmpinit=/tmp/initrd$$
|
||||
|
||||
source $OPENGNSYS/lib/ogfunctions.sh
|
||||
|
||||
# Comprobar errores.
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "$PROG: Incorrect operand. Format: $PROG moduletarfile" >&2
|
||||
|
@ -52,7 +54,7 @@ fi
|
|||
|
||||
# Comprobar acceso al fichero de módulos.
|
||||
if [ ! -r "$TARFILE" ]; then
|
||||
echo "$PROG: Cannot access module file." >&2
|
||||
echolog "$PROG: Cannot access module file." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -68,7 +70,7 @@ tar xvzf $TARFILE >/dev/null || exit
|
|||
|
||||
# Fichero de configuración.
|
||||
source module.conf || exit
|
||||
[ -z "$module" ] && echo "Module not detected." && exit 1
|
||||
[ -z "$module" ] && echolog "Module not detected." && exit 1
|
||||
|
||||
# Descomprimir Initrd.
|
||||
mkdir -p $tmpinit
|
||||
|
@ -78,12 +80,12 @@ $COMPRESS -dc "$INITRD" | cpio -im 2>/dev/null
|
|||
|
||||
# Versión del Kernel del Initrd.
|
||||
KERNEL=$(ls -d lib/modules/[0-9]* | head -1)
|
||||
[ -z "$KERNEL" ] && echo "Kernel not detected." && exit 1
|
||||
[ -z "$KERNEL" ] && echolog "Kernel not detected." && exit 1
|
||||
# Avisar si el Kernel del módulo es distinto del del Initred.
|
||||
echo "$(basename $KERNEL) $(modinfo -F vermagic $tmpmod/$file | cut -f1 -d' ')" | awk '$1!=$2 {print "WARNING: installing module for Kernel",$1,"on Kernel",$2}'
|
||||
|
||||
# Copiar módulo y reconstruir dependencias.
|
||||
echo "Installing module: $module"
|
||||
echolog "Installing module: $module"
|
||||
cp -a $tmpmod/$file $KERNEL/$path
|
||||
depmod -b . -a $(basename $KERNEL)
|
||||
|
||||
|
|
|
@ -14,13 +14,11 @@
|
|||
PROG=$(basename "$0")
|
||||
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
|
||||
SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
|
||||
LOGFILE=$OPENGNSYS/log/remotepc.log
|
||||
|
||||
source $OPENGNSYS/lib/ogfunctions.sh || exit 1
|
||||
|
||||
# Basic error control
|
||||
source $SERVERCONF 2> /dev/null || raiseError access "Server configuration file"
|
||||
touch "$LOGFILE" 2> /dev/null || raiseError access "Cannot write in the log file"
|
||||
|
||||
# Reading pending operations.
|
||||
dbexec "
|
||||
|
@ -63,12 +61,12 @@ SELECT ogagent_queue.id, ogagent_queue.exectime, ogagent_queue.operation,
|
|||
000) # Client does not respond (may be halted).
|
||||
;;
|
||||
200) # Operation sent.
|
||||
echo "$(date +"%FT%T%z"): $PROG: Operation sent to OGAgent: client=$AGNTIP, oper=$OPER, exectime=\"$DATE $TIME\"" >> $LOGFILE ;;
|
||||
echolog "Operation sent to OGAgent: client=$AGNTIP, oper=$OPER, exectime=\"$DATE $TIME\"" ;;
|
||||
*) # Operation error.
|
||||
echo "$(date +"%FT%T%z"): $PROG: Operation error: client=$AGNTIP, oper=$OPER, code=$CODE" >> $LOGFILE ;;
|
||||
echolog "Operation error: client=$AGNTIP, oper=$OPER, code=$CODE" ;;
|
||||
esac
|
||||
else # Unknown operation.
|
||||
echo "$(date +"%FT%T%z"): $PROG: Unknown operation: client=$AGNTIP, oper=$OPER" >> $LOGFILE
|
||||
echolog "Unknown operation: client=$AGNTIP, oper=$OPER"
|
||||
fi
|
||||
# Deleting operation from the database.
|
||||
SQL="DELETE FROM ogagent_queue WHERE id='$OPERID';"
|
||||
|
|
|
@ -19,7 +19,6 @@ OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
|
|||
PATH=$PATH:$OPENGNSYS/bin
|
||||
SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
|
||||
TFTPDIR=$OPENGNSYS/tftpboot
|
||||
LOGFILE=$OPENGNSYS/log/opengnsys.log
|
||||
|
||||
source $OPENGNSYS/lib/ogfunctions.sh || exit 1
|
||||
|
||||
|
@ -46,7 +45,7 @@ dbexec "UPDATE aulas SET oglivedir='$OGLIVEDIR' WHERE nombreaula='$RESOURCE';"
|
|||
# Actualizar ogLive para todos los clientes y reasignar plantilla PXE.
|
||||
listclientmode "$RESOURCE" | awk -F\" '{print $2,$4}' | \
|
||||
while read -r PC BOOTMODE; do
|
||||
date +"%b %d %T $PROG: Configurando \"$PC\" con cliente \"$OGLIVEDIR\"" | tee -a $LOGFILE
|
||||
echolog "Configurando \"$PC\" con cliente \"$OGLIVEDIR\""
|
||||
dbexec "UPDATE ordenadores SET oglivedir='$OGLIVEDIR' WHERE nombreordenador = '$PC';"
|
||||
setclientmode "$BOOTMODE" "$PC" PERM >/dev/null
|
||||
done
|
||||
|
|
|
@ -33,7 +33,6 @@ OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
|
|||
SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
|
||||
PXEDIR[0]=$OPENGNSYS/tftpboot/menu.lst
|
||||
PXEDIR[1]=$OPENGNSYS/tftpboot/grub
|
||||
LOGFILE=$OPENGNSYS/log/opengnsys.log
|
||||
|
||||
source $OPENGNSYS/lib/ogfunctions.sh || exit 1
|
||||
|
||||
|
@ -70,15 +69,15 @@ ETHERNET=$(dbexec "
|
|||
WHERE aulas.nombreaula ='$RESOURCE'
|
||||
OR nombreordenador = '$RESOURCE';")
|
||||
if [ -z "$ETHERNET" ]; then
|
||||
date +"%b %d %T $PROG: No existe aula o equipo con el nombre \"$2\"" >> $LOGFILE
|
||||
echolog "No existe aula o equipo con el nombre \"$2\""
|
||||
raiseError notfound "Client or lab name \"$2\""
|
||||
fi
|
||||
|
||||
# Copiar fichero de configuración y actualizar base de datos.
|
||||
date +"%b %d %T $PROG: Configurando \"$1\" en \"$2\" en modo \"$MODE\"" | tee -a $LOGFILE
|
||||
echolog "Configurando \"$1\" en \"$2\" en modo \"$MODE\""
|
||||
NPC=0
|
||||
for MAC in $ETHERNET; do
|
||||
date +"%b %d %T $PROG: Detectada ethernet \"$MAC\" en \"$2\"" | tee -a $LOGFILE
|
||||
echolog "Detectada ethernet \"$MAC\" en \"$2\""
|
||||
MACFILE="${MAC^^}"
|
||||
PXEFILE[0]=01-${MACFILE:0:2}-${MACFILE:2:2}-${MACFILE:4:2}-${MACFILE:6:2}-${MACFILE:8:2}-${MACFILE:10:2}
|
||||
MACFILE="${MAC,,}"
|
||||
|
@ -171,5 +170,5 @@ SELECT ' LANG=$LANG',
|
|||
fi
|
||||
let NPC=NPC+1
|
||||
done
|
||||
date +"%b %d %T $PROG: $NPC equipo(s) configurado(s)" | tee -a $LOGFILE
|
||||
echolog "$NPC equipo(s) configurado(s)"
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
|
||||
# Variables.
|
||||
PROG=$(basename $0)
|
||||
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
|
||||
PXEDIRS="$OPENGNSYS/tftpboot/menu.lst $OPENGNSYS/tftpboot/grub"
|
||||
DEFAULTFILE=/etc/default/opengnsys
|
||||
|
@ -80,7 +81,7 @@ if [ -n "$SERVERIP" ]; then
|
|||
restart $s &>/dev/null && break
|
||||
done
|
||||
else
|
||||
echo "DHCP configuration has not changed."
|
||||
echolog "DHCP configuration has not changed."
|
||||
fi
|
||||
|
||||
# Saving old IP address.
|
||||
|
@ -106,7 +107,7 @@ if [ -n "$SERVERIP" ]; then
|
|||
# Processing when something has changed.
|
||||
if [ $CHANGE == 1 ]; then
|
||||
# Restart OpenGnsys services.
|
||||
echo "Restarting services..."
|
||||
echolog "Restarting services..."
|
||||
restart opengnsys >/dev/null
|
||||
source $DEFAULTFILE
|
||||
# If OpenGnsys Server is active, updating the database.
|
||||
|
@ -127,8 +128,8 @@ UPDATE menus
|
|||
fi
|
||||
|
||||
# Showing manual task to do after execution.
|
||||
echolog "Default server interface set to: $SERVERDEV ($SERVERIP)"
|
||||
cat << EOT
|
||||
Default server interface set to: $SERVERDEV ($SERVERIP)
|
||||
|
||||
Manual tasks:
|
||||
- Check DHCP configuration file and restart service, if needed.
|
||||
|
@ -139,7 +140,7 @@ Manual tasks:
|
|||
EOT
|
||||
else
|
||||
# Showing message if nothing changes.
|
||||
echo "Default interface has not changed: $1"
|
||||
echolog "Default interface has not changed: $1"
|
||||
fi
|
||||
else
|
||||
# Error if network interface is not found.
|
||||
|
|
|
@ -37,12 +37,14 @@ source $OPENGNSYS/lib/ogfunctions.sh || exit 1
|
|||
[ "$USER" != "root" ] && raiseError access "Solo ejecutable por root"
|
||||
case $# in
|
||||
0) # Cambios en todos los clientes ogLive instalados.
|
||||
echolog "Cambiando contraseña en todos los clientes ogLive instalados"
|
||||
if which oglivecli &>/dev/null; then
|
||||
LIST=$(oglivecli list | awk '{print $2}')
|
||||
else
|
||||
LIST="ogclient"
|
||||
fi ;;
|
||||
1) # Cambios en único ogLive (AVISO: puede crear inconsistencias con otros ogLive).
|
||||
echolog "Cambiando contraseña en un solo ogLive"
|
||||
LIST="$1" ;;
|
||||
*) # Error de formato.
|
||||
raiseError usage ;;
|
||||
|
@ -76,7 +78,7 @@ for OGLIVE in $LIST; do
|
|||
fi
|
||||
# Editar la parte de acceso del cliente:
|
||||
# descomprimir Initrd, sustituir clave y recomprimir Initrd).
|
||||
echo "Configurando cliente \"$OGLIVE\" ..."
|
||||
echolog "Configurando cliente \"$OGLIVE\" ..."
|
||||
mkdir -p $TMPDIR
|
||||
cd $TMPDIR || ogRaiseError access "Directorio temporal"
|
||||
COMPRESS=$(file -b "$CLIENTINITRD" | awk '{print tolower($1);}')
|
||||
|
@ -93,14 +95,14 @@ for OGLIVE in $LIST; do
|
|||
# Generar Initrd del cliente (siempre comprimido con gzip).
|
||||
find . | cpio -H newc -oa | gzip -9c > "$CLIENTINITRD"
|
||||
else
|
||||
echo "$PROG: Aviso: no se ha modificado la clave del cliente \"$OGLIVE\"."
|
||||
echolog "$PROG: Aviso: no se ha modificado la clave del cliente \"$OGLIVE\"."
|
||||
fi
|
||||
rm -fr $TMPDIR
|
||||
# Calcular suma de comprobación.
|
||||
md5sum "$CLIENTINITRD" | cut -f1 -d" " > "$CLIENTINITRD.sum"
|
||||
let CHANGES++
|
||||
else
|
||||
echo "$PROG: Cliente \"$OGLIVE\" no accesible."
|
||||
echolog "$PROG: Cliente \"$OGLIVE\" no accesible."
|
||||
fi
|
||||
done
|
||||
if [[ $CHANGES != 0 ]]; then
|
||||
|
@ -111,6 +113,6 @@ if [[ $CHANGES != 0 ]]; then
|
|||
# Cambiar clave Samba.
|
||||
echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER
|
||||
else
|
||||
echo "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
|
||||
echolog "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
|
||||
fi
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ INITRD=oginitrd.img
|
|||
TMPDIR=/tmp/oglive$$
|
||||
let CHANGES=0
|
||||
|
||||
source $OPENGNSYS/lib/ogfunctions.sh
|
||||
|
||||
# Control básico de errores.
|
||||
if [ "$USER" != "root" ]; then
|
||||
echo "$PROG: Error: solo ejecutable por root" >&2
|
||||
|
@ -92,7 +94,7 @@ for OGLIVE in $LIST; do
|
|||
if [ -r "$CLIENTINITRD" ]; then
|
||||
# Editar la parte de acceso del cliente:
|
||||
# descomprimir Initrd, sustituir clave y recomprimir Initrd).
|
||||
echo "Configurando cliente \"$OGLIVE\" ..."
|
||||
echolog "Configurando cliente \"$OGLIVE\" ..."
|
||||
mkdir -p $TMPDIR
|
||||
cd $TMPDIR || exit 3
|
||||
COMPRESS=$(file -b "$CLIENTINITRD" | awk '{print tolower($1);}')
|
||||
|
@ -119,11 +121,11 @@ for OGLIVE in $LIST; do
|
|||
md5sum "$CLIENTINITRD" | cut -f1 -d" " > "$CLIENTINITRD.sum"
|
||||
let CHANGES++
|
||||
else
|
||||
echo "$PROG: Cliente \"$OGLIVE\" no accesible."
|
||||
echolog "$PROG: Cliente \"$OGLIVE\" no accesible."
|
||||
fi
|
||||
done
|
||||
if [[ $CHANGES != 0 ]]; then
|
||||
echo "$PROG: Se ha modificado la pareja de claves ssl en $CHANGES clientes."
|
||||
echolog "$PROG: Se ha modificado la pareja de claves ssl en $CHANGES clientes."
|
||||
else
|
||||
echo "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
|
||||
echolog "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
|
||||
fi
|
||||
|
|
|
@ -125,3 +125,8 @@ function _service() {
|
|||
fi
|
||||
}
|
||||
|
||||
function echolog () {
|
||||
[ "$PROG" ] || PROG="$(basename "$0")"
|
||||
logger --tag $PROG --priority local0.info "$*"
|
||||
echo "$*"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue