add_python_scripts #6

Merged
ggil merged 3 commits from add_python_scripts into main 2024-11-20 12:58:32 +01:00
8 changed files with 12 additions and 532 deletions

View File

@ -4,7 +4,6 @@ ogRepository - OpenGnsys Repository Manager
Este repositorio GIT contiene la estructura de datos del repositorio de imágenes de OpenGnsys. Este repositorio GIT contiene la estructura de datos del repositorio de imágenes de OpenGnsys.
- **admin** --- Archivos de configuración de ogRepository.
- **api** ------ API de ogRepository. - **api** ------ API de ogRepository.
- **bin** ------ Scripts en Python 3 y binarios de gestión de ogRepository. - **bin** ------ Scripts en Python 3 y binarios de gestión de ogRepository.
- **etc** ------ Ficheros y plantillas de configuración de ogRepository. - **etc** ------ Ficheros y plantillas de configuración de ogRepository.
@ -117,7 +116,7 @@ curl -X GET -H "Authorization: $API_KEY" http://example.com/ogrepository/v1/stat
"udp-sender": "stopped", "udp-sender": "stopped",
"uftp": "stopped", "uftp": "stopped",
"bttrack": "stopped", "bttrack": "stopped",
"btlaunchmany": "stopped" "btlaunchmany.bittornado": "stopped"
} }
} }
``` ```

View File

