refs #943 creates a json with the info when install a new oglives, changes functions to consult the json to obtain info
parent
174d659fe2
commit
3b26f78a2d
135
bin/oglivecli
135
bin/oglivecli
|
@ -291,8 +291,19 @@ function install() {
|
|||
esac
|
||||
OGLIVEDIR="$TFTPDIR/$DEFOGLIVE-${OGLIVEKRNL%%-*}-$OGLIVEARCH-$OGLIVEREV"
|
||||
OGLIVEDIR="${OGLIVEDIR/amd64-/}"
|
||||
|
||||
#OGLIVEDIR="$TFTPDIR/$DEFOGLIVE-$OGLIVEDIST-$OGLIVEKRNL-$OGLIVEARCH-$OGLIVEREV"
|
||||
OGINITRD=$OGLIVEDIR/oginitrd.img
|
||||
# Imprimir los valores de las variables
|
||||
echo "OGLIVEFILE: $OGLIVEFILE"
|
||||
echo "OGLIVEDIST: $OGLIVEDIST"
|
||||
echo "OGLIVEKRNL: $OGLIVEKRNL"
|
||||
echo "OGLIVEARCH: $OGLIVEARCH"
|
||||
echo "OGLIVEREV: $OGLIVEREV"
|
||||
echo "OGLIVEDIR: $OGLIVEDIR"
|
||||
echo "OGINITRD: $OGINITRD"
|
||||
|
||||
# Pausar la ejecución para que el usuario revise los valores
|
||||
read -p "Presione cualquier tecla para continuar con la instalación..."
|
||||
[ ! -r $OGINITRD ] && OGINITRD=$TFTPDIR/$DEFOGLIVE/oginitrd.img
|
||||
if [ -r $OGINITRD ]; then
|
||||
echo "Tipo de compresión: $COMPRESS"
|
||||
|
@ -302,7 +313,6 @@ function install() {
|
|||
sed -n '/^[ \t].*OPTIONS=/s/.*pass=\(\w*\).*/\1/p')
|
||||
echo "Contraseña de Samba extraída: $SAMBAPASS"
|
||||
fi
|
||||
|
||||
rm -fr ${OGLIVEDIR}.old 2>/dev/null
|
||||
mv -f $OGLIVEDIR ${OGLIVEDIR}.old 2>/dev/null
|
||||
# Changes to a generic TMPDIR name
|
||||
|
@ -391,6 +401,25 @@ function install() {
|
|||
else
|
||||
OGLIVEID="N/A" # Si no existe el archivo, asignamos un valor por defecto
|
||||
fi
|
||||
# Crear el archivo JSON con los datos del ogLive instalado
|
||||
jq -n \
|
||||
--arg OGLIVEDIST "$OGLIVEDIST" \
|
||||
--arg OGLIVEKRNL "$OGLIVEKRNL" \
|
||||
--arg OGLIVEARCH "$OGLIVEARCH" \
|
||||
--arg OGLIVEREV "$OGLIVEREV" \
|
||||
--arg OGLIVEDIR "$OGLIVEDIR" \
|
||||
'{
|
||||
OGLIVEDIST: $OGLIVEDIST,
|
||||
OGLIVEKRNL: $OGLIVEKRNL,
|
||||
OGLIVEARCH: $OGLIVEARCH,
|
||||
OGLIVEREV: $OGLIVEREV,
|
||||
OGLIVEDIR: $OGLIVEDIR
|
||||
}' > "$OGLIVEDIR/oglive_info.json"
|
||||
|
||||
# Verificar que el archivo JSON fue creado
|
||||
if [ ! -f "$OGLIVEDIR/oglive_info.json" ]; then
|
||||
echo "{\"status\": \"error\", \"error\": \"oglive_info,json failed.\"}"; exit 1;
|
||||
fi
|
||||
JSON_OUTPUT=$(jq -n \
|
||||
--arg id "$OGLIVEID" \
|
||||
--arg dist "$OGLIVEDIST" \
|
||||
|
@ -398,8 +427,7 @@ function install() {
|
|||
--arg arch "$OGLIVEARCH" \
|
||||
--arg rev "$OGLIVEREV" \
|
||||
--arg dir "$OGLIVEDIR" \
|
||||
--arg iso "$(basename "$OGLIVEFILE")" \
|
||||
'{status: "success", messages: [], result: {id: $id, distribution: $dist, kernel: $krnl, architecture: $arch, revision: $rev, directory: $dir, iso: $iso}}')
|
||||
'{status: "success", message: {id: $id, distribution: $dist, kernel: $krnl, architecture: $arch, revision: $rev, directory: $dir}}')
|
||||
|
||||
echo "$JSON_OUTPUT"
|
||||
}
|
||||
|
@ -439,11 +467,10 @@ function uninstall() {
|
|||
# Devolver mensaje de éxito
|
||||
echo "{\"message\": \"ogLive client uninstalled successfully.\", \"details\": \"Removed directory: $DIR\"}"
|
||||
}
|
||||
|
||||
# Get information about the default ogLive client.
|
||||
function get_default() {
|
||||
local DEFAULT_LINK="$TFTPDIR/$DEFOGLIVE"
|
||||
local DIR OGLIVEDIST OGLIVEKRNL OGLIVEARCH OGLIVEREV OGLIVEISO OGLIVEDIR
|
||||
local DIR OGLIVEJSON OGLIVEDIST OGLIVEKRNL OGLIVEARCH OGLIVEREV OGLIVEDIR CHECKSUM_FILE CHECKSUM
|
||||
|
||||
# Verificar que el enlace simbólico del ogLive por defecto existe.
|
||||
if [ ! -L "$DEFAULT_LINK" ]; then
|
||||
|
@ -460,23 +487,37 @@ function get_default() {
|
|||
exit 1
|
||||
fi
|
||||
|
||||
# Obtener la información del ogLive a partir del nombre del directorio.
|
||||
OGLIVEDIR=$(basename "$DIR")
|
||||
OGLIVEDIST="$(echo $OGLIVEDIR | cut -d- -f2)"
|
||||
OGLIVEKRNL="$(echo $OGLIVEDIR | cut -d- -f3)"
|
||||
OGLIVEARCH="amd64" # Suponiendo que siempre es amd64
|
||||
OGLIVEREV="$(echo $OGLIVEDIR | cut -d- -f4)"
|
||||
OGLIVEISO="" # No tenemos la información del ISO aquí, podría necesitarse un ajuste si se requiere
|
||||
# Verificar que el archivo oglive_info.json existe en el directorio.
|
||||
OGLIVEJSON="$DIR/oglive_info.json"
|
||||
if [ ! -f "$OGLIVEJSON" ]; then
|
||||
echo "{\"error\": \"oglive_info.json not found in $DIR.\"}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Leer los datos del archivo JSON.
|
||||
OGLIVEDIST=$(jq -r '.OGLIVEDIST' "$OGLIVEJSON")
|
||||
OGLIVEKRNL=$(jq -r '.OGLIVEKRNL' "$OGLIVEJSON")
|
||||
OGLIVEARCH=$(jq -r '.OGLIVEARCH' "$OGLIVEJSON")
|
||||
OGLIVEREV=$(jq -r '.OGLIVEREV' "$OGLIVEJSON")
|
||||
OGLIVEDIR=$(jq -r '.OGLIVEDIR' "$OGLIVEJSON")
|
||||
|
||||
# Obtener el checksum del archivo ogclient.sqfs.sum
|
||||
CHECKSUM_FILE="$DIR/ogclient.sqfs.sum"
|
||||
if [ -f "$CHECKSUM_FILE" ]; then
|
||||
CHECKSUM=$(cat "$CHECKSUM_FILE" | cut -d ' ' -f 1)
|
||||
else
|
||||
CHECKSUM=""
|
||||
fi
|
||||
|
||||
# Construir el JSON con la información.
|
||||
local INFO=$(cat << EOT
|
||||
{
|
||||
"id": "$CHECKSUM",
|
||||
"distribution": "$OGLIVEDIST",
|
||||
"kernel": "$OGLIVEKRNL",
|
||||
"architecture": "$OGLIVEARCH",
|
||||
"revision": "$OGLIVEREV",
|
||||
"directory": "$DIR",
|
||||
"iso": "$OGLIVEISO"
|
||||
"directory": "$OGLIVEDIR"
|
||||
}
|
||||
EOT
|
||||
)
|
||||
|
@ -485,6 +526,7 @@ EOT
|
|||
echo "$INFO"
|
||||
}
|
||||
|
||||
|
||||
# Set default ogLive client by checksum.
|
||||
function set_default() {
|
||||
local CHECKSUM=$1
|
||||
|
@ -531,43 +573,50 @@ function list_installed_oglives() {
|
|||
local installed_ogLives=()
|
||||
|
||||
for i in $INST; do
|
||||
NF=$(echo $i | awk -F- '{print NF-1}')
|
||||
local OGLIVEDIR="$TFTPDIR/$i"
|
||||
local OGLIVEDIST=""
|
||||
local OGLIVEKRNL=""
|
||||
local OGLIVEARCH=""
|
||||
local OGLIVEREV=""
|
||||
local CHECKSUM=""
|
||||
local CHECKSUM_FILE="$TFTPDIR/$i/ogclient.sqfs.sum"
|
||||
local OGLIVEJSON="$OGLIVEDIR/oglive_info.json"
|
||||
local CHECKSUM_FILE="$OGLIVEDIR/ogclient.sqfs.sum"
|
||||
|
||||
# Verificar que el archivo oglive_info.json existe en el directorio.
|
||||
if [ -f "$OGLIVEJSON" ]; then
|
||||
OGLIVEDIST=$(jq -r '.OGLIVEDIST' "$OGLIVEJSON")
|
||||
OGLIVEKRNL=$(jq -r '.OGLIVEKRNL' "$OGLIVEJSON")
|
||||
OGLIVEARCH=$(jq -r '.OGLIVEARCH' "$OGLIVEJSON")
|
||||
OGLIVEREV=$(jq -r '.OGLIVEREV' "$OGLIVEJSON")
|
||||
else
|
||||
echo "{\"error\": \"oglive_info.json not found in $OGLIVEDIR.\"}"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Obtener el checksum del archivo ogclient.sqfs.sum
|
||||
if [ -f "$CHECKSUM_FILE" ]; then
|
||||
CHECKSUM=$(cat "$CHECKSUM_FILE" | cut -d ' ' -f 1)
|
||||
fi
|
||||
|
||||
case $NF in
|
||||
1) OGLIVEDIST="" OGLIVEKRNL=$(echo $i|cut -f2 -d-) OGLIVEARCH="i386" OGLIVEREV="" ;;
|
||||
2) eval $(echo $i | awk -F- '{printf "OGLIVEDIST=\"\" OGLIVEKRNL=%s OGLIVEARCH=amd64 OGLIVEREV=%s OGLIVEDIR=%s",$2,$3,$0}') ;;
|
||||
3) eval $(echo $i | awk -F- '{if ($3=="i386") printf "OGLIVEDIST=\"\" OGLIVEKRNL=%s OGLIVEARCH=%s OGLIVEREV=%s OGLIVEDIR=%s",$2,$3,$4,$0; else printf "OGLIVEDIST=%s OGLIVEKRNL=%s OGLIVEARCH=i386 OGLIVEREV=%s OGLIVEDIR=%s",$2,$3,$4,$0}') ;;
|
||||
4) eval $(echo $i | awk -F- '{printf "OGLIVEDIST=%s OGLIVEKRNL=%s OGLIVEARCH=%s OGLIVEREV=%s OGLIVEDIR=%s",$2,$3,$4,$5,$0}') ;;
|
||||
esac
|
||||
|
||||
# Crear el JSON con los datos del ogLive
|
||||
local DATA=$(jq -n \
|
||||
--arg id "$CHECKSUM" \
|
||||
--arg filename "$OGLIVEDIR" \
|
||||
--arg dist "$OGLIVEDIST" \
|
||||
--arg krnl "$OGLIVEKRNL" \
|
||||
--arg arch "$OGLIVEARCH" \
|
||||
--arg rev "$OGLIVEREV" \
|
||||
--arg dir "$TFTPDIR/$OGLIVEDIR" \
|
||||
--arg iso "" \
|
||||
'{id: $id, filename: $filename, distribution: $dist, kernel: $krnl, architecture: $arch, revision: $rev, directory: $dir, iso: $iso}')
|
||||
--arg dir "$OGLIVEDIR" \
|
||||
'{id: $id, distribution: $dist, kernel: $krnl, architecture: $arch, revision: $rev, directory: $dir}')
|
||||
|
||||
installed_ogLives+=("$DATA")
|
||||
|
||||
# Verificar si es el ogLive por defecto
|
||||
[ -n "$(stat -c "%N" $TFTPDIR/$DEFOGLIVE | awk '$3~/'$i'/ {print}')" ] && DEF="$i"
|
||||
done
|
||||
|
||||
local default_oglive=$(basename $(readlink -f $TFTPDIR/$DEFOGLIVE))
|
||||
|
||||
# Crear el JSON final con la lista de ogLives instalados y el ogLive por defecto
|
||||
jq -n \
|
||||
--arg default_oglive "$default_oglive" \
|
||||
--argjson installed_ogLives "$(printf '%s\n' "${installed_ogLives[@]}" | jq -s .)" \
|
||||
|
@ -580,7 +629,7 @@ function list_installed_oglives() {
|
|||
# Get information about an installed ogLive client.
|
||||
function get_info() {
|
||||
local CHECKSUM="$1"
|
||||
local DIR OGLIVEDIST OGLIVEKRNL OGLIVEARCH OGLIVEREV OGLIVEISO OGLIVEDIR
|
||||
local DIR OGLIVEDIST OGLIVEKRNL OGLIVEARCH OGLIVEREV OGLIVEDIR OGLIVEJSON
|
||||
|
||||
# Verificar que se proporcionó un checksum.
|
||||
[ -z "$CHECKSUM" ] && { echo "{\"error\": \"usage: get_info {checksum}\"}"; exit 1; }
|
||||
|
@ -597,23 +646,29 @@ function get_info() {
|
|||
exit 1
|
||||
fi
|
||||
|
||||
# Obtener la información del ogLive a partir del nombre del directorio.
|
||||
OGLIVEDIR=$(basename "$DIR")
|
||||
OGLIVEDIST="$(echo $OGLIVEDIR | cut -d- -f2)"
|
||||
OGLIVEKRNL="$(echo $OGLIVEDIR | cut -d- -f3)"
|
||||
OGLIVEARCH="amd64" # Suponiendo que siempre es amd64
|
||||
OGLIVEREV="$(echo $OGLIVEDIR | cut -d- -f4)"
|
||||
OGLIVEISO="" # No tenemos la información del ISO aquí, podría necesitarse un ajuste si se requiere
|
||||
# Verificar que el archivo oglive_info.json existe en el directorio.
|
||||
OGLIVEJSON="$DIR/oglive_info.json"
|
||||
if [ ! -f "$OGLIVEJSON" ]; then
|
||||
echo "{\"error\": \"oglive_info.json not found in $DIR.\"}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Construir el JSON con la información.
|
||||
# Leer los datos del archivo JSON.
|
||||
OGLIVEDIST=$(jq -r '.OGLIVEDIST' "$OGLIVEJSON")
|
||||
OGLIVEKRNL=$(jq -r '.OGLIVEKRNL' "$OGLIVEJSON")
|
||||
OGLIVEARCH=$(jq -r '.OGLIVEARCH' "$OGLIVEJSON")
|
||||
OGLIVEREV=$(jq -r '.OGLIVEREV' "$OGLIVEJSON")
|
||||
OGLIVEDIR=$(jq -r '.OGLIVEDIR' "$OGLIVEJSON")
|
||||
|
||||
# Construir el JSON con los datos del ogLive y el checksum (id).
|
||||
local INFO=$(cat << EOT
|
||||
{
|
||||
"id": "$CHECKSUM",
|
||||
"distribution": "$OGLIVEDIST",
|
||||
"kernel": "$OGLIVEKRNL",
|
||||
"architecture": "$OGLIVEARCH",
|
||||
"revision": "$OGLIVEREV",
|
||||
"directory": "$DIR",
|
||||
"iso": "$OGLIVEISO"
|
||||
"directory": "$OGLIVEDIR"
|
||||
}
|
||||
EOT
|
||||
)
|
||||
|
@ -624,7 +679,7 @@ EOT
|
|||
|
||||
# Function to check the status of services
|
||||
function check_services_status() {
|
||||
local SERVICES=("oglive_daemon.service" "tftpd-hpa.service" "nginx.service")
|
||||
local SERVICES=("tftpd-hpa.service" "nginx.service")
|
||||
declare -A STATUS_MAP
|
||||
|
||||
for service in "${SERVICES[@]}"; do
|
||||
|
|
Loading…
Reference in New Issue