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."