@ -1,285 +0,0 @@
#!/bin/bash
PARM=`cat`
#PARM=$@
#TODO: ticket 379
#buscar parametro de identificador de operacion.
#usar parametro de identificacion para anexarlo al nombre de log
#Comprobar si la variable está seteas.
#Si no lo está setearla.
#Si esta seteada (en progreso) salir.
TIME=$SECONDS
BASEDIR=/opt/opengnsys
PATH=$PATH:$BASEDIR/bin
REPONAME=ogAdmRepo
REPODIR="$BASEDIR/images/"
# Para las sincronizadas
# BACKUP: Define si se realiza copia de seguridad al crear una imagen (true|false).
# IMGFS: Sistema de ficheros al crear las sincronizadas tipo archivo (EXT4|BTRFS).
[ -z $OGENGINECONFIGURATE ] && source $BASEDIR/client/etc/engine.cfg
# FS segun la configuracion y la version del kernel. ext4 para < 3.7, para >= BTRFS
KERNEL=$(file -bkr /opt/opengnsys/tftpboot/ogclient/ogvmlinuz |awk '/Linux/ {for(i=1;i<=NF;i++) if($i~/version/) {v=$(i+1);printf("%d",v);sub(/[0-9]*\./,"",v);printf(".%02d",v)}}')
[ $KERNEL \< 3.07 ] && IMGFS="EXT4" || IMGFS=${IMGFS:-"BTRFS"}
# Añade registro de incidencias.
function echolog () {
logger --tag $0 --priority local0.info "$*"
echo "$*"
}
function mountImage () {
#@param 1 image_file
#@param 2 mount_dir
#@param 3 openciones mount
[ "$3" != "" ] && OPTMOUNT=" -o $3 "
# Si está montado nada que hacer
df |grep "$2$" 2>&1 >/dev/null && return 0
# FS de la imagen segun el contenido del archivo .img
if file "$1" |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then
echolog "mount $OPTMOUNT -t ext4 $1 $2"
mount $OPTMOUNT -t ext4 $1 $2
else
echolog "mount $OPTMOUNT -o compress=lzo $1 $2"
mount $OPTMOUNT -o compress=lzo "$1" "$2"
fi
# Si esta montado da error 32, lo damos como bueno
RETVAL=$?
[ $RETVAL -eq 32 ] && RETVAL=0
return $RETVAL
}
PARM1=$(echo $PARM | cut -f1 -d" ")
PARM2=$(echo $PARM | cut -f2 -d" ")
PARM3=$(echo $PARM | cut -f3 -d" ")
PARM4=$(echo $PARM | cut -f4 -d" ")
# Determinamos el tipo de sistema de fichero de las imagenes segun el kernel que tenga
case "$PARM1" in
START_MULTICAST)
#1 START_MULTICAST
#2 fichero a enviar
#3 opciones de multicast
FILE="$PARM2"
MCASTOPT="$PARM3"
echolog "Ejecutar $(which sendFileMcast) $FILE $MCASTOPT"
sendFileMcast $FILE $MCASTOPT |logger --tag $0 --priority local0.info
case $? in
1) echolog "Parametros insuficientes"
exit 1 ;;
2) echolog "Fichero no accesible"
exit 2 ;;
3) echolog "Sesion multicast no valida"
exit 3 ;;
esac
;;
CREATE_IMAGE)
# Creamos/Redimensionamos el fichero de imagen y lo montamos para que se pueda escribir sobre el
#1 CREATE_IMAGE
#2 nombre imagen
#3 tipo de imagen [ img | diff ]
#4 tamaño imagen
LOOPDEVICE=$(losetup -f)
DIRMOUNT="$REPODIR/mount/$PARM2"
if [ "$PARM3" == "img" ] ; then
IMGEXT="img"
else
IMGEXT="img.diff"
DIRMOUNT="$DIRMOUNT.diff"
fi
IMGFILE="$REPODIR/$PARM2.$IMGEXT"
IMGDIR="$(dirname $IMGFILE)"
[ -d $IMGDIR ] || mkdir -p $IMGDIR
mkdir -p "$DIRMOUNT"
LOCKFILE="$IMGFILE.lock"
SIZEREQUIRED="$PARM4"
# Si existe la imagen hacemos copia de seguridad y la redimesionamos
if [ -f "$IMGFILE" ]; then
echolog "La imagen $IMGFILE ya existe."
# TODO modificar ogGetImageSize
IMGSIZE=$(ls -l --block-size=1024 $IMGFILE| cut -f5 -d" ")
if [ "$BACKUP" == "true" -o "$BACKUP" == "TRUE" -o $IMGSIZE -lt $SIZEREQUIRED ]; then
# Si la imagen esta montada la desmonto
if [ -r "$DIRMOUNT/ogimg.info" ]; then
echolog "umount $DIRMOUNT"
umount "$DIRMOUNT"
[ $? -ne 0 ] && echolog "Error: No podemos desmontar la imagen para hacer copia de seguridad o redimensionar" && exit 1
fi
fi
# Copia de seguridad de la imagen
if [ "$BACKUP" == "true" -o "$BACKUP" == "TRUE" ]; then
echolog "Copia de seguridad de la imagen anterior"
echolog "cp $IMGFILE $IMGFILE.ant"
cp "$IMGFILE" "$IMGFILE.ant"
echolog mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
mv -f "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null
fi
# Redimensionamos la imagen al tamaño necesario
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 |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 |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 |logger --tag $0 --priority local0.info
fi
fi
# Si no existe la imagen creamos el fichero.
else
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 |logger --tag $0 --priority local0.info
#Formateamos imagen
echo losetup $LOOPDEVICE "$IMGFILE"
losetup $LOOPDEVICE "$IMGFILE"
if [ $IMGFS == "EXT4" ] ; then
echolog " mkfs.ext4 -i 4096 -b 4096 -L ${PARM2##*\/} $LOOPDEVICE"
mkfs.ext4 -i 4096 -b 4096 -L ${PARM2##*\/} $LOOPDEVICE
else
echolog mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE
mkfs.btrfs -L ${PARM2##*\/} $LOOPDEVICE #&> $OGLOGCOMMAND
fi
fi
# Montamos la imagen.
mountImage "$IMGFILE" "$DIRMOUNT"
if [ $? -ne 0 ]; then
rmdir "$DIRMOUNT"
echolog "Error al crear/redimensionar la imagen"
exit 1
fi
#touch "$DIRMOUNT/ogimg.info"
echo "mounted"> "$LOCKFILE"
TIME2=$[SECONDS-TIME]
echolog "Fin creación/redimension de la imagen: $[TIME2/60]m $[TIME2%60]s"
# Si existe dispositivo loop lo borramos.
[ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
# TODO: comprobar que no se quede el losetup bloqueado.
;;
MOUNT_IMAGE)
# Montamos el fichero imagen para que se pueda
#1 MOUNT_IMAGE
#2 nombre imagen
#3 tipo de imagen [ img | diff ]
DIRMOUNT="$REPODIR""mount/$PARM2"
if [ "$PARM3" == "img" ] ; then
IMGEXT="img"
else
IMGEXT="img.diff"
DIRMOUNT="$DIRMOUNT.diff"
fi
IMGFILE="$REPODIR/$PARM2.$IMGEXT"
echolog "Montamos la imagen $IMGFILE "
mkdir -p "$DIRMOUNT"
mountImage "$IMGFILE" "$DIRMOUNT" ro || (echolog "Error al montar la imagen"; exit 1)
;;
UMOUNT_IMAGE)
# Desmontamos el fichero imagen.
# Si el directorio esta ocupado no se desmontará
#1 UMOUNT_IMAGE
#2 nombre imagen
#3 tipo de imagen [ img | diff ]
IMGTYPE="$PARM3"
DIRMOUNT="$REPODIR/mount/$PARM2"
if [ "$IMGTYPE" == "img" ]; then
IMGEXT="img"
else
DIRMOUNT="$DIRMOUNT.$IMGTYPE"
IMGEXT="img.diff"
fi
LOCKFILE="$REPODIR/$PARM2.$IMGEXT.lock"
echolog "Desmontamos la imagen $PARM2 $PARM3 "
umount $DIRMOUNT
rmdir $DIRMOUNT
[ -f $LOCKFILE ] && sed -i s/mounted//g $LOCKFILE
;;
REDUCE_IMAGE)
# Reduce el archivo de la imagen a tamaño datos + 500M
#1 REDUCE_IMAGE
#2 Nombre Imagen
#3 Tipo de imagen [ img |diff ]
DIRMOUNT="${REPODIR}mount/${PARM2}"
if [ "$PARM3" == "img" ] ; then
IMGEXT="img"
else
IMGEXT="img.diff"
DIRMOUNT="$DIRMOUNT.diff"
fi
IMGFILE="$REPODIR$PARM2.$IMGEXT"
LOCKFILE="$IMGFILE.lock"
[ ! -f $IMGFILE ] && echolog "Imagen $IMGFILE no existe" && exit 1
# Para imagenes EXT4 reduzco, para BTRFS solo desmonto.
if file $IMGFILE |grep -i -e " ext4 filesystem " 2>&1 > /dev/null ; then
[ -d $DIRMOUNT ] || mkdir $DIRMOUNT
mountImage "$IMGFILE" "$DIRMOUNT" || (echolog "Error al montar la imagen $IMGFILE"; exit 1)
# Si el espacio libre menor que 200Mb desmontamos la imagen y nos salimos
AVAILABLE=$(df -k|grep $DIRMOUNT|awk '{print $4}')
if [ $AVAILABLE -lt 200000 ]; then
echolog "reducir imagen REPO $PARM2 $IMGEXT. tamaño minimo, nada que hacer"
umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
else
# Calculamos la diferencia entre el tamaño interno y externo
EXTSIZE=$(ls -l --block-size=1024 $IMGFILE | cut -f5 -d" ")
INTSIZE=$(df -k|grep "$DIRMOUNT"|awk '{print $2}')
let EDGESIZE=$EXTSIZE-$INTSIZE
echolog "reducir imagen REPO $PARM2 $IMGEXT, tamaño final: $ENDSIZE"
umount $DIRMOUNT
LOOPDEVICE=$(losetup -f)
losetup $LOOPDEVICE "$IMGFILE"
# Redimensiono sistema de ficheros
echolog "resize2fs -fpM $LOOPDEVICE "
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}')
let EXTSIZE=$INTSIZE+$EDGESIZE
umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
# Si existe dispositivo loop lo borramos.
[ $LOOPDEVICE ] && losetup -a| grep $LOOPDEVICE &> /dev/null && losetup -d $LOOPDEVICE
# Corto el archivo al tamaño del sistema de ficheros
echo "truncate --size=\"$EXTSIZE\"k $IMGFILE"
echolog "truncate --size=\"$EXTSIZE\"k $IMGFILE"
truncate --size="$EXTSIZE"k $IMGFILE
fi
else
umount $DIRMOUNT || (echolog "Error al desmontar la imagen $IMGFILE"; exit 1)
fi
rmdir $DIRMOUNT
echo "reduced" >$LOCKFILE
;;
default)
echolog "Solicitud con parametros \"$PARM\" no realizada, no registrada o con errores"
;;
esac

View File

@ -1,15 +0,0 @@
# RUN_OGADMSERVER defined as OpenGnsys Admin Server
# RUN_OGADMREPO defined as OpenGnsys Repository Manager
# RUN_OGADMAGENT run task scheduler service, only if Admin Server is enabled
# RUN_BTTRACKER run Bittorrent Tracker, only if Repository is enabled
# RUN_BTSEEDER start seeding of selected torrent files, only if Repository is enabled
# BTSEEDER_PRIORITY nice priority to seed torrent files; recommended values:
# 8 for Admin Server or Repo without Torrent
# 0 for Admin Server and Repo with Torrent
# -8 for Repo with Torrent
RUN_OGADMSERVER="yes"
RUN_OGADMREPO="yes"
RUN_OGADMAGENT="yes"
RUN_BTTRACKER="yes"
RUN_BTSEEDER="yes"
BTSEEDER_PRIORITY=0

View File

@ -1,224 +0,0 @@
#!/bin/bash
### BEGIN INIT INFO
# Provides: opengnsys
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: Servicios del sistema OpenGnsys
# Description: Servicios del sistema OpenGnsys
### END INIT INFO
#
# Definiciones globales
#
BASEDIR=/opt/opengnsys
OPENGNSYSUSER="opengnsys"
IMAGEDIR=$BASEDIR/images
CLIENTLOGDIR=$BASEDIR/log/clients
#
# Servidor de OpenGnsys
#
SERVERNAME=ogAdmServer
SERVERDAEMON=$BASEDIR/sbin/$SERVERNAME
SERVERCFG=$BASEDIR/etc/$SERVERNAME.cfg
SERVERLOG=$BASEDIR/log/$SERVERNAME.log
SERVERDAEMON_OPTIONS="-f $SERVERCFG -l $SERVERLOG"
#
# Servidor de Repositorio
#
############## ADV
REPOAUXNAME=ogAdmRepoAux
REPOAUXDAEMON=$BASEDIR/sbin/$REPOAUXNAME
REPOAUXPORT=$(awk -F= '/PUERTO/ {print $2+1}' $SERVERCFG 2>/dev/null)
############## ADV
############# IRINA # para setBootMode desde el cliente
SERVERAUXNAME=ogAdmServerAux
SERVERAUXDAEMON=$BASEDIR/sbin/$SERVERAUXNAME
SERVERAUXPORT=2011
############# IRINA
#
# Servidor de tareas programadas
#
AGENTNAME=ogAdmAgent
AGENTDAEMON=$BASEDIR/sbin/$AGENTNAME
AGENTCFG=$BASEDIR/etc/$AGENTNAME.cfg
AGENTLOG=$BASEDIR/log/$AGENTNAME.log
AGENTDAEMON_OPTIONS="-f $AGENTCFG -l $AGENTLOG"
#
# Opciones Bittorrent
#
BTTRACK=/usr/bin/bttrack.bittorrent
BTSEEDER=/usr/bin/btlaunchmany.bittornado
BTTRACKPORT=6969
BTTRACKDFILE=/tmp/dstate
BTTRACKLOG=$BASEDIR/log/bttrack.log
BTINTERVAL=30
BTTORRENTSDIR=$BASEDIR/images
BTTRACK_OPTIONS=" --port $BTTRACKPORT --dfile $BTTRACKDFILE --reannounce_interval $BTINTERVAL --logfile $BTTRACKLOG --allowed_dir $BTTORRENTSDIR --allow_get 1"
BTTRACKPID="/var/run/bttrack.pid"
BTSEEDERPID="/var/run/btseeder.pid"
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin:/usr/bin"
# Read config file if it is present.
if [ -r /etc/default/opengnsys ]; then
source /etc/default/opengnsys
fi
# Configuración de arranque según la distribución Linux usada.
config() {
if [ -f /etc/os-release ]; then
source /etc/os-release
OSDISTRIB="$ID"
else
OSDISTRIB=$(lsb_release -is 2>/dev/null)
fi
OSDISTRIB="${OSDISTRIB,,}"
case "$OSDISTRIB" in
ubuntu|debian|linuxmint)
INITFUNCTIONS=/lib/lsb/init-functions
DAEMONSTART="start-stop-daemon --start --quiet --background --exec"
EXTRAOPTS="--"
DAEMONSTOP="start-stop-daemon --stop --quiet --oknodo --name"
ACTIONMSG="log_daemon_msg"
SUCCESSMSG="log_end_msg 0"
FAILMSG="log_end_msg 1"
TRACKERSTART="start-stop-daemon --make-pidfile --pidfile $BTTRACKPID --start --quiet --background --exec"
BTTRACK_OPTIONS="$BTTRACK_OPTIONS --parse_allowed_interval 1"
TRACKERSTOP="start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $BTTRACKPID"
SEEDERSTART="start-stop-daemon --make-pidfile --pidfile $BTSEEDERPID --start --quiet --background --exec"
SEEDERSTOP="start-stop-daemon --stop --quiet --oknodo --pidfile $BTSEEDERPID"
;;
centos|fedora)
INITFUNCTIONS=/etc/init.d/functions
DAEMONSTART="daemon"
ENDOPTS="&"
DAEMONSTOP="killproc"
ACTIONMSG="echo -n"
SUCCESSMSG="eval ( success; echo )"
FAILMSG="eval ( failure; echo )"
BTTRACK=/usr/bin/bttrack.py
BTSEEDER=/usr/bin/btlaunchmany.py
TRACKERSTART="daemon --pidfile $BTTRACKPID"
TRACKERSTOP="killproc -p $BTTRACKPID $BTTRACK"
SEEDERSTART="daemon --pidfile $BTSEEDERPID"
SEEDERSTOP="killproc -p $BTSEEDERPID $BTSEEDER"
;;
*) echo "Distribución Linux desconcocida o no soportada."
exit ;;
esac
if [ -r $INITFUNCTIONS ]; then
source $INITFUNCTIONS
fi
}
arranca_demonios() {
# Comprobar que está instalado OpenGnsys.
if [ ! -d $BASEDIR ]; then
$ACTIONMSG "ERROR: No existe el directorio $BASEDIR"
$FAILMSG
exit $?
fi
# Deshabilitar modo reforzado de SELinux.
[ -f /selinux/enforce ] && echo 0 > /selinux/enforce
# Verificar permisos básicos.
if [ "$(stat --printf="%A%G" $IMAGEDIR 2>/dev/null)" != "drwxrwxr-x$OPENGNSYSUSER" ]; then
mkdir $IMAGEDIR 2>/dev/null
chmod 775 $IMAGEDIR
chgrp $OPENGNSYSUSER $IMAGEDIR
fi
if [ "$(stat --printf="%A%G" $CLIENTLOGDIR 2>/dev/null)" != "drwxrwxr-x$OPENGNSYSUSER" ]; then
mkdir -p $CLIENTLOGDIR 2>/dev/null
chmod 775 $CLIENTLOGDIR
chgrp $OPENGNSYSUSER $CLIENTLOGDIR
fi
# Arrancar los servicios indicados.
if [ $RUN_OGADMSERVER = "yes" ]; then
$ACTIONMSG "Iniciando demonio: $SERVERNAME"
$DAEMONSTART $SERVERDAEMON $EXTRAOPTS $SERVERDAEMON_OPTIONS $ENDOPTS
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
# Para SetBootmode desde el cliente
$ACTIONMSG "Iniciando demonio: $SERVERAUXNAME" #
faucet $SERVERAUXPORT --daemon --in bash -c "$SERVERAUXDAEMON" # NUEVO
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
fi
if [ $RUN_OGADMREPO = "yes" ]; then
$ACTIONMSG "Iniciando demonio: $REPOAUXNAME"
faucet $REPOAUXPORT --daemon --in bash -c "$REPOAUXDAEMON"
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
fi
if [ $RUN_OGADMSERVER = "yes" ] && [ $RUN_OGADMAGENT = "yes" ]; then
sleep 5 # Damos tiempo a que ogAdmServer este funcionando
fi
if [ $RUN_OGADMAGENT = "yes" ]; then
$ACTIONMSG "Iniciando demonio: $AGENTNAME"
$DAEMONSTART $AGENTDAEMON $EXTRAOPTS $AGENTDAEMON_OPTIONS $ENDOPTS
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
fi
if [ $RUN_BTTRACKER = "yes" ]; then
$ACTIONMSG "Iniciando demonio: $BTTRACK"
$TRACKERSTART $BTTRACK $EXTRAOPTS $BTTRACK_OPTIONS $ENDOPTS
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
fi
if [ $RUN_BTSEEDER = "yes" ]; then
$ACTIONMSG "Iniciando demonio: $BTSEEDER"
$SEEDERSTART $BTSEEDER $EXTRAOPTS $BTTORRENTSDIR &>/dev/null $ENDOPTS
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
fi
}
para_demonios() {
if [ -e $BTSEEDERPID ]; then
$ACTIONMSG "Parando demonio: $BTSEEDER"
$SEEDERSTOP
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
rm -f $BTSEEDERPID
fi
if [ -e $BTTRACKPID ]; then
$ACTIONMSG "Parando demonio: $BTTRACK"
$TRACKERSTOP
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
rm -f $BTTRACKPID
fi
$ACTIONMSG "Parando demonio: $AGENTNAME"
$DAEMONSTOP $AGENTNAME
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
$ACTIONMSG "Parando demonio: $REPOAUXNAME"
pkill faucet
[ $? -le 1 ] && $SUCCESSMSG || $FAILMSG
$ACTIONMSG "Parando demonio: $SERVERNAME"
$DAEMONSTOP $SERVERNAME
[ $? = 0 ] && $SUCCESSMSG || $FAILMSG
}
config
case "$1" in
start)
arranca_demonios
;;
stop)
para_demonios
;;
restart)
para_demonios
arranca_demonios
;;
*)
echo "Uso: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0

