162 lines
4.9 KiB
Bash
Executable File
162 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
##########################################################################
|
|
# systemctl-wrapper - Wrapper for sysv init scripts simulating systemctl #
|
|
# Autor: Quique Molina #
|
|
# Contacto: emolina@prosodie.com #
|
|
# Licencia: GPL 2.0 #
|
|
# ########################################################################
|
|
VERSION=1.0
|
|
|
|
# Variable con scripts de arranque
|
|
path_scripts="/etc/init.d"
|
|
|
|
# Funcion para simular las units y sockets de systemctl
|
|
function systemctl_units() {
|
|
list_units=$(ls -1 ${path_scripts})
|
|
echo "UNIT"
|
|
for unit in ${list_units} ; do
|
|
echo "${unit} --> Script for control boot, stop and status of ${unit} service"
|
|
done
|
|
}
|
|
|
|
# Comprobar si existe el directorio de scripts
|
|
function check_dir_scripts() {
|
|
if [ -d "${path_scripts}" ] ; then
|
|
echo > /dev/null
|
|
else
|
|
echo ""
|
|
echo "systemctl (wrapper) v${VERSION} for sysvinit scripts"
|
|
echo ""
|
|
echo "Failed to check ${path_scripts} directory. Not found"
|
|
echo ""
|
|
exit
|
|
fi
|
|
}
|
|
|
|
# Function para mostrar la ayuda
|
|
function systemctl_help() {
|
|
echo ""
|
|
echo "systemctl [OPTIONS...] {COMMAND} ..."
|
|
echo ""
|
|
echo "-h --help Show this help"
|
|
echo " --version Show package version"
|
|
echo ""
|
|
echo "Unit Commands:"
|
|
echo " list-units List loaded units"
|
|
echo " list-sockets List loaded sockets ordered by address"
|
|
echo " start NAME... Start (activate) one or more units"
|
|
echo " stop NAME... Stop (deactivate) one or more units"
|
|
echo " reload NAME... Reload one or more units"
|
|
echo " restart NAME... Start or restart one or more units"
|
|
echo " status NAME... Show runtime status of one or more units"
|
|
echo ""
|
|
echo "Unit File Commands:"
|
|
echo " list-unit-files List installed unit files"
|
|
echo " enable NAME... Enable one or more unit files"
|
|
echo " disable NAME... Disable one or more unit files"
|
|
echo ""
|
|
echo "System Commands:"
|
|
echo " halt Shut down and halt the system"
|
|
echo " poweroff Shut down and power-off the system"
|
|
echo " reboot Shut down and reboot the system"
|
|
echo ""
|
|
}
|
|
|
|
# Function para mostrar la version
|
|
function systemctl_version() {
|
|
echo ""
|
|
echo "systemctl (wrapper) v${VERSION} for sysvinit scripts"
|
|
echo ""
|
|
}
|
|
|
|
# Funcion para el mapeo de comandos
|
|
function systemctl_map() {
|
|
# Mapeo del comando start
|
|
if [ "${1}" == "start" ] ; then
|
|
if [ -f "${path_scripts}/${2}" ] ; then
|
|
"${path_scripts}/${2}" start
|
|
else
|
|
echo "Failed to start ${2}: Unit not found."
|
|
fi
|
|
# Mapeo del comando enable
|
|
elif [ "${1}" == "enable" ] ; then
|
|
if [ -f "${path_scripts}/${2}" ] ; then
|
|
"${path_scripts}/${2}" start
|
|
else
|
|
echo "Failed to enable ${2}: Unit not found."
|
|
fi
|
|
# Mapeo del comando stop
|
|
elif [ "${1}" == "stop" ] ; then
|
|
if [ -f "${path_scripts}/${2}" ] ; then
|
|
"${path_scripts}/${2}" stop
|
|
else
|
|
echo "Failed to stop ${2}: Unit not found."
|
|
fi
|
|
# Mapeo del comando disable
|
|
elif [ "${1}" == "disable" ] ; then
|
|
if [ -f "${path_scripts}/${2}" ] ; then
|
|
"${path_scripts}/${2}" stop
|
|
else
|
|
echo "Failed to disable ${2}: Unit not found."
|
|
fi
|
|
# Mapeo del comando reload
|
|
elif [ "${1}" == "reload" ] ; then
|
|
if [ -f "${path_scripts}/${2}" ] ; then
|
|
"${path_scripts}/${2}" reload
|
|
else
|
|
echo "Failed to reload ${2}: Unit not found."
|
|
fi
|
|
# Mapeo del comando restart
|
|
elif [ "${1}" == "restart" ] ; then
|
|
if [ -f "${path_scripts}/${2}" ] ; then
|
|
"${path_scripts}/${2}" restart
|
|
else
|
|
echo "Failed to restart ${2}: Unit not found."
|
|
fi
|
|
# Mapeo del comando status
|
|
elif [ "${1}" == "status" ] ; then
|
|
if [ -f "${path_scripts}/${2}" ] ; then
|
|
"${path_scripts}/${2}" status
|
|
else
|
|
echo "Failed to status ${2}: Unit not found."
|
|
fi
|
|
# Mapeo del comando list-units
|
|
elif [ "${1}" == "list-units" ] ; then
|
|
systemctl_units
|
|
# Mapeo del comando list-sockets
|
|
elif [ "${1}" == "list-sockets" ] ; then
|
|
systemctl_units
|
|
# Mapeo del comando list-unit-files
|
|
elif [ "${1}" == "list-unit-files" ] ; then
|
|
systemctl_units
|
|
# Mapeo del comando help
|
|
elif [ "${1}" == "--help" ] ; then
|
|
systemctl_help
|
|
elif [ "${1}" == "-h" ] ; then
|
|
systemctl_help
|
|
# Mapeo del comando version
|
|
elif [ "${1}" == "--version" ] ; then
|
|
systemctl_version
|
|
# Mapeo del comando reboot
|
|
elif [ "${1}" == "reboot" ] ; then
|
|
reboot
|
|
# Mapeo del comando halt
|
|
elif [ "${1}" == "halt" ] ; then
|
|
halt
|
|
# Mapeo del comando poweroff
|
|
elif [ "${1}" == "poweroff" ] ; then
|
|
poweroff
|
|
else
|
|
echo "Unknown operation '${1}'."
|
|
fi
|
|
}
|
|
|
|
# Iniciar el script
|
|
check_dir_scripts
|
|
if [ -z "${1}" ] ; then
|
|
systemctl_units
|
|
else
|
|
systemctl_map "${1}" "${2}"
|
|
fi
|