Colección de Scripts Esenciales de Shell Bash para Administración de Sistemas Linux

Clasificado en Informática

Escrito el en español con un tamaño de 12,84 KB

#!/bin/bash
function amosaMenu () {
 echo "Información do sistema operativo actual"
 echo "Opcións:"
 echo "1. Data e hora actuáis"
 echo "2. Directorio actual e tamaño de mesmo"
 echo "3. Espazo ocupado e dispoñible nas diferentes particións"
 echo "4. Lista de HW detectado polo SO"
 echo "5. Configuración de rede e rutas establecidas"
 echo "6. Procesos executándose"
 echo "S. Saír"
 echo
 echo -n "Escolla unha opción: "
}

function faiAccion () {
    case $1 in
        1) echo -n "Data e hora actuáis:  "
           date +"%d/%m/%Y %H:%M:%S"
         ;;
        2) echo -n "Directorio actual $PWD e o seu tamaño actual é: "
           du -sh
 ;;
        3) echo "Espazo ocupado e dispoñible nas diferentes particións: "
           df -h
 ;;
        4) echo "Lista de HW: "
    lshw
         ;;
        5) echo "Configuración de rede e rutas establecidas: "
    ip a && ip r
         ;;
        6) echo "Procesos executándose: "
    ps -aux
         ;;
        S|s)
            echo "Ata logo!"
            return -1
         ;;
        *) echo "Opción $opción escollida non válida"
         ;;
    esac
    echo
}

opción=0
while [[ "$opción" != "S" ]]; do
   amosaMenu
   read opción
   if ! FaiAccion "$opción"; then
        opción="S"
   else
      read -s -p "Prema INTRO para continuar "
      clear
   fi
done


#!/bin/bash
seguir=true

while $seguir;do
 read -p "Introduza o nome dun ficheiro válido: " ficheiro
 if [ -f $ficheiro -a -r $ficheiro ]; then
  usuario=$(stat -c '%U' $ficheiro)
  grupo=$(stat -c '%G' $ficheiro)
  echo "O propietario é $usuario e o grupo asociado é $grupo"
  read -p "Introduce unha palabra para buscar no ficheiro: " palabra
  num=$(grep "$palabra" $ficheiro | wc -l)
  echo "A palabra $palabra aparece nun total de $num liñas do do ficheiro $ficheiro"

  aparece=$(cat -n $ficheiro | grep $palabra)
  echo "A palabra $palabra aparece $aparece veces no ficheiro."
  echo "O ficheiro $ficheiro ten: $(wc -c < $ficheiro) caracteres, $(wc -w < $ficheiro) palabras e $(wc -l < $ficheiro) liñas"
  seguir=false
 else
  echo "Introduce un ficheiro válido e con permisos de lectura."
 fi
done


#!/bin/bash

# Función para obter a información do directorio
getDirectoryInfo() {
    # Obter o propietario do directorio
    owner=$(stat -c '%U' "$1")
    echo "Propietario: $owner"

    # Obter o grupo do directorio
    group=$(stat -c '%G' "$1")
    echo "Grupo: $group"

    # Contar o número de elementos fillos (sen subdirectorios)
    children_count=$(find "$1" -maxdepth 1 -type f | wc -l)
    echo "Número de elementos fillos: $children_count"
}

# Loop para pedir o directorio ata que se introduza un válido
while true; do
    # Solicitar ao usuario que introduza o nome do directorio
    read -p "Introduce o nome dun directorio: " directory

    # Comprobar se o camiño é un directorio válido
    if [ -d "$directory" ]; then
        echo "Directorio válido: $directory"
        getDirectoryInfo "$directory"
        break # Saír do bucle cando se atope un directorio válido
    else
        echo "Non é un directorio válido. Téntao de novo."
    fi
done


#!/bin/bash

# Función para obter información sobre os grupos do usuario
getUserGroups() {
    # Obter o grupo principal do usuario
    primary_group=$(id -gn "$1")
    echo "Grupo principal: $primary_group"

    # Obter todos os grupos aos que o usuario pertence e eliminamos o grupo principal da lista
    all_groups=$(id -Gn "$1" | tr ' ' ',')
    # Removemos o grupo principal para listar só os secundarios
    secondary_groups=$(echo "$all_groups" | sed "s/$primary_group,//g")
    echo "Grupos secundarios: $secondary_groups"
}

# Solicitar o nome do usuario
read -p "Introduce o nome dun usuario: " username

# Comprobar se o usuario existe
if id "$username" &>/dev/null; then
    echo "O usuario '$username' existe."
    getUserGroups "$username"
else
    echo "O usuario '$username' non existe."
fi


#!/bin/bash

# Función para obter o ID do grupo e os usuarios que o teñen como grupo secundario
getGroupInfo() {
    local group_name="$1"
    
    # Obter o ID do grupo
    group_id=$(getent group "$group_name" | cut -d: -f3)
    if [ -z "$group_id" ]; then
        echo "O grupo '$group_name' non existe."
        return 1
    fi

    echo "ID do grupo: $group_id"

    # Obter usuarios que teñen este grupo como grupo secundario
    secondary_users=$(awk -F':' -v group="$group_name" '$1 != group && $4 ~ /(^|,)'$group_name'(,|$)/ {print $1}' /etc/group | tr '\n' ',')
    secondary_users=${secondary_users%,}  # Remové trailing comma
    echo "Usuarios con '$group_name' como grupo secundario: $secondary_users"
}

# Solicitar o nome do grupo
read -p "Introduce o nome dun grupo: " group_name

# Chamar a función co nome do grupo introducido
getGroupInfo "$group_name"


#!/bin/bash

while true; do
    read -p "Introduce o nome dun ficheiro: " file_path
    if [ -e "$file_path" ]; then
        echo "Ficheiro válido: $file_path"
        echo "Propietario: $(stat -c '%U' "$file_path")"
        echo "Grupo: $(stat -c '%G' "$file_path")"
        file_type=$(stat --format=%F "$file_path")
        echo "Tipo de ficheiro: $file_type"
        break
    else
        echo "O ficheiro '$file_path' non é válido. Téntao de novo."
    fi
done


#!/bin/bash

# Solicitar o nome completo do novo usuario
read -p "Introduce o nome completo do novo usuario: " full_name

# Solicitar o nome de usuario
read -p "Introduce o nome de usuario: " username

# Solicitar a ruta para o directorio home do usuario
read -p "Introduce a ruta para o directorio home do usuario: " home_dir

# Solicitar a shell que utilizará o usuario
read -p "Introduce a shell para o usuario (ex: /bin/bash): " user_shell

# Crear o usuario cos datos especificados
sudo useradd -c "$full_name" -d "$home_dir" -s "$user_shell" -m "$username" && echo "Usuario $username creado con éxito."

# Solicitar un contrasinal para o novo usuario e establecelo
echo "Agora debes estabelecer un contrasinal para o novo usuario."
sudo passwd "$username"

echo "O usuario $username foi creado correctamente con todos os detalles especificados."


#!/bin/bash

# Listar todos os procesos actuáis do sistema
echo "Listando todos os procesos actuáis do sistema..."
ps aux

# Solicitar ao usuario que indique un nome de usuario
read -p "Introduce un nome de usuario para comprobar: " username

# Comprobar se é un usuario válido do sistema
if getent passwd "$username" > /dev/null; then
    echo "O usuario '$username' é válido."
    # Contar cantos procesos corresponden ao usuario indicado
    process_count=$(ps -u "$username" --no-headers | wc -l)
    echo "O usuario '$username' ten $process_count procesos en execución."
else
    echo "Non se atopou ningún usuario chamado '$username'."
fi

# Preguntar se queremos ver os usuarios conectados
read -p "Querés ver os usuarios conectados? (s/n): " show_users
if [[ $show_users == "s" || $show_users == "S" ]]; then
    echo "Usuarios conectados ao sistema:"
    who
fi


#!/bin/bash

# Asegurarse de que o directorio /sysinfo existe
mkdir -p /sysinfo

# Definir o nome do ficheiro de log con data
log_file="/sysinfo/sysinfo-$(date '+%Y-%m-%d').Log"

# Almacenar información no ficheiro de log
{
    echo "Hora actual: $(date '+%H:%M:%S')"
    echo "Usuarios conectados ao sistema:"
    who
    echo "Información de permisos, propietario e grupo dos directorios persoais:"
    ls -ld /home/* | awk '{print $1, $3, $4, $9}'
    echo "Resumo de ocupación de /home:"
    du -sh /home/*
    echo "Información de ocupación dos sistemas de ficheiros montados no sistema:"
    df -h
    echo "Procesos en execución actualmente no sistema:"
    ps aux
} >> "$log_file"

echo "Información almacenada en $log_file"


#!/bin/bash

# Asegurarse de que o script é executado por root
if [ "$(id -u)" -ne 0 ]; then
    echo "Este script debe ser executado por root."
    exit 1
fi

# Comprobar se todos os parámetros necesarios foron proporcionados
if [ $# -ne 2 ]; then
    echo "Uso: $0 <operación> <usuario>"
    echo "Operacións válidas son:"
    echo "  a) Engadir o usuario ao sistema."
    echo "  b) Borrar o usuario do sistema."
    echo "  c) Copiar o directorio persoal do usuario en /backup."
    echo "  d) Mostrar os grupos do usuario."
    exit 1
fi

operación=$1
usuario=$2

case $operación in
    a)
        # Engade o usuario ao sistema
        useradd -m "$usuario" && echo "Usuario $usuario engadido ao sistema."
        ;;
    b)
        # Borra o usuario do sistema
        userdel -r "$usuario" && echo "Usuario $usuario borrado do sistema."
        ;;
    c)
        # Copia o directorio persoal do usuario en /backup
        if [ -d "/home/$usuario" ]; then
            mkdir -p /backup
            cp -a /home/"$usuario" /backup/ && echo "Directorio persoal de $usuario copiado a /backup."
        else
            echo "O directorio persoal do usuario non existe."
        fi
        ;;
    d)
        # Mostrá os grupos do usuario
        grupos=$(id -nG "$usuario")
        if [ -n "$grupos" ]; then
            echo "Grupos do usuario $usuario: $grupos"
        else
            echo "O usuario non ten grupos asignados ou non existe."
        fi
        ;;
    *)
        echo "Operación descoñecida. As operacións válidas son a, b, c, d."
        ;;
esac


#!/bin/bash

# Comprobar se o script é executado por root
if [ "$(id -u)" -ne 0 ]; then
    echo "Este script debe ser executado por root."
    exit 1
fi

# Comprobar se se proporcionaron todos os parámetros necesarios
if [ $# -ne 3 ]; then
    echo "Uso: $0 <nome do usuario> <nome do grupo> <nome do equipo>"
    exit 1
fi

usuario=$1
grupo=$2
equipo=$3

# Comprobar se o usuario xa existe
if id "$usuario" &>/dev/null; then
    echo "O usuario '$usuario' xa existe na empresa."
    exit 1
else
    # Crear o usuario
    useradd -m "$usuario"
    echo "Usuario '$usuario' creado."
fi

# Comprobar se o grupo existe, se non, creámolo
if ! Getent group "$grupo" &>/dev/null; then
    groupadd "$grupo"
    echo "Grupo '$grupo' creado."
fi

# Engadir o usuario ao grupo
usermod -a -G "$grupo" "$usuario"

# Crear os directorios necesarios
mkdir -p /home/"$usuario"/"$equipo"
mkdir -p /empregados/"$usuario"
mkdir -p /backup/"$usuario"

# Establecer os permisos e propiedade
chown "$usuario":"$grupo" /home/"$usuario"/"$equipo"
chown "$usuario":"$grupo" /empregados/"$usuario"
chown "$usuario":"$grupo" /backup/"$usuario"

chmod 700 /home/"$usuario"/"$equipo"
chmod 750 /empregados/"$usuario"
chmod 750 /backup/"$usuario"

# Copiar contidos ao directorio de backup
cp -a /home/"$usuario"/. /backup/"$usuario"

echo "Todos os pasos completados correctamente."

Entradas relacionadas: