#scriptsbash
Explore tagged Tumblr posts
sololinuxes · 5 years ago
Text
Verificar la conexión SSH de un host remoto
Tumblr media
Verificar la conexión SSH de un host remoto, mediante comandos o scripts bash. Si administras servidores, es interesante verificar cada cierto tiempo que el puerto ssh permanece abierto. Normalmente el puerto 22. En este artículo, nos aprovechamos de una serie de comandos para crear scripts bash. Los scripts nos facilitan la tarea, al permitirnos generar salidas impresas legibles para el humano.  
Verificar la conexión SSH de un host remoto
Asumo que a estas alturas todos sabemos crear un script bash, así que nos limitamos a ofrecerlos. Vemos las opciones que tenemos disponibles más comunes (comandos o herramientas). Timeout La herramienta timeout viene instalada por defecto en la mayoría de distribuciones linux. Vemos un script. #!/bin/bash server=192.168.0.100 # IP del servidor port=22 # puerto connect_timeout=5 # Tiempo de espera timeout $connect_timeout bash -c " Read the full article
0 notes
sololinuxes · 5 years ago
Text
Cómo usar el comando echo con ejemplos en linux
Tumblr media
Cómo usar el comando echo con ejemplos en linux. El comando echo es de los más utilizados en shell y scripts bash. Este comando tiene como misión imprimir los argumentos definidos con echo en nuestra consola, pueden ser a modo indicativo, informativo o cualquier argumento que necesites visualizar. La mayoría de intérpretes shell lo tienen incluido, como por ejemplo: bash, Zsh, Ksh o csh, por nombrar algunos de los más utilizados en linux. Si quieres puedes verificar que lo tienes instalado con el siguiente comando. type echo ejemplo de salida...
Tumblr media
Verificar que echo esta instalado  
Cómo usar el comando echo con ejemplos
Como es habitual en este tipo de comandos, su sintaxis es bastante simple. echo Opciones del comando echo -n : No imprime la última línea de la consola. -e : Habilita la interpretación de secuencias de escape. -E : Deshabilita la interpretación de las secuencias de escape (por defecto). Secuencias de escape de echo Ahora vemos las secuencias de escape admitidas por el comando echo (recuerda que para imprimir las secuencias de escape debes aplicar la opción "-e"): \\ : Imprime el carácter barra invertida. \a : Alerta (BEL). \b : Retroceso. \c : Suprimir cualquier salida adicional, \e : Equivale a pulsar la tecla escape. \f : Muestra los caracteres de un formulario. \n : Nueva línea. \r : Retorno de carro (CR). \t : Impresión en pestaña horizontal. \v : Impresión en pestaña vertical. Aunque hoy en dia ya no es necesario, es una buena práctica de programación incluir los argumentos entre comillas simples o comillas dobles.  
Ejemplos del comando echo
Imprimir un texto de forma estándar echo Hola Sololinux ejemplo de salida... sololinux ~ # echo Hola Sololinux Hola Sololinux Imprimir un texto con caracteres entres comillas dobles Tienes dos opciones de conseguir el objetivo. echo 'Hola "Sololinux"' # o echo "Hola \"Sololinux\"" ejemplo de salida... sololinux ~ # echo "Hola \"Sololinux\"" Hola "Sololinux" sololinux ~ # echo 'Hola "Sololinux"' Hola "Sololinux" Mostrar un texto con una comilla simple Para una comilla simple (algo normal en otros idiomas), la insertamos entre comillas dobles o utilizamos ANSI-C entre comillas simples. echo "I'm a sololinux.es reader" # o echo $'I\'m a sololinux.es reader' ejemplo de salida... sololinux ~ # echo "I'm a sololinux.es reader" I'm a sololinux.es reader sololinux ~ # echo $'I\'m a sololinux.es reader' I'm a sololinux.es reader Imprimir un mensaje con caracteres especiales Recuerda que para usar las secuencias de escape debemos usar la opción "-e". En nuestro ejemplo imprimimos en nueva línea y en formato de pestaña horizontal. echo -e "Mi sitio web favorito es...\n\t- SoloLinux" ejemplo de salida... sololinux ~ # echo -e "Mi sitio web favorito es...\n\t- SoloLinux" Mi sitio web favorito es... - SoloLinux Buscar e imprimir por coincidencia de patrones Mediante el uso de comodines (en este caso asterisco), podemos buscar coincidencias de archivos contenidos en un directorio. En nuestro ejemplo buscamos todas las imágenes con extensión jpg. echo Listamos los archivos jpg: *.jpg ejemplo de salida... sololinux Carpeta nueva # echo Listamos los archivos jpg: *.jpg Listamos los archivos jpg: IMG_20181014_094747.jpg IMG_20181014_095910.jpg IMG-27ba2597b23c226de82492df92e4a146-V.jpg Enviar la salida a un archivo de texto En vez de imprimir en pantalla el resultado de echo, lo envía a un archivo (si no existe lo crea). echo -e 'Soy un usuario de la comunidad linux\nSoloLinux.es' >> /tmp/file.txt En nuestro ejemplo enviamos el texto al archivo "/tmp/file.txt". Puedes ver su contenido con el comando cat. cat /tmp/file.txt Mostrar variables con echo El comando también nos permite imprimir variables, en nuestro caso identificamos el usuario actual. echo $USER ejemplo de salida... sergio@sololinux ~ $ echo $USER sergio Imprimir salidas de comandos Con la expresión "$(comando)", podemos incluir el resultado de un comando en la salida de echo. Nosotros queremos imprimir la fecha actual. echo "Fecha actual: $(date +%D) ejemplo de salida... sololinux ~ # echo "Fecha actual: $(date +%D)" Fecha actual: 03/02/20 Cambiar los colores Como último ejemplo del comando echo, vemos las secuencias necesarias si queremos modificar los colores de frente, de fondo o incluso las propiedades del texto. echo -e "\033[1;37mBLANCO" echo -e "\033[0;30mNEGRO" echo -e "\033[0;34mAZUL" echo -e "\033[0;32mVERDE" echo -e "\033[0;36mCYAN" echo -e "\033[0;31mROJO" echo -e "\033[0;35mPURPURA" echo -e "\033[0;33mAMARILLO" echo -e "\033[1;30mGRIS" imagen de ejemplo...
Tumblr media
Modificar los colores con echo Como ves con el comando echo podemos insertar textos, espacios, tabuladores, nuevas líneas y mucho más.   Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.   Read the full article
0 notes
sololinuxes · 5 years ago
Text
Diferencias entre Systemd y SysVinit (SysV)
Tumblr media
Diferencias entre Systemd y SysVinit (SysV). Systemd es el sistema de inicio y administración del sistema, que han adoptado la mayoría de distribuciones Linux. Más moderno, más complejo, y quizás con un excesivo control sobre el sistema generó una gran polémica en su implantación. Excelentes distribuciones se negaron en rotundo a usarlo, como por ejemplo ALT Linux, Gentoo, Knoopix, PCLinux OS. En otras como Debian, los usuarios disconformes crearon un derivado, Devuan. Lo que está claro, es que le pese a quien le pese Systemd ganó la batalla sobre el administrador tradicional de init, SysVinit. Systemd es compatible con los scripts de inicio SysV y LSB, además funciona como reemplazo directo de sysvinit.  
Diferencias entre Systemd y SysVinit
Systemd es el primer proceso iniciado por el kernel y siempre tendrá el pid 1. Fedora 15 fue la primera distribución linux que adoptó systemd, poco a poco todas fueron en cascada (creo que la última grande fue CentOS 7). Esta herramienta en línea de comandos administra todos los demonios, también los servicios systemd que nos permiten iniciar, reiniciar, detener, habilitar, deshabilitar, recargar y muchos más. Además, es importante saber que Systemd no usa scripts bash para manejar el sistema como SysVinit, utiliza unos archivos llamados ".service" que se suponen más rápidos. También destacamos que systemd clasifica todos los demonios en cgroups.   Qué es SysVinit SysVinit, más conocido como SysV, es uno de los primeros sistemas de inicio para sistemas UNIX/Linux. El primer proceso que inicia el kernel es init, y se mantiene activo mientras la máquina siga en funcionamiento, es el proceso principal. La gran mayoría de distros Linux utilizaban SysV, y aunque se crearon otras alternativas como Service Managament, Upstart, etc, ninguna llegó a implantarse en masa. Hasta que llegó Systemd y fue adoptada por la gran mayoría de distros, debemos reconocer que el SysVinit actual es una herramienta en desuso.   Qué es Systemd Systemd es la herramienta init y administradora del sistema, que usan como estándar las distribuciones linux. Permite manejar todo el sistema systemd. Principales características de Systemd Systemd ofrece una paralelización muy potente. Hace uso de la activación de socket y D-Bus para iniciar los servicios. Soporta el inicio de los demonios bajo demanda. Controla los procesos que utilizan el cgroups de Linux. Permite crear instantáneas y posterior restauración del estado del sistema. Maneja los puntos de montaje y desmontaje automáticamente. Implanta una lógica de control del servicio basada en dependencias transaccionales.   Comandos de Systemd y SysVinit Vemos las diferencias de los comandos más utilizados por los dos sistemas, al servicio lo denominamos ejemplo.   Diferencia entre Targets y Runlevels Systemd usa el concepto Targets (objetivos), que tiene un propósito muy parecido al de los Runlevels (niveles de ejecución) de SysV, pero con una forma de operar diferente. En SysVinit se interpretan con números enteros, y en Systemd se especifica el propósito.   Otros comandos de Systemd Como ultimo apunte del articulo es evidente que systemd es el sistema más extendido, por lo tanto siempre es conveniente conocer algunos comandos extra, seguro que te serán útiles.   Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.   Read the full article
0 notes
sololinuxes · 5 years ago
Text
Como escribir scripts bash correctamente
Tumblr media
Como escribir scripts bash correctamente. Los scripts bash son la forma más sencilla de ejecutar y automatizar tareas en nuestro linux. Son rápidos, seguros y muy fiables. En este articulo vemos las leyes de buenas practicas a la hora de crear un script, o mejor dicho... Como escribir scripts bash correctamente para que sea compresible, y lo más importante, reutilizable.  
Como escribir scripts bash correctamente
Aportamos los diez consejos que cualquier desarrollador bash debería seguir. Siempre agregar comentarios Los comentarios ayudan a comprender el desarrollo del script, y facilitan la tarea de otro desarrollador que quiera continuar o mejorar tu script. Recuerda que son a modo indicativo, para que no se intenten ejecutar deben estar comentados (carácter #). # El script de sololinux.es, ..... Salir del script al encontrar un error Bash es muy potente, tanto, que a veces al producirse un error es capaz de seguir ejecutándose. No debes permitirlo, para subsanar este problema usamos la opción abreviada de "errexit". # El script de sololinux.es set -e Salir del script cuando bash use una variable no declarada Algunas veces bash puede intentar ejecutar variables no declaradas, esto podría causar un desarrollo anormal del resultado final del script. Para salir del script utilizamos la opción abreviada de "nounset". # El script de sololinux.es set -u Las referencias a variables deben llevar comillas dobles Cuando usamos las comillas dobles en las referencias a variables, nos evitamos la división de palabras y el tener que utilizar más espacios de los debidos. #!/bin/bash # El script de sololinux.es set -e set -u echo "Salida sin comillas dobles" echo names="YO USO LINUX" for name in $names; do echo "$name" done echo echo "Salida con comillas dobles" echo for name in "$names"; do echo "$name" done exit 0 imagen de ejemplo...
Tumblr media
Ejemplo de comillas dobles   Utiliza las funciones Este es un gran defecto de los programadores noveles. Acostúmbrate a usar las funciones, se modulariza el código y es más legible. function check_root(){ comando-1; comando-2; } OR check_root(){ comando-1; comando-2; } Si generas el código en una linea, no te olvides de terminar. check_root(){ comando-1; comando-2; } No compares cadenas con == No es necesario introducir los dos caracteres de igual, con uno es suficiente. Ahorraras espacio y trabajo. value1=”megustalinux” value2=”megustasololinux” if Usa $ en vez de las comillas inversas Para sustituir comandos usa el símbolo del dolar en vez de las comillas inversas. user=`echo “$UID”` user=$(echo “$UID”) Utiliza mayúsculas para las variables de entorno Para las variables de entorno debes usar letras mayúsculas, en cambio si son variables personalizadas deberías utilizar letras minúsculas. Con esta practica evitaras muchos conflictos entre variables. solo_linux=”$HOME/Trabajos/scripts/demo.sh” perl “$solo_linux” -h “$1” Usa readonly en las variables estáticas Una vez definidas en un script las variables estáticas no se deben modificar, así que las ponemos en modo solo-lectura. readonly hostname_file=”/etc/hostname” readonly localtime_file=”/etc/localtime” readonly network_file=”/etc/network” Depurar el código Si son scripts con pocas lineas no es necesario, pero si escribes scripts bash con cientos de lineas debes depurarlo antes de ponerlo en producción. En un próximo articulo veremos como depurar el código de bash.   Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.   Read the full article
0 notes
sololinuxes · 6 years ago
Text
Como buscar la IP de un dominio
Tumblr media
Como buscar la IP de un dominio en linux desde terminal. Por necesidad laboral, o por simple curiosidad, es común que necesitemos buscar la ip de un dominio. Estoy seguro que más de una vez has ejecutado alguno de los comandos que proponemos en este articulo para buscar y verificar una ip, pero su uso va mucho más allá. Buscar la ip de un dominio, es una tarea necesaria para muchos desarrolladores de aplicaciones, de scripts bash, y de sitios web. En este articulo de hoy conocemos cinco comandos con ejemplos, cada uno nos aporta más o menos datos pero todos tienen la capacidad de extraer la ip del dominio que nos interesa. Un detalle importante es, que se pueden integrar en otras herramientas como sotfware, sitios web, scripts, y más. Los comandos que vamos a utilizar son: fping: Envía paquetes ICMP ECHO_REQUEST al host. host: Utilidad básica para búsquedas de DNS. dig: Excelente herramienta para extraer información de los servidores de nombres DNS. nslookup: Comando que consulta los servidores de nombres de dominio. ping: Envía paquetes ICMP ECHO_REQUEST al host.  
Buscar la IP de un dominio
fping La herramienta fping es muy similar a ping, pero nos ofrece un rendimiento muy superior. Su uso está muy extendido para detectar si un servidor esta online o no. Si ejecutas "fping dominio" obtendrás la respuesta "dominio is alive", pero si le agregamos unas simples opciones nos aportara más datos, entre ellos la ip del dominio. fping -A -d dominio ejemplo... sololinux ~ # fping -A -d google.es waw02s18-in-f3.1e100.net (216.58.209.3) is alive Nota: No siempre viene instalada de manera predeterminada, pero si la encontraras en los repositorios oficiales de tu distribución linux. # Debien, Ubuntu, etc... sudo apt install fping #CentOS, RHEL, etc... sudo yum install fping #Fedora, CentOS 8, etc... sudo dnf install fping # Arch Linux, Manjaro, etc... sudo pacman -S fping   host Cuando ejecutamos el comando host, este busca la información de la ip o el dominio en las dns. Su información es básica, aun así es de los más conocidos si quieres convertir dominios a direcciones IP y viceversa. host dominio ejemplo... sololinux ~ # host google.es google.es has address 216.58.215.99 google.es has IPv6 address 2a00:1450:401b:805::2003 google.es mail is handled by 30 alt2.aspmx.l.google.com. google.es mail is handled by 40 alt3.aspmx.l.google.com. google.es mail is handled by 50 alt4.aspmx.l.google.com. google.es mail is handled by 10 aspmx.l.google.com. google.es mail is handled by 20 alt1.aspmx.l.google.com.   dig Esta aplicación es una de mis debilidades, hace años que la uso y para mi no existe otra igual. Es potente, flexible, pero también muy rápida lanzando consultas a los servidores de nombres de un dominio o ip. Ampliamente adoptada para solucionar problemas con las dns, el comando dig también nos ofrece otros datos interesantes, entre ellos la ip del dominio. dig dominio ejemplo...
Tumblr media
Buscar la IP de un dominio con dig   nslookup Otra buena herramienta para consultar los servidores de nombres de dominio es nslookup. Su principal misión es diagnosticar problemas con las DNS, pero también nos ofrece la ip del dominio consultado. nslookup dominio ejemplo... sololinux ~ # nslookup google.es Server: 127.0.1.1 Address: 127.0.1.1#53 Non-authoritative answer: Name: google.es Address: 172.217.20.195   ping Por ultimo tenemos el incombustible comando ping (Packet Internet Groper), que a pesar de ser una utilidad de red usada para comprobar que un dominio o ip esta disponible, si le aplicamos unas opciones también nos extrae la ip del dominio entre otros datos. ping -c 1 dominio ejemplo... sololinux ~ # ping -c 1 google.es PING google.es (216.58.209.3) 56(84) bytes of data. 64 bytes from waw02s18-in-f3.1e100.net (216.58.209.3): icmp_seq=1 ttl=54 time=34.3 ms --- google.es ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 34.349/34.349/34.349/0.000 ms   Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Diferencias entre Su, Sudo su, Sudo -i y Sudo -s.   Read the full article
0 notes
sololinuxes · 5 years ago
Text
Diferencias entre & y && / ampersand - doble ampersand
Diferencias entre & y && / ampersand - doble ampersand, al ejecutar comandos o scripts. El signo & cuya conjunción en español seria "y", es ampliamente utilizado en nuestra terminal linux o scripts bash, para ejecutar más de un comando. En el artículo de hoy veremos las principales diferencias y su uso, entre ampersand - doble ampersand. Su uso es muy simple y de fácil comprensión, así que nadie tendrá ningún problema. Ayúdanos a crecer, vota por SoloLinux en la siguiente encuesta. Gracias por colaborar.   Diferencias entre & y && / ampersand - doble ampersand Si queremos ejecutar varios comandos, o scripts bash de forma simultánea, ejecutamos la siguiente sintaxis. command01 & commando2 & commando3 En nuestros ejemplos usaremos tres comandos: hostname : Nos muestra el nombre del host (del sistema actual). pwd : Imprime el directorio de trabajo actual. date : Imprime la fecha y hora del sistema. Ejecutamos... hostname & pwd & date Nos ofrece un resultado similar a: sergio@sololinux ~ $ hostname & pwd & date 5519 5520 sololinux dom jun 14 15:45:42 EEST 2020 - Hecho hostname /home/sergio sergio@sololinux ~ $ Debes recordar que cuando ejecutas un solo ampersand (&), se ejecutan todos los comandos independientemente de que alguno falle o no. Sobre todo en scripts, un solo ampersand no siempre es conveniente. Suelen ejecutar secuencias de salida relacionadas. La solución es bien simple, usamos doble ampersand (&&). Read the full article
0 notes
sololinuxes · 5 years ago
Text
Cuanto tiempo se ejecutan los procesos que más consumen
Cuanto tiempo se ejecutan los procesos que más consumen. Hoy vamos a ver dos scripts bash muy útiles, pero a la vez un tanto curiosos. En el primero veremos cuanto tiempo llevan activos los procesos que más consumen memoria ram, en el segundo los que más consumen cpu. El script imprime en pantalla un resultado formateado, de manera que sea legible para un humano. Los datos se obtienen de una secuencia de comandos habituales, estos resultados se guardan en un archivo *.txt en la carpeta temporal, después se leen y se imprimen, así de fácil.   Cuanto tiempo se ejecutan los procesos que más consumen Script bash procesos en ram Comenzamos por el script bash que nos dirá el tiempo activos de los procesos que más consumen ram. Lo creamos. nano proc-ram.sh Copia y pega lo siguiente: #!/bin/bash ps -eo pid,user,ppid,%mem,%cpu,cmd --sort=-%mem | head | tail -n +2 | awk '{print $1}' > /tmp/pro-ram.txt echo "--------------------------------------------------" echo "User PID CMD Tiempo del proceso" echo "--------------------------------------------------" for userid in `cat /tmp/pro-ram.txt` do username=$(ps -u -p $userid | tail -1 | awk '{print $1}') pruntime=$(ps -p $userid -o etime | tail -1) ocmd=$(ps -p $userid | tail -1 | awk '{print $4}') echo "$username $userid $ocmd $pruntime" done | column -t echo "--------------------------------------------------" Guarda el archivo y cierra el editor. Le concedemos permisos. chmod u+x proc-ram.sh Lo ejecutas: sh pro-ram.sh # o bash pro-ram.sh ejemplo de salida... sololinux # bash pro-ram.sh -------------------------------------------------- User PID CMD Tiempo del proceso -------------------------------------------------- sergio 2474 chromium-browse 02:32:29 sergio 3469 chromium-browse 02:20:15 sergio 2550 chromium-browse 02:32:16 sergio 4203 chromium-browse 02:00:45 sergio 2523 chromium-browse 02:32:22 sergio 4551 chromium-browse 01:57:20 sergio 2604 chromium-browse 02:32:15 sergio 2518 chromium-browse 02:32:22 sergio 7503 chromium-browse 02:15 --------------------------------------------------   Script bash procesos en cpu El segundo código nos informa del tiempo que llevan activos los procesos que consumen más recursos de la cpu. Creamos el script bash. nano proc-cpu.sh Copiamos y pegamos el script: #!/bin/bash ps -eo pid,user,ppid,%mem,%cpu,cmd --sort=-%cpu | head | tail -n +2 | awk '{print $1}' > /tmp/pro-cpu.txt echo "--------------------------------------------------" echo "User PID CMD Tiempo del proceso" echo "--------------------------------------------------" for userid in `cat /tmp/pro-cpu.txt` do username=$(ps -u -p $userid | tail -1 | awk '{print $1}') pruntime=$(ps -p $userid -o etime | tail -1) ocmd=$(ps -p $userid | tail -1 | awk '{print $4}') echo "$username $userid $ocmd $pruntime" done | column -t echo "--------------------------------------------------" Guarda el archivo y cierra el editor. Le concedemos permisos. chmod u+x proc-cpu.sh Lo puedes ejecutar... sh pro-cpu.sh # o bash pro-cpu.sh ejemplo de salida... sololinux # bash pro-cpu.sh -------------------------------------------------- User PID CMD Tiempo del proceso -------------------------------------------------- sergio 2474 chromium-browse 02:45:09 sergio 3469 chromium-browse 02:32:55 sergio 2523 chromium-browse 02:45:01 sergio 7503 chromium-browse 14:54 sergio 4203 chromium-browse 02:13:24 root 936 Xorg 03:03:09 sergio 1986 pulseaudio 02:56:06 sergio 7548 chromium-browse 14:42 sergio 7832 chromium-browse 04:30 --------------------------------------------------   Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.   Read the full article
0 notes