diff --git a/index.bash b/index.bash index 0522b98..803905f 100755 --- a/index.bash +++ b/index.bash @@ -1,34 +1,123 @@ -#!/bin/bash - -# Ruta al directorio principal -MAIN_DIR="./" - -# Listar las carpetas disponibles en el directorio principal -echo "Carpetas disponibles:" -folders=("$MAIN_DIR"/*/) -for ((i = 0; i < ${#folders[@]}; i++)); do - echo "$(($i + 1))) $(basename "${folders[$i]}")" -done - -# Solicitar al usuario que elija la carpeta -echo "Ingrese el número de la carpeta que desea instalar (separados por espacios):" -read -r -a selections - -# Iterar sobre las selecciones y ejecutar los scripts de instalación en cada carpeta seleccionada -for selection in "${selections[@]}"; do - index=$((selection - 1)) - if [[ $index -ge 0 && $index -lt ${#folders[@]} ]]; then - folder="${folders[$index]}" - install_script="$folder/install.sh" - # Verificar si existe un script de instalación en la carpeta seleccionada - if [[ -f "$install_script" ]]; then - echo "Instalando desde la carpeta: $(basename "$folder")" - # Ejecutar el script de instalación en la carpeta seleccionada - bash "$install_script" - else - echo "No se encontró un script de instalación en la carpeta: $(basename "$folder")" +#!/usr/bin/env bash + +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SYSTEM_DIR="$ROOT_DIR/system" +NETWORK_DIR="$ROOT_DIR/network" +UTILS_DIR="$ROOT_DIR/utils" +LAMP_DIR="$ROOT_DIR/lamp" +DEPENDENCY_SCRIPT="$SYSTEM_DIR/install_dependencies.sh" + +handle_interrupt() { + echo + echo "Interrupción detectada. Saliendo..." + exit 130 +} + +trap handle_interrupt SIGINT SIGTERM + +print_header() { + echo + echo "==============================================" + echo " Scripts Manager (Linux / enfoque ArchLinux)" + echo "==============================================" + echo +} + +list_scripts() { + local dir="$1" + local exclude_file="${2:-}" + + find "$dir" -type f \( -name "*.sh" -o -name "*.bash" \) 2>/dev/null \ + | sort \ + | while IFS= read -r script; do + if [[ -n "$exclude_file" && "$script" == "$exclude_file" ]]; then + continue fi + if [[ -x "$script" || "$script" == *.sh || "$script" == *.bash ]]; then + echo "$script" + fi + done +} + +run_script() { + local script_path="$1" + + if [[ ! -f "$script_path" ]]; then + echo "No se encontró: $script_path" + return + fi + + echo + echo "Ejecutando: $script_path" + echo "----------------------------------------------" + bash "$script_path" + echo "----------------------------------------------" + echo + read -r -p "Presiona Enter para continuar..." _ +} + +show_category_menu() { + local category_name="$1" + local category_dir="$2" + local exclude_file="${3:-}" + + while true; do + mapfile -t scripts < <(list_scripts "$category_dir" "$exclude_file") + + echo + echo "=== $category_name ===" + + if [[ ${#scripts[@]} -eq 0 ]]; then + echo "No hay scripts disponibles en esta categoría." + read -r -p "Presiona Enter para volver..." _ + return + fi + + for i in "${!scripts[@]}"; do + relative_path="${scripts[$i]#"$ROOT_DIR"/}" + printf "%2d) %s\n" "$((i + 1))" "$relative_path" + done + echo " 0) Volver" + + read -r -p "Selecciona una opción: " choice + + if [[ "$choice" == "0" ]]; then + return + fi + + if [[ "$choice" =~ ^[0-9]+$ ]] && (( choice >= 1 && choice <= ${#scripts[@]} )); then + run_script "${scripts[$((choice - 1))]}" else - echo "El número de carpeta '$selection' no es válido." + echo "Opción inválida." fi -done + done +} + +main_menu() { + while true; do + print_header + echo "1) Instalar dependencias base (recomendado)" + echo "2) Menú de Sistema" + echo "3) Menú de Red" + echo "4) Menú de Utilidades" + echo "5) Menú LAMP" + echo "0) Salir" + echo + + read -r -p "Elige una opción: " option + + case "$option" in + 1) run_script "$DEPENDENCY_SCRIPT" ;; + 2) show_category_menu "Sistema" "$SYSTEM_DIR" "$DEPENDENCY_SCRIPT" ;; + 3) show_category_menu "Red" "$NETWORK_DIR" ;; + 4) show_category_menu "Utilidades" "$UTILS_DIR" ;; + 5) show_category_menu "LAMP" "$LAMP_DIR" ;; + 0) echo "Saliendo."; exit 0 ;; + *) echo "Opción inválida." ;; + esac + done +} + +main_menu diff --git a/scripts/network/extractPorts.sh b/network/extractPorts.sh similarity index 100% rename from scripts/network/extractPorts.sh rename to network/extractPorts.sh diff --git a/scripts/network/localIp.sh b/network/localIp.sh similarity index 100% rename from scripts/network/localIp.sh rename to network/localIp.sh diff --git a/scripts/network/macAddr.sh b/network/macAddr.sh similarity index 100% rename from scripts/network/macAddr.sh rename to network/macAddr.sh diff --git a/scripts/network/publicIp.sh b/network/publicIp.sh similarity index 100% rename from scripts/network/publicIp.sh rename to network/publicIp.sh diff --git a/scripts/system/acelerateManjaro.sh b/system/acelerateManjaro.sh similarity index 100% rename from scripts/system/acelerateManjaro.sh rename to system/acelerateManjaro.sh diff --git a/scripts/system/addRepoVisualStudio.sh b/system/addRepoVisualStudio.sh similarity index 100% rename from scripts/system/addRepoVisualStudio.sh rename to system/addRepoVisualStudio.sh diff --git a/scripts/system/build-manjaro-kde.sh b/system/build-manjaro-kde.sh similarity index 100% rename from scripts/system/build-manjaro-kde.sh rename to system/build-manjaro-kde.sh diff --git a/scripts/system/configura.sh b/system/configura.sh similarity index 100% rename from scripts/system/configura.sh rename to system/configura.sh diff --git a/scripts/system/instalacion_paquetes.sh b/system/instalacion_paquetes.sh similarity index 100% rename from scripts/system/instalacion_paquetes.sh rename to system/instalacion_paquetes.sh diff --git a/scripts/system/install-samba.sh b/system/install-samba.sh similarity index 100% rename from scripts/system/install-samba.sh rename to system/install-samba.sh diff --git a/scripts/system/installOhMyzsh.sh b/system/installOhMyzsh.sh similarity index 100% rename from scripts/system/installOhMyzsh.sh rename to system/installOhMyzsh.sh diff --git a/scripts/system/install_brew.sh b/system/install_brew.sh similarity index 100% rename from scripts/system/install_brew.sh rename to system/install_brew.sh diff --git a/system/install_dependencies.sh b/system/install_dependencies.sh new file mode 100755 index 0000000..c3115eb --- /dev/null +++ b/system/install_dependencies.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env bash + +set -euo pipefail + +SUDO="" +if [[ ${EUID:-$(id -u)} -ne 0 ]]; then + SUDO="sudo" +fi + +detect_manager() { + if command -v pacman >/dev/null 2>&1; then + echo "pacman" + elif command -v apt-get >/dev/null 2>&1; then + echo "apt" + elif command -v dnf >/dev/null 2>&1; then + echo "dnf" + elif command -v zypper >/dev/null 2>&1; then + echo "zypper" + else + echo "" + fi +} + +is_arch_like() { + if [[ -f /etc/os-release ]]; then + . /etc/os-release + [[ "${ID:-}" =~ ^(arch|manjaro)$ ]] || [[ "${ID_LIKE:-}" == *"arch"* ]] + else + return 1 + fi +} + +install_with_pacman() { + local packages=( + bash coreutils grep sed gawk findutils + curl wget git openssh + nmap dialog zenity fzf + net-tools iproute2 + python python-pip + ) + + if is_arch_like; then + packages+=(base-devel) + fi + + echo "Instalando dependencias con pacman..." + $SUDO pacman -Sy --needed --noconfirm "${packages[@]}" +} + +install_with_apt() { + local packages=( + bash coreutils grep sed gawk findutils + curl wget git openssh-client + nmap dialog zenity fzf + net-tools iproute2 + python3 python3-pip + ) + + echo "Instalando dependencias con apt..." + $SUDO apt-get update + $SUDO apt-get install -y "${packages[@]}" +} + +install_with_dnf() { + local packages=( + bash coreutils grep sed gawk findutils + curl wget git openssh-clients + nmap dialog zenity fzf + net-tools iproute + python3 python3-pip + ) + + echo "Instalando dependencias con dnf..." + $SUDO dnf install -y "${packages[@]}" +} + +install_with_zypper() { + local packages=( + bash coreutils grep sed gawk findutils + curl wget git openssh + nmap dialog zenity fzf + net-tools iproute2 + python3 python3-pip + ) + + echo "Instalando dependencias con zypper..." + $SUDO zypper --non-interactive install "${packages[@]}" +} + +main() { + local manager + manager="$(detect_manager)" + + if [[ -z "$manager" ]]; then + echo "No se encontró un gestor de paquetes soportado (pacman/apt/dnf/zypper)." + exit 1 + fi + + case "$manager" in + pacman) install_with_pacman ;; + apt) install_with_apt ;; + dnf) install_with_dnf ;; + zypper) install_with_zypper ;; + *) + echo "Gestor de paquetes no soportado: $manager" + exit 1 + ;; + esac + + echo + echo "Dependencias base instaladas correctamente." +} + +main "$@" diff --git a/scripts/system/killAuto.sh b/system/killAuto.sh similarity index 100% rename from scripts/system/killAuto.sh rename to system/killAuto.sh diff --git a/scripts/system/manage_services.sh b/system/manage_services.sh similarity index 100% rename from scripts/system/manage_services.sh rename to system/manage_services.sh diff --git a/scripts/system/manjaro_self_install/exec/config_install.sh b/system/manjaro_self_install/exec/config_install.sh similarity index 100% rename from scripts/system/manjaro_self_install/exec/config_install.sh rename to system/manjaro_self_install/exec/config_install.sh diff --git a/scripts/system/manjaro_self_install/install.sh b/system/manjaro_self_install/install.sh similarity index 100% rename from scripts/system/manjaro_self_install/install.sh rename to system/manjaro_self_install/install.sh diff --git a/system/servicios/zenity-service/app/gestor_servicios.sh b/system/servicios/zenity-service/app/gestor_servicios.sh new file mode 100755 index 0000000..5ae8ace --- /dev/null +++ b/system/servicios/zenity-service/app/gestor_servicios.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +if ! sudo -v; then + zenity --error --title="Error" --text="No se pudo validar sudo. La aplicación se cerrará." + exit 1 +fi + +# Lista de servicios +servicios=("ModemManager" "packagekit" "avahi-daemon" "colord" "nmb" "smb" "power-profiles-daemon" "rtkit-daemon" "NetworkManager-wait-online" "cups-browsed" "bluetooth" "wpa_supplicant" "org.cups.cupsd" "httpd" "webmin" "sshd") + +# Función para obtener el estado de un servicio +get_status() { + local servicio=$1 + if systemctl is-active --quiet "$servicio.service"; then + echo "Encendido" + else + echo "Apagado" + fi +} + +# Crear la interfaz gráfica +while true; do + # Crear una lista de opciones para zenity + opciones=("Encender todos" "Acción global" "Apagar todos" "Acción global" "Habilitar todos" "Acción global" "Deshabilitar todos" "Acción global") + for servicio in "${servicios[@]}"; do + estado=$(get_status "$servicio") + opciones+=("$servicio" "$estado") + done + + # Mostrar la interfaz gráfica con una ventana más grande + seleccion=$(zenity --list --title="Gestión de Servicios" --column="Servicio" --column="Estado" "${opciones[@]}" --extra-button="Salir" --width=800 --height=600) + + # Si el usuario selecciona "Salir", salir del bucle + if [ "$seleccion" == "Salir" ]; then + break + fi + + # Si el usuario selecciona "Encender todos" + if [ "$seleccion" == "Encender todos" ]; then + for servicio in "${servicios[@]}"; do + sudo systemctl start "$servicio.service" + done + zenity --info --title="Encender todos" --text="Todos los servicios han sido encendidos." + continue + fi + + # Si el usuario selecciona "Apagar todos" + if [ "$seleccion" == "Apagar todos" ]; then + for servicio in "${servicios[@]}"; do + sudo systemctl stop "$servicio.service" + done + zenity --info --title="Apagar todos" --text="Todos los servicios han sido apagados." + continue + fi + + # Si el usuario selecciona "Habilitar todos" + if [ "$seleccion" == "Habilitar todos" ]; then + for servicio in "${servicios[@]}"; do + sudo systemctl enable "$servicio.service" + done + zenity --info --title="Habilitar todos" --text="Todos los servicios han sido habilitados." + continue + fi + + # Si el usuario selecciona "Deshabilitar todos" + if [ "$seleccion" == "Deshabilitar todos" ]; then + for servicio in "${servicios[@]}"; do + sudo systemctl disable "$servicio.service" + done + zenity --info --title="Deshabilitar todos" --text="Todos los servicios han sido deshabilitados." + continue + fi + + # Si el usuario selecciona un servicio, mostrar opciones para iniciar/detener/habilitar/deshabilitar + if [ -n "$seleccion" ]; then + accion=$(zenity --list --title="Acción para $seleccion" --column="Acción" "Iniciar" "Detener" "Habilitar" "Deshabilitar" --width=600 --height=400) + if [ "$accion" == "Iniciar" ]; then + sudo systemctl start "$seleccion.service" + elif [ "$accion" == "Detener" ]; then + sudo systemctl stop "$seleccion.service" + elif [ "$accion" == "Habilitar" ]; then + sudo systemctl enable "$seleccion.service" + elif [ "$accion" == "Deshabilitar" ]; then + sudo systemctl disable "$seleccion.service" + fi + fi +done diff --git a/system/servicios/zenity-service/app/scripts/start_ModemManager.sh b/system/servicios/zenity-service/app/scripts/start_ModemManager.sh new file mode 100755 index 0000000..f16fc9f --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_ModemManager.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start ModemManager.service diff --git a/system/servicios/zenity-service/app/scripts/start_NetworkManager-wait-online.sh b/system/servicios/zenity-service/app/scripts/start_NetworkManager-wait-online.sh new file mode 100755 index 0000000..4494e12 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_NetworkManager-wait-online.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start NetworkManager-wait-online.service diff --git a/system/servicios/zenity-service/app/scripts/start_avahi-daemon.sh b/system/servicios/zenity-service/app/scripts/start_avahi-daemon.sh new file mode 100755 index 0000000..1b14566 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_avahi-daemon.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start avahi-daemon.service diff --git a/system/servicios/zenity-service/app/scripts/start_bluetooth.sh b/system/servicios/zenity-service/app/scripts/start_bluetooth.sh new file mode 100755 index 0000000..e508a94 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_bluetooth.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start bluetooth.service diff --git a/system/servicios/zenity-service/app/scripts/start_colord.sh b/system/servicios/zenity-service/app/scripts/start_colord.sh new file mode 100755 index 0000000..97dace8 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_colord.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start colord.service diff --git a/system/servicios/zenity-service/app/scripts/start_cups-browsed.sh b/system/servicios/zenity-service/app/scripts/start_cups-browsed.sh new file mode 100755 index 0000000..2802c48 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_cups-browsed.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start cups-browsed.service diff --git a/system/servicios/zenity-service/app/scripts/start_httpd.sh b/system/servicios/zenity-service/app/scripts/start_httpd.sh new file mode 100755 index 0000000..f0e510d --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_httpd.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start httpd.service diff --git a/system/servicios/zenity-service/app/scripts/start_nmb.sh b/system/servicios/zenity-service/app/scripts/start_nmb.sh new file mode 100755 index 0000000..52b74e8 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_nmb.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start nmb.service diff --git a/system/servicios/zenity-service/app/scripts/start_org.cups.cupsd.sh b/system/servicios/zenity-service/app/scripts/start_org.cups.cupsd.sh new file mode 100755 index 0000000..adb3643 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_org.cups.cupsd.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start org.cups.cupsd.service diff --git a/system/servicios/zenity-service/app/scripts/start_packagekit.sh b/system/servicios/zenity-service/app/scripts/start_packagekit.sh new file mode 100755 index 0000000..de9ac41 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_packagekit.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start packagekit.service diff --git a/system/servicios/zenity-service/app/scripts/start_power-profiles-daemon.sh b/system/servicios/zenity-service/app/scripts/start_power-profiles-daemon.sh new file mode 100755 index 0000000..a919106 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_power-profiles-daemon.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start power-profiles-daemon.service diff --git a/system/servicios/zenity-service/app/scripts/start_rtkit-daemon.sh b/system/servicios/zenity-service/app/scripts/start_rtkit-daemon.sh new file mode 100755 index 0000000..766a600 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_rtkit-daemon.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start rtkit-daemon.service diff --git a/system/servicios/zenity-service/app/scripts/start_smb.sh b/system/servicios/zenity-service/app/scripts/start_smb.sh new file mode 100755 index 0000000..49969ac --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_smb.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start smb.service diff --git a/system/servicios/zenity-service/app/scripts/start_sshd.sh b/system/servicios/zenity-service/app/scripts/start_sshd.sh new file mode 100755 index 0000000..f42eaf8 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_sshd.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start sshd.service diff --git a/system/servicios/zenity-service/app/scripts/start_webmin.sh b/system/servicios/zenity-service/app/scripts/start_webmin.sh new file mode 100755 index 0000000..4c11c0f --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_webmin.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start webmin.service diff --git a/system/servicios/zenity-service/app/scripts/start_wpa_supplicant.sh b/system/servicios/zenity-service/app/scripts/start_wpa_supplicant.sh new file mode 100755 index 0000000..ce673cc --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/start_wpa_supplicant.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl start wpa_supplicant.service diff --git a/system/servicios/zenity-service/app/scripts/stop_ModemManager.sh b/system/servicios/zenity-service/app/scripts/stop_ModemManager.sh new file mode 100755 index 0000000..4ef2be8 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_ModemManager.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop ModemManager.service diff --git a/system/servicios/zenity-service/app/scripts/stop_NetworkManager-wait-online.sh b/system/servicios/zenity-service/app/scripts/stop_NetworkManager-wait-online.sh new file mode 100755 index 0000000..dd8c45e --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_NetworkManager-wait-online.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop NetworkManager-wait-online.service diff --git a/system/servicios/zenity-service/app/scripts/stop_avahi-daemon.sh b/system/servicios/zenity-service/app/scripts/stop_avahi-daemon.sh new file mode 100755 index 0000000..2055ce4 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_avahi-daemon.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop avahi-daemon.service diff --git a/system/servicios/zenity-service/app/scripts/stop_bluetooth.sh b/system/servicios/zenity-service/app/scripts/stop_bluetooth.sh new file mode 100755 index 0000000..65f7e19 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_bluetooth.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop bluetooth.service diff --git a/system/servicios/zenity-service/app/scripts/stop_colord.sh b/system/servicios/zenity-service/app/scripts/stop_colord.sh new file mode 100755 index 0000000..60873aa --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_colord.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop colord.service diff --git a/system/servicios/zenity-service/app/scripts/stop_cups-browsed.sh b/system/servicios/zenity-service/app/scripts/stop_cups-browsed.sh new file mode 100755 index 0000000..25227f7 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_cups-browsed.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop cups-browsed.service diff --git a/system/servicios/zenity-service/app/scripts/stop_httpd.sh b/system/servicios/zenity-service/app/scripts/stop_httpd.sh new file mode 100755 index 0000000..d8efebe --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_httpd.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop httpd.service diff --git a/system/servicios/zenity-service/app/scripts/stop_nmb.sh b/system/servicios/zenity-service/app/scripts/stop_nmb.sh new file mode 100755 index 0000000..1567b06 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_nmb.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop nmb.service diff --git a/system/servicios/zenity-service/app/scripts/stop_org.cups.cupsd.sh b/system/servicios/zenity-service/app/scripts/stop_org.cups.cupsd.sh new file mode 100755 index 0000000..019a32f --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_org.cups.cupsd.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop org.cups.cupsd.service diff --git a/system/servicios/zenity-service/app/scripts/stop_packagekit.sh b/system/servicios/zenity-service/app/scripts/stop_packagekit.sh new file mode 100755 index 0000000..37d169c --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_packagekit.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop packagekit.service diff --git a/system/servicios/zenity-service/app/scripts/stop_power-profiles-daemon.sh b/system/servicios/zenity-service/app/scripts/stop_power-profiles-daemon.sh new file mode 100755 index 0000000..ff405ad --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_power-profiles-daemon.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop power-profiles-daemon.service diff --git a/system/servicios/zenity-service/app/scripts/stop_rtkit-daemon.sh b/system/servicios/zenity-service/app/scripts/stop_rtkit-daemon.sh new file mode 100755 index 0000000..ca2ed45 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_rtkit-daemon.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop rtkit-daemon.service diff --git a/system/servicios/zenity-service/app/scripts/stop_smb.sh b/system/servicios/zenity-service/app/scripts/stop_smb.sh new file mode 100755 index 0000000..93eec66 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_smb.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop smb.service diff --git a/system/servicios/zenity-service/app/scripts/stop_sshd.sh b/system/servicios/zenity-service/app/scripts/stop_sshd.sh new file mode 100755 index 0000000..7da7904 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_sshd.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop sshd.service diff --git a/system/servicios/zenity-service/app/scripts/stop_webmin.sh b/system/servicios/zenity-service/app/scripts/stop_webmin.sh new file mode 100755 index 0000000..e3e1689 --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_webmin.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop webmin.service diff --git a/system/servicios/zenity-service/app/scripts/stop_wpa_supplicant.sh b/system/servicios/zenity-service/app/scripts/stop_wpa_supplicant.sh new file mode 100755 index 0000000..ef2bf6a --- /dev/null +++ b/system/servicios/zenity-service/app/scripts/stop_wpa_supplicant.sh @@ -0,0 +1,2 @@ +#!/bin/bash +sudo systemctl stop wpa_supplicant.service diff --git a/system/servicios/zenity-service/configurar_servicios.sh b/system/servicios/zenity-service/configurar_servicios.sh new file mode 100755 index 0000000..f476475 --- /dev/null +++ b/system/servicios/zenity-service/configurar_servicios.sh @@ -0,0 +1,161 @@ +#!/bin/bash +# Variables para tamaños de ventanas de Zenity +ZENITY_LIST_WIDTH=800 +ZENITY_LIST_HEIGHT=600 +ZENITY_ACTION_WIDTH=600 +ZENITY_ACTION_HEIGHT=400 +# Directorio donde se almacenarán los scripts +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/app" && pwd)" +SCRIPTS_SUBDIR="$SCRIPT_DIR/scripts" + +# Verificar si el directorio de scripts existe, y crearlo si no existe +if [ ! -d "$SCRIPTS_SUBDIR" ]; then + mkdir -p "$SCRIPTS_SUBDIR" || { echo "Error: No se pudo crear el directorio $SCRIPTS_SUBDIR."; exit 1; } + echo "Directorio $SCRIPTS_SUBDIR creado." +fi + +# Lista de servicios +servicios=("ModemManager" "packagekit" "avahi-daemon" "colord" "nmb" "smb" "power-profiles-daemon" "rtkit-daemon" "NetworkManager-wait-online" "cups-browsed" "bluetooth" "wpa_supplicant" "org.cups.cupsd" "httpd" "webmin" "sshd") + +# Crear los scripts de inicio/detención para cada servicio +for servicio in "${servicios[@]}"; do + # Script de inicio + cat < "$SCRIPTS_SUBDIR/start_${servicio}.sh" +#!/bin/bash +sudo systemctl start ${servicio}.service +EOF + + # Script de detención + cat < "$SCRIPTS_SUBDIR/stop_${servicio}.sh" +#!/bin/bash +sudo systemctl stop ${servicio}.service +EOF + + echo "Scripts para $servicio creados en $SCRIPTS_SUBDIR." +done + +# Hacer que los scripts sean ejecutables +chmod +x "$SCRIPTS_SUBDIR"/start_*.sh "$SCRIPTS_SUBDIR"/stop_*.sh || { echo "Error: No se pudieron asignar permisos ejecutables a los scripts."; exit 1; } +echo "Scripts de inicio/detención hechos ejecutables." + + + +# Crear el script principal de gestión de servicios +cat < "$SCRIPT_DIR/gestor_servicios.sh" +#!/bin/bash + +# Validar credenciales sudo al inicio de la aplicación +if ! sudo -v; then + zenity --error --title="Error" --text="No se pudo validar sudo. La aplicación se cerrará." + exit 1 +fi + +# Lista de servicios +servicios=("ModemManager" "packagekit" "avahi-daemon" "colord" "nmb" "smb" "power-profiles-daemon" "rtkit-daemon" "NetworkManager-wait-online" "cups-browsed" "bluetooth" "wpa_supplicant" "org.cups.cupsd" "httpd" "webmin" "sshd") + +# Función para obtener el estado de un servicio +get_status() { + local servicio=\$1 + if systemctl is-active --quiet "\$servicio.service"; then + echo "Encendido" + else + echo "Apagado" + fi +} + +# Crear la interfaz gráfica +while true; do + # Crear una lista de opciones para zenity + opciones=("Encender todos" "Acción global" "Apagar todos" "Acción global" "Habilitar todos" "Acción global" "Deshabilitar todos" "Acción global") + for servicio in "\${servicios[@]}"; do + estado=\$(get_status "\$servicio") + opciones+=("\$servicio" "\$estado") + done + + # Mostrar la interfaz gráfica con una ventana más grande + seleccion=\$(zenity --list --title="Gestión de Servicios" --column="Servicio" --column="Estado" "\${opciones[@]}" --extra-button="Salir" --width=$ZENITY_LIST_WIDTH --height=$ZENITY_LIST_HEIGHT) + + # Si el usuario selecciona "Salir", salir del bucle + if [ "\$seleccion" == "Salir" ]; then + break + fi + + # Si el usuario selecciona "Encender todos" + if [ "\$seleccion" == "Encender todos" ]; then + for servicio in "\${servicios[@]}"; do + sudo systemctl start "\$servicio.service" + done + zenity --info --title="Encender todos" --text="Todos los servicios han sido encendidos." + continue + fi + + # Si el usuario selecciona "Apagar todos" + if [ "\$seleccion" == "Apagar todos" ]; then + for servicio in "\${servicios[@]}"; do + sudo systemctl stop "\$servicio.service" + done + zenity --info --title="Apagar todos" --text="Todos los servicios han sido apagados." + continue + fi + + # Si el usuario selecciona "Habilitar todos" + if [ "\$seleccion" == "Habilitar todos" ]; then + for servicio in "\${servicios[@]}"; do + sudo systemctl enable "\$servicio.service" + done + zenity --info --title="Habilitar todos" --text="Todos los servicios han sido habilitados." + continue + fi + + # Si el usuario selecciona "Deshabilitar todos" + if [ "\$seleccion" == "Deshabilitar todos" ]; then + for servicio in "\${servicios[@]}"; do + sudo systemctl disable "\$servicio.service" + done + zenity --info --title="Deshabilitar todos" --text="Todos los servicios han sido deshabilitados." + continue + fi + + # Si el usuario selecciona un servicio, mostrar opciones para iniciar/detener/habilitar/deshabilitar + if [ -n "\$seleccion" ]; then + accion=\$(zenity --list --title="Acción para \$seleccion" --column="Acción" "Iniciar" "Detener" "Habilitar" "Deshabilitar" --width=$ZENITY_ACTION_WIDTH --height=$ZENITY_ACTION_HEIGHT) + if [ "\$accion" == "Iniciar" ]; then + sudo systemctl start "\$seleccion.service" + elif [ "\$accion" == "Detener" ]; then + sudo systemctl stop "\$seleccion.service" + elif [ "\$accion" == "Habilitar" ]; then + sudo systemctl enable "\$seleccion.service" + elif [ "\$accion" == "Deshabilitar" ]; then + sudo systemctl disable "\$seleccion.service" + fi + fi +done +EOF + +# Hacer que el script principal sea ejecutable +chmod +x "$SCRIPT_DIR/gestor_servicios.sh" || { echo "Error: No se pudo asignar permisos ejecutables al script principal."; exit 1; } +echo "Script principal de gestión de servicios creado y hecho ejecutable." + +# Crear archivo .desktop para la aplicación de gestión de servicios +DESKTOP_DIR="$HOME/.local/share/applications" +if [ ! -d "$DESKTOP_DIR" ]; then + mkdir -p "$DESKTOP_DIR" || { echo "Error: No se pudo crear el directorio $DESKTOP_DIR."; exit 1; } + echo "Directorio $DESKTOP_DIR creado." +fi + +cat < "$DESKTOP_DIR/gestor_servicios.desktop" +[Desktop Entry] +Type=Application +Name=Gestor de Servicios +Exec=$SCRIPT_DIR/gestor_servicios.sh +Icon=system-run +Comment=Gestiona los servicios del sistema +EOF + +# Asegurar que el archivo .desktop sea ejecutable +chmod +x "$DESKTOP_DIR/gestor_servicios.desktop" || { echo "Error: No se pudo asignar permisos ejecutables al archivo .desktop."; exit 1; } +echo "Archivo .desktop para la aplicación de gestión de servicios creado en $DESKTOP_DIR." + +# Mensaje final +echo "¡Configuración completada!" +echo "Puedes ejecutar la aplicación 'Gestor de Servicios' desde el menú de aplicaciones." diff --git a/scripts/system/setup_autoupdate.sh b/system/setup_autoupdate.sh similarity index 100% rename from scripts/system/setup_autoupdate.sh rename to system/setup_autoupdate.sh diff --git a/scripts/system/setup_manjaro_custom.sh b/system/setup_manjaro_custom.sh similarity index 100% rename from scripts/system/setup_manjaro_custom.sh rename to system/setup_manjaro_custom.sh diff --git a/scripts/utils/buscar_eliminar_duplicados.sh b/utils/buscar_eliminar_duplicados.sh similarity index 100% rename from scripts/utils/buscar_eliminar_duplicados.sh rename to utils/buscar_eliminar_duplicados.sh diff --git a/scripts/utils/clonar_repos_gh.sh b/utils/clonar_repos_gh.sh similarity index 100% rename from scripts/utils/clonar_repos_gh.sh rename to utils/clonar_repos_gh.sh diff --git a/scripts/utils/clonar_repos_gh_full.sh b/utils/clonar_repos_gh_full.sh similarity index 100% rename from scripts/utils/clonar_repos_gh_full.sh rename to utils/clonar_repos_gh_full.sh diff --git a/scripts/utils/clone.sh b/utils/clone.sh similarity index 100% rename from scripts/utils/clone.sh rename to utils/clone.sh diff --git a/scripts/utils/crear_password.sh b/utils/crear_password.sh similarity index 100% rename from scripts/utils/crear_password.sh rename to utils/crear_password.sh diff --git a/scripts/utils/duplicate.py b/utils/duplicate.py similarity index 100% rename from scripts/utils/duplicate.py rename to utils/duplicate.py diff --git a/scripts/utils/eliminajsonyvacios.py b/utils/eliminajsonyvacios.py similarity index 100% rename from scripts/utils/eliminajsonyvacios.py rename to utils/eliminajsonyvacios.py diff --git a/scripts/utils/find_man.sh b/utils/find_man.sh similarity index 100% rename from scripts/utils/find_man.sh rename to utils/find_man.sh diff --git a/scripts/utils/find_nd_extrct.sh b/utils/find_nd_extrct.sh similarity index 100% rename from scripts/utils/find_nd_extrct.sh rename to utils/find_nd_extrct.sh diff --git a/scripts/utils/fzf-lovely.sh b/utils/fzf-lovely.sh similarity index 100% rename from scripts/utils/fzf-lovely.sh rename to utils/fzf-lovely.sh diff --git a/scripts/utils/juego.sh b/utils/juego.sh similarity index 100% rename from scripts/utils/juego.sh rename to utils/juego.sh diff --git a/scripts/utils/juegomultiplechoice.sh b/utils/juegomultiplechoice.sh similarity index 100% rename from scripts/utils/juegomultiplechoice.sh rename to utils/juegomultiplechoice.sh diff --git a/scripts/utils/laranew.sh b/utils/laranew.sh similarity index 100% rename from scripts/utils/laranew.sh rename to utils/laranew.sh diff --git a/utils/legacy/main_menu.sh b/utils/legacy/main_menu.sh new file mode 100644 index 0000000..313728a --- /dev/null +++ b/utils/legacy/main_menu.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# Ruta base del proyecto +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)" +BASE_DIR="$ROOT_DIR" + +handle_interrupt() { + echo + echo "Interrupción detectada. Saliendo..." + exit 130 +} + +trap handle_interrupt SIGINT SIGTERM + +# Función para mostrar el menú principal +show_main_menu() { + echo "Seleccione una categoría:" + echo "1) System" + echo "2) Network" + echo "3) Utilities" + echo "0) Salir" + read -p "Ingrese una opción: " category +} + +# Función para listar y ejecutar scripts en una categoría +list_and_execute_scripts() { + local category_dir="$1" + local scripts=("$category_dir"/*.sh) + + if [ ${#scripts[@]} -eq 0 ]; then + echo "No hay scripts disponibles en esta categoría." + return + fi + + echo "Seleccione un script para ejecutar:" + for i in "${!scripts[@]}"; do + echo "$((i + 1))) $(basename "${scripts[$i]}")" + done + echo "0) Volver al menú principal" + read -p "Ingrese una opción: " script_choice + + if [ "$script_choice" -eq 0 ]; then + return + elif [ "$script_choice" -ge 1 ] && [ "$script_choice" -le ${#scripts[@]} ]; then + bash "${scripts[$((script_choice - 1))]}" + else + echo "Opción no válida." + fi +} + +# Menú principal +while true; do + show_main_menu + case $category in + 1) list_and_execute_scripts "$BASE_DIR/system" ;; + 2) list_and_execute_scripts "$BASE_DIR/network" ;; + 3) list_and_execute_scripts "$BASE_DIR/utils" ;; + 0) echo "Saliendo..."; exit 0 ;; + *) echo "Opción no válida." ;; + esac +done diff --git a/scripts/utils/limpiarNumerosLineas.sh b/utils/limpiarNumerosLineas.sh similarity index 100% rename from scripts/utils/limpiarNumerosLineas.sh rename to utils/limpiarNumerosLineas.sh diff --git a/scripts/utils/manColor.sh b/utils/manColor.sh similarity index 100% rename from scripts/utils/manColor.sh rename to utils/manColor.sh diff --git a/scripts/utils/memoria.sh b/utils/memoria.sh similarity index 100% rename from scripts/utils/memoria.sh rename to utils/memoria.sh diff --git a/scripts/utils/menu b/utils/menu similarity index 100% rename from scripts/utils/menu rename to utils/menu diff --git a/scripts/utils/menudialog b/utils/menudialog similarity index 100% rename from scripts/utils/menudialog rename to utils/menudialog diff --git a/scripts/utils/menuzenity b/utils/menuzenity similarity index 100% rename from scripts/utils/menuzenity rename to utils/menuzenity diff --git a/scripts/utils/ngrok/installNgrok.sh b/utils/ngrok/installNgrok.sh similarity index 100% rename from scripts/utils/ngrok/installNgrok.sh rename to utils/ngrok/installNgrok.sh diff --git a/scripts/utils/notify.sh b/utils/notify.sh similarity index 100% rename from scripts/utils/notify.sh rename to utils/notify.sh diff --git a/scripts/utils/pastebinInit.sh b/utils/pastebinInit.sh similarity index 100% rename from scripts/utils/pastebinInit.sh rename to utils/pastebinInit.sh diff --git a/scripts/utils/pathadd.sh b/utils/pathadd.sh similarity index 100% rename from scripts/utils/pathadd.sh rename to utils/pathadd.sh diff --git a/scripts/utils/phpserver.sh b/utils/phpserver.sh similarity index 100% rename from scripts/utils/phpserver.sh rename to utils/phpserver.sh diff --git a/scripts/utils/react/backend/mern/crearserver.sh b/utils/react/backend/mern/crearserver.sh similarity index 100% rename from scripts/utils/react/backend/mern/crearserver.sh rename to utils/react/backend/mern/crearserver.sh diff --git a/scripts/utils/reload.sh b/utils/reload.sh similarity index 100% rename from scripts/utils/reload.sh rename to utils/reload.sh diff --git a/scripts/utils/scanner.sh b/utils/scanner.sh similarity index 100% rename from scripts/utils/scanner.sh rename to utils/scanner.sh diff --git a/scripts/utils/scannerdialog.sh b/utils/scannerdialog.sh similarity index 100% rename from scripts/utils/scannerdialog.sh rename to utils/scannerdialog.sh diff --git a/scripts/utils/script React vite v2.sh b/utils/script React vite v2.sh similarity index 100% rename from scripts/utils/script React vite v2.sh rename to utils/script React vite v2.sh diff --git a/scripts/utils/send_key_to_konsole.sh b/utils/send_key_to_konsole.sh similarity index 86% rename from scripts/utils/send_key_to_konsole.sh rename to utils/send_key_to_konsole.sh index 3c7eeec..96a6521 100755 --- a/scripts/utils/send_key_to_konsole.sh +++ b/utils/send_key_to_konsole.sh @@ -30,8 +30,14 @@ if [ -z "$TARGET_WINDOW_ID" ]; then exit 1 fi -# Función para manejar la señal de interrupción (Ctrl+C) -trap "echo 'Deteniendo el script...'; exit 0" SIGINT +# Función para manejar señales de interrupción/terminación +handle_interrupt() { + echo + echo "Deteniendo el script..." + exit 130 +} + +trap handle_interrupt SIGINT SIGTERM # Informar al usuario echo "Enviando la secuencia de teclas '$SEQUENCE' a la ventana $TARGET_WINDOW_ID cada $DELAY milisegundos." diff --git a/scripts/utils/send_keys_to_console.sh b/utils/send_keys_to_console.sh similarity index 87% rename from scripts/utils/send_keys_to_console.sh rename to utils/send_keys_to_console.sh index 457e7db..97dcf09 100755 --- a/scripts/utils/send_keys_to_console.sh +++ b/utils/send_keys_to_console.sh @@ -36,8 +36,14 @@ if [ -z "$TARGET_WINDOW_ID" ]; then exit 1 fi -# Función para manejar la señal de interrupción (Ctrl+C) -trap "echo 'Deteniendo el script...'; exit 0" SIGINT +# Función para manejar señales de interrupción/terminación +handle_interrupt() { + echo + echo "Deteniendo el script..." + exit 130 +} + +trap handle_interrupt SIGINT SIGTERM # Informar al usuario echo "Enviando el comando '$COMMAND' a la ventana $TARGET_WINDOW_ID cada $DELAY milisegundos." diff --git a/scripts/utils/sensitive_encfs_decrypt/encfs decrypt/contrasenas.txt b/utils/sensitive_encfs_decrypt/encfs decrypt/contrasenas.txt similarity index 100% rename from scripts/utils/sensitive_encfs_decrypt/encfs decrypt/contrasenas.txt rename to utils/sensitive_encfs_decrypt/encfs decrypt/contrasenas.txt diff --git a/scripts/utils/sensitive_encfs_decrypt/encfs decrypt/decrypt.bash b/utils/sensitive_encfs_decrypt/encfs decrypt/decrypt.bash similarity index 100% rename from scripts/utils/sensitive_encfs_decrypt/encfs decrypt/decrypt.bash rename to utils/sensitive_encfs_decrypt/encfs decrypt/decrypt.bash diff --git a/scripts/utils/sensitive_encfs_decrypt/encfs decrypt/decrypt_file.sh b/utils/sensitive_encfs_decrypt/encfs decrypt/decrypt_file.sh similarity index 100% rename from scripts/utils/sensitive_encfs_decrypt/encfs decrypt/decrypt_file.sh rename to utils/sensitive_encfs_decrypt/encfs decrypt/decrypt_file.sh diff --git a/scripts/utils/zshstats.sh b/utils/zshstats.sh similarity index 100% rename from scripts/utils/zshstats.sh rename to utils/zshstats.sh