Merge branch 'log-to-syslog'

pull/10/head
Natalia Serrano 2023-09-29 14:29:33 +02:00
commit 55e1be600c
27 changed files with 136 additions and 103 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@
.idea
__pycache__/
installer/post-update
*.swp

View File

@ -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}')

View File

@ -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 "$*"
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 )

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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. "

View File

@ -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

View File

@ -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 {} \;

View File

@ -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

View File

@ -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)

View File

@ -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';"

View File

@ -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

View File

@ -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)"

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -125,3 +125,8 @@ function _service() {
fi
}
function echolog () {
[ "$PROG" ] || PROG="$(basename "$0")"
logger --tag $PROG --priority local0.info "$*"
echo "$*"
}