View File

@ -164,6 +164,10 @@ def check_remote_connection(remote_ip, remote_user):
# Iniciamos un cliente SFTP: # Iniciamos un cliente SFTP:
sftp_client = ssh_client.open_sftp() sftp_client = ssh_client.open_sftp()
# Cerramos el cliente SSH y el cliente SFTP:
ssh_client.close()
sftp_client.close()
# Retornamos "True", porque hemos conseguido conectar: # Retornamos "True", porque hemos conseguido conectar:
return True return True

View File

@ -138,7 +138,7 @@ paths:
bttrack: bttrack:
type: string type: string
example: "stopped" example: "stopped"
btlaunchmany: btlaunchmany.bittornado:
type: string type: string
example: "stopped" example: "stopped"
"500 (Error)": "500 (Error)":

View File

@ -59,10 +59,10 @@ def get_service_status(service):
def get_process_status(process): def get_process_status(process):
""" Obtiene y retorna el estado del proceso que recibe como parámetro. """ Obtiene y retorna el estado del proceso que recibe como parámetro.
""" """
#for proc in psutil.process_iter(['pid', 'name', 'status']):
for proc in psutil.process_iter(['name']): for proc in psutil.process_iter(['name']):
if proc.info['name'] == process: if proc.info['name'] in process:
return 'running' return 'running'
# Esto no debe ir asociado a un "else" (porque comprueba todos los procesos):
return 'stopped' return 'stopped'
@ -88,7 +88,7 @@ def main():
services_status = {service: get_service_status(service) for service in service_list} services_status = {service: get_service_status(service) for service in service_list}
# Obtenemos el estado de los procesos listados, que almacenamos en un diccionario: # Obtenemos el estado de los procesos listados, que almacenamos en un diccionario:
process_list = ['udp-sender', 'uftp', 'bttrack', 'btlaunchmany'] process_list = ['udp-sender', 'uftp', 'bttrack', 'btlaunchmany.bittornado']
process_status = {process: get_process_status(process) for process in process_list} process_status = {process: get_process_status(process) for process in process_list}
# Creamos un diccionario con toda la información obtenida: # Creamos un diccionario con toda la información obtenida:

View File

@ -1,2 +1,3 @@
IPlocal=SERVERIP IPlocal=SERVERIP
IPcore=OGCOREIP
ApiToken=REPOKEY ApiToken=REPOKEY