Shell Scripting TIC – TAC


Saludos: Integrantes de la Gran Comunidad de Usuarios del Software Libre (No necesariamente gratis) y Usuarios del Linux Post Install – Script Bicentenario (CMSL / U-LPI-SB), Compañeros, Colegas y Autodidactas del Siglo XXI, Ingenieros, Licenciados y Técnicos de áreas afines a las Tecnologías de la Información.

Saludo de Bienvenida

RECORDATORIO: Recuerda que muchas veces el carácter de doble guión – – en una orden de comando escrita en el Blog se visualiza como un solo guión largo , el carácter comillas simple se visualiza como un acento y el carácter comillas doble recta   se visualiza como comillas doble inclinadas “, por lo que si al momento de copiar la orden de comando desde el Blog y pegarla en una Consola / Terminal no se ejecuta correctamente la misma, verifique y corrija si el problema es causado por un carácter mal traducido guión largo que debe ser escrito como doble guión. Lo mismo puede llegar a suceder con algún otro carácter no alfanumérico, así que tenga cuidado al copiar y pegar en una Terminal / Consola.

________________________________________________________

Esta sección del Blog tiene como objetivo servir de repositorio de ordenes de comando útiles para la facilitar la creación de Scripts en un Shell tipo Bash o compatible.

Aprender sobre el Shell Scripting, es decir, a ejecutar ordenes complejas sobre el Terminal (Consola) de GNU/Linux es muy útil para automatizar actividades rutinarias e importantes dentro de nuestro Sistema Operativo GNU/Linux para así optimizar nuestros Recursos y Tiempo, es decir, con lo aquí contenido exploraremos como desde el terminal podemos ejecutar ordenes de comando manuales que luego nos permitan programar/automatizar actividades sobre un equipo ahorrando Horas/Labor de ejecución manual o presencial, implementando dichas ordenes en un Script de Bash Shell o compatible y explicado de una manera, practica y sencilla.

Todo esto con la intención de seguir intentar desmitificar otro de esos paradigmas sobre GNU/Linux que muchos de los Usuarios de Sistemas Operativos Privativos y uno que otro Linuxero Novato tienen todavía metido entre ceja y ceja. El mito de “GNU/Linux es muy complejo porque todo lo importante es manual vía terminal” y “No sé como realizar un Script de Bash Shell en un Sistema Operativo GNU/Linux desde un Terminal”.

En fin, abarcaremos como en una sola orden de comando podemos extraer y mostrar valores / información del Sistema Operativo / Hardware, que luego podamos implementar dentro de un Script de Bash Shell para automatizar una tarea especifica. Concentrándonos en las Mejores Practicas (Best Practices) necesarias para obtener un excelente diseño de un Script de la manera más eficiente y practica.

Bueno aquí lo tienen, y demuéstrenle a los escépticos e incrédulos que no es cierto, que solo es desconocimiento o falta de experiencia técnica. Estos son pequeños “Tips” que nos facilitan realizar esas operaciones técnicas reservadas por lo general para personas expertas (Administradores de Sistemas y/o Servidores) en DEBIAN o nuestro Sistema Operativo Nacional basado en DEBIAN, “Canaima GNU/Linux”.

________________________________________________________

Recuerda donar por lo menos 1$ US a este u otro Proyecto de apoyo o desarrollo de Software Libre, GNU, Linux o Codigo Abierto.

Dona al Proyecto TIC - TAC
Dona al Proyecto TIC – TAC

________________________________________________________

Bueno aquí les va la información:

Obtener el nombre del primer usuario creado en el sistema:

USER_1000=$(cat /etc/passwd | grep 1000 | cut -d: -f1) ;  echo $USER_1000

USER_1001=$(cat /etc/passwd | grep 1001 | cut -d: -f1) ;  echo $USER_1001

Obtener la ruta del /home del primer usuario creado en el sistema:

USER_1000=$(cat /etc/passwd | grep 1000 | cut -d: -f1) ; HOME_USER_1000=/home/$USER_1000 ; echo $HOME_USER_1000

USER_1001=$(cat /etc/passwd | grep 1001 | cut -d: -f1) ; HOME_USER_1001=/home/$USER_1001 ; echo $HOME_USER_1001

Comprobar la Fecha actual del Equipo:

FECHA_ACTUAL=$(date +”%d %b %y”) ; echo $FECHA_ACTUAL

Comprobar la Hora actual del Equipo:

HORA_ACTUAL=$(date +”%H:%M”) ; echo $HORA_ACTUAL

Comprobar si el Host tiene conexión a Internet:

if ping -c 1 8.8.8.8 &> /dev/null; then CONEXION_INTERNET=Habilitado; else CONEXION_INTERNET=Deshabilitado; fi ; echo $CONEXION_INTERNET

Comprobar el tipo de Sistema Operativo:

SISTEMA_OPERATIVO=$(uname -o) ; echo $SISTEMA_OPERATIVO

Comprobar el nombre, versión y subversión del Sistema Operativo:

NOMBRE_SISTEMA=$(cat /etc/os-release | grep NAME | grep -v “VERSION” | sed -n ‘2p’ | cut -f2 -d\”) ; echo $NOMBRE_SISTEMA

VERSION_SISTEMA=$(cat /etc/os-release | grep VERSION= | sed -n ‘1p’ | sed ‘s/VERSION=//’ | sed ‘s/”//g’) ; echo $VERSION_SISTEMA

SUBVERSION_SISTEMA=$(lsb_release -d | awk ‘{print $4}’) ; echo $SUBVERSION_SISTEMA

Comprobar la arquitectura del Sistema Operativo:

ARQUITECTURA=$(uname -m) ; echo $ARQUITECTURA

ARQUITECTURA=$(uname -m) ; if [[ “$ARQUITECTURA” = “x86” ]]; then ARQ_SISTEMA=32; else ARQ_SISTEMA=64; fi ; echo $ARQ_SISTEMA

Comprobar la versión del kernel del Sistema Operativo:

VERSION_KERNEL=$(uname -r) ; echo $VERSION_KERNEL

Comprobar el nombre del Host:

NOMBRE_HOST=$(cat /etc/hostname) ; echo $NOMBRE_HOST

Comprobar IP Interna y Externa (Principal de Salida a Internet):

IP_INTERNA=$(hostname -I) ; echo $IP_INTERNA

IP_EXTERNA=$(curl -s ipecho.net/plain;echo) ; echo $IP_EXTERNA

Comprobar Valores (IP / MAC) de las Interfaces de Red:

IP_ETH0=$(ifconfig eth0 | grep inet | grep -v inet6 | cut -d “:” -f 2 | cut -d ” ” -f 1) ; echo $IP_ETH0

MAC_ETH0=$(ifconfig eth0 | sed -n ‘1p’ | awk ‘{print $5}’) ; echo $MAC_ETH0

IP_WLAN0=$(ifconfig wlan0 | grep inet | grep -v inet6 | cut -d “:” -f 2 | cut -d ” ” -f 1) ; echo $IP_WLAN0

MAC_WLAN0=$(ifconfig wlan0 | sed -n ‘1p’ | awk ‘{print $5}’) ; echo $MAC_WLAN0

Comprobar el Proxy / Gateway del Sistema Operativo:

PROXY_GATEWAY=$(route -n | sed -n ‘3p’ | awk ‘{print $2}’) ; echo $PROXY_GATEWAY

Comprobar el Nombre de Dominio de Red del Host:

DOMINIO=$(cat /etc/resolv.conf | sed ‘2 d’ | grep search | sed -n ‘1p’ | awk ‘{print $2}’) ; echo $DOMINIO

Comprobar la Dirección de Red (IP) del Servidor DNS del Host:

IP_SERVIDOR_DNS=$(cat /etc/resolv.conf | sed ‘1 d’ | awk ‘{print $2}’) ; echo $IP_SERVIDOR_DNS

Comprobar usuarios conectados al Host:

who>/tmp/who ; echo -e “Usuarios conectados al Host :”  && echo “” && echo “Usuarios Puertos      Fecha      Hora  Pantalla” ; echo “*************************************************************************” && cat /tmp/who

USUARIOS_CONECTADOS=$(who | awk ‘{print $1}’) ; echo $USUARIOS_CONECTADOS

USER_ONLINE1=$(who | awk ‘{print $1}’) ; echo $USER_ONLINE1 | wc -w

USER_ONLINE2=$(top -n 1 -b | grep “load average:” | awk ‘{print $6}’) ; echo $USER_ONLINE2

Comprobar Carpeta de Usuario con más data (# de Archivos / Tamaño en Bytes) en el Sistema Operativo:

CARPETA_USUARIO1=$(ls -l /home | sed ‘1 d’ | sort -k2 | sed q | awk ‘{print $9}’) ; echo $CARPETA_USUARIO1

DATA_USUARIO1=$(du -sh /home/* | sort -r | sed q | awk ‘{print $1}’) ; echo $DATA_USUARIO1

Comprobar Tamaño en Bytes de Carpeta de Superusuario u otra Carpeta del Sistema Operativo:

DATA_ROOT=$(du -sh /root | awk ‘{print $1}’) ; echo $DATA_ROOT

DATA_CARPETA1=$(du -sh /var | awk ‘{print $1}’) ; echo $DATA_CARPETA1

Comprobar Carpetas de usuarios creados (Nombres y Números):

NOMBRES_CARPETAS=$(ls -l /home | sed ‘1 d’ | awk ‘{print $9}’) ; echo $NOMBRES_CARPETAS

NUMERO_CARPETAS=$(ls -l /home | sed ‘1 d’ | awk ‘{print $9}’) ; echo $NUMERO_CARPETAS | wc -w

Comprobar estado de la Memoria RAM y Swap:

MEM_TOTAL=$(free -h | sed ‘1 d’ | grep Mem: | awk ‘{print $2}’) ; echo $MEM_TOTAL
MEM_USADA=$(free -h | sed ‘1 d’ | grep Mem: | awk ‘{print $3}’) ; echo $MEM_USADA
MEM_LIBRE=$(free -h | sed ‘1 d’ | grep Mem: | awk ‘{print $4}’) ; echo $MEM_LIBRE
MEM_COMPARTIDA=$(free -h | sed ‘1 d’ | grep Mem: | awk ‘{print $5}’) ; echo $MEM_COMPARTIDA
MEM_ALMACENADA=$(free -h | sed ‘1 d’ | grep Mem: | awk ‘{print $6}’) ; echo $MEM_ALMACENADA
MEM_CACHEADA=$(free -h | sed ‘1 d’ | grep Mem: | awk ‘{print $7}’) ; echo $MEM_CACHEADA

SWAP_TOTAL=$(free -h | sed ‘1 d’ | grep Swap: | awk ‘{print $2}’) ; echo $SWAP_TOTAL
SWAP_USADA=$(free -h | sed ‘1 d’ | grep Swap: | awk ‘{print $3}’) ; echo $SWAP_USADA
SWAP_LIBRE=$(free -h | sed ‘1 d’ | grep Swap: | awk ‘{print $4}’) ; echo $SWAP_LIBRE

Comprobar Estado de las particiones / punto de montaje de un Disco SATA:

PART1_TOTAL=$(df -h | sed ‘1 d’ | grep /dev/sda5 | awk ‘{print $2}’) ; echo $PART1_TOTAL

PART1_USADO=$(df -h | sed ‘1 d’ | grep /dev/sda5 | awk ‘{print $3}’) ; echo $PART1_USADO

PART1_DISPONIBLE=$(df -h | sed ‘1 d’ | grep /dev/sda5 | awk ‘{print $4}’) ; echo $PART1_DISPONIBLE

PART1_PORCENTAJE=$(df -h | sed ‘1 d’ | grep /dev/sda5 | awk ‘{print $5}’) ; echo $PART1_PORCENTAJE

PART1_PUNTOMONTAJE=$(df -h | sed ‘1 d’ | grep /dev/sda5 | awk ‘{print $6}’) ; echo $PART1_PUNTOMONTAJE

Comprobar la Carga promedio del Sistema (Procesos encolados):

CARGA_1MIN=$(top -n 1 -b | grep “load average:” | awk ‘{print $10}’ | sed ‘s/,//2’) ; echo $CARGA_1MIN

CARGA_5MIN=$(top -n 1 -b | grep “load average:” | awk ‘{print $11}’ | sed ‘s/,//2’) ; echo $CARGA_5MIN

CARGA_15MIN=$(top -n 1 -b | grep “load average:” | awk ‘{print $12}’ | sed ‘s/,//2’) ; echo $CARGA_15MIN

CARGA_1MIN=$(uptime | awk ‘{print $8}’ | sed ‘s/,//2’) ; echo $CARGA_1MIN

CARGA_5MIN=$(uptime | awk ‘{print $9}’ | sed ‘s/,//2’) ; echo $CARGA_5MIN

CARGA_15MIN=$(uptime | awk ‘{print $10}’ | sed ‘s/,//2’) ; echo $CARGA_15MIN

Comprobar procesos Zombies en el Sistema Operativo:

PROC_ZOMBIE=$(top -n 1 -b | grep “zombie” | awk ‘{print $10}’) ; echo $PROC_ZOMBIE

Comprobar el Tiempo de Total de Trabajo (Arranque/Encendido):

TIEMPO_ENCENDIDO=$(uptime | awk ‘{print $3,$4}’ | cut -f1 -d,) ; echo $TIEMPO_ENCENDIDO

Comprobar parámetros de la tarjeta de Vídeo:

Fabricante:

FAB_TVIDEO=$(lspci -v | grep “VGA” | cut -d ” ” -f05) ; echo $FAB_TVIDEO

Memoria RAM:

MEM_TVIDEO=$(lspci -v -s `lspci | awk ‘/VGA/{print $1}’` | sed -n ‘/Memory.*, prefetchable/s/.*\[size=\([^]]\+\)M\]/\1/p’) ; echo $MEM_TVIDEO

Modulo (Driver):

DRV_TVIDEO=$(lspci -nnk | grep -i vga -A3 | grep ‘in use’ | cut -d ” ” -f05) ; echo $DRV_TVIDEO

Aceleración 3D:

A3D_TVIDEO=$(glxinfo | grep “direct rendering: Yes” | awk ‘{print $3}’) ; echo $A3D_TVIDEO

Comprobar parámetros del Procesador (CPU):

Fabricante:

FABRICANTE_CPU=$(grep “vendor_id” /proc/cpuinfo | sed q | awk ‘{print $3}’) ; echo $FABRICANTE_CPU

Modelo:

MODELO_CPU=$(grep “model name” /proc/cpuinfo | sed q | cut -d “:” -f 2 | awk ‘{print $0}’) ; echo $MODELO_CPU

Cantidad:

NUM_CPU=$(grep “processor” /proc/cpuinfo | sort -r | sed q | awk ‘{print $3}’) ; TOTAL_CPU=$((`expr $NUM_CPU + 1`)) ; echo $TOTAL_CPU

Nucleos por CPU:

NUCLEO_CPU=$(grep “cpu cores” /proc/cpuinfo | sed q | awk ‘{print $4}’) ; echo $NUCLEO_CPU

Total de Nucleos por CPUs:

NUM_CPU=$(grep “processor” /proc/cpuinfo | sort -r | sed q | awk ‘{print $3}’) ; TOTAL_CPU=$((`expr $NUM_CPU + 1`)) ; NUCLEO_CPU=$(grep “cpu cores” /proc/cpuinfo | sed q | awk ‘{print $4}’) ; TOTAL_NUCLEO_CPU=$((`expr $TOTAL_CPU \* $NUCLEO_CPU`)) ; echo $TOTAL_NUCLEO_CPU

Memoria caché del CPU:

CACHE_CPU=$(grep “cache size” /proc/cpuinfo | sed q | cut -d “:” -f 2 | awk ‘{print $0}’) ; echo $CACHE_CPU

=========================================================

En el futuro, espero seguir brindándoles y aportándoles por medio de mi Blog esos pequeños “Tips” se les faciliten realizar optimizaciones básicas pero útiles, que por lo general solo están reservadas para personas expertas en Tecnología, Informática, Software Libre o nuestro Sistema Operativo Nacional basado en Ubuntu / DEBIAN / “Canaima GNU/Linux”. Y así seguir contribuyendo y apoyando a la Comunidad de Software Libre y servirles de guía para iniciarse en los pasos, temas y contenidos didácticos y educativos necesarios para realizar una sencilla y práctica iniciación en el Mundo del Software Libre, de una forma tal que sea experiencia entretenida y muy rica en información útil.

También realizo “SOPORTE TÉCNICO A DOMICILIO PARA SISTEMAS OPERATIVOS PRIVATIVOS Y LIBRES” ó “ENTRENAMIENTOS SOBRE GNU/Linux” en la Zona Metropolitana de Caracas, Distrito Capital, Venezuela. Para aquellos que estén interesados en mis Servicios profesionales personales a domicilio, cobro 2.500 Bs., como mínimo por Servicio o 500,00 Bs x Hora/Labor por Entrenamientos – Revisiones.

Si quieres saber sobre mi persona, mis aptitudes y capacidades técnicas y profesionales, léelo o descárgalo!

Hoja de CV José Albert 2015

=========================================================

=========================================================

ESPACIO PUBLICITARIO DE NUESTROS ALIADOS COMERCIALES

=========================================================

Selection_013

VENEZUELA

logo-dark

URUGUAY

=========================================================

ESPACIO PUBLICITARIO DE NUESTROS ALIADOS COMERCIALES

=========================================================

________________________________________________________

Recuerda donar por lo menos 1$ US a este u otro Proyecto de apoyo o desarrollo de Software Libre, GNU, Linux o Codigo Abierto.

Dona al Proyecto TIC - TAC
Dona al Proyecto TIC – TAC

________________________________________________________

Para cualquier información llamar al: (+58) 416.610.13.03

##########################################

Aquí les dejo esta encuesta para medir el apoyo logrado:

##########################################

Mensaje 100% Positivo del Blog para esta entrada:

ooxrol

=========================================================

Atrévete, usa Software Libre, y Sistemas Operativos GNU/Linux.

La Lucha es Global y somos Ciudadanos Globales.

Todos a luchar por un Mundo Mejor!