Shared posts

13 Jan 22:23

Configuración de los parámetros de red en Debian 11 en línea de comandos

by ProfeCarlosLeal

El escenario

Tenemos dos adaptadores de red, el primero recibirá su dirección IP vía DHCP al segundo se le configurará manualmente, o sea:

  • enp0s3 ==>Configuración automática con DHCP
  • enp0s8 ==>Configuración estática manual

Un video con este mismo paso a paso lo encuentras aquí

Paso 0 – Cambiar el nombre de host y dominio

Vamos a ver como cambiar el nombre de máquina de forma sencilla. Abrimos un terminal y nos convertimos en super usuario con:

cleal@tserver:~/Escritorio$ su –

Contraseña:

root@tserver:~#

El signo # indica que ya somos usuario root. Editamos el fichero /etc/hostname y le cambiamos el nombre

nano /etc/hostname

En este archivo de una sola línea se pone el nombre del servidor (o de la máquina Linux en general), como este será mi servidor DNS principal y estará ubicado en la ciudad de Managua y voy a utilizar un dominio hipotético llamado debian.local, lo voy a dejar así:

mga-ns01.debian.local

El nombre parece muy poco glamoroso, pero es muy funcional, con ver el nombre del servidor ya tengo una idea de su ubicación y servicios instalados

También vamos a modificar una línea en /etc/hosts

nano /etc/hosts

Donde dice 127.0.0.1 lo dejamos así:

127.0.0.1       mga-ns01.debian.local   mga-ns01

Paso 1 – Saber el nombre de los adaptadores

Escribimos el comando ls /sys/class/net/ deberá salir algo así:

ls /sys/class/net/

enp0s3 enp0s8 lo

Paso 2 – Desactivar NetworkManager

En la versión que yo tengo instalada no viene habilitado el NetworkManager, por eso no tengo que hacer este paso. Antes que nada, se debe desactivar cualquier aplicación, applet, ícono o algo por el estilo que controle la red en modo gráfico, de manera pre-determinada en Debian 10 viene el NetworkManager como gestor de conexiones de red. En un servidor los adaptadores de red no se configuran por medio del modo gráfico.

Primero saber si NetworManager está activo

systemctl status NetworkManager

Si está activo, lo detenemos con Detenemos el NetworkManager con

systemctl stop NetworkManager

Deshabilitamos el NetworManager con

systemctl disable NetworkManager

La salida será algo así

Removed /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed /etc/systemd/system/multi-user.target.wants/NetworkManager.service.

Paso 2 – Respaldar el archivo de configuración

En Debian, y otras distribuciones basadas en Debian, el archivo de configuración principal de los parámetros de red es: interfaces y ubicado en /etc/network/, antes que nada, conviene hacer una copia de seguridad del archivo

cd /etc/network/ 

Una vez realizado el cambo de directorio el prompt se verá algo así:

root@tserver:/etc/network#

Se realiza la copia de seguridad con

cp interfaces interfaces.original

Paso 3 – Establecer direcciones

 Editar el archivo de configuración puede ser con nano o con el editor que más nos agrade

nano interfaces

Toda línea que inicie con “#” no se toma en cuenta, es comentario. El archivo debe quedar así:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

## A partir de aquí agregamos
# configuración del primer adaptador ethernet vía DHCP

auto enp0s3
iface enp0s3 inet dhcp

# configuración manual del segundo ethernet adaptador

auto enp0s8
iface enp0s8 inet static
address 192.168.10.10
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255

# Multiples puertas de enlace pueden causar problemas
# si es necesario se puede especificar con la siguiente línea
# gateway 192.168.10.1
# Igual con el Servidor DNS, los está asignando el DHCP, pero se pueden poner aquí
# dns-nameservers 192.168.10.10


Paso 4 – Aplicar la configuración y verificar

En este caso, lo más fácil, rápido y seguro es reiniciar el equipo con:

reboot

Luego de reinicar, abrimos nuevamente la terminal, nos convertimos en root y probamos con ip a

cleal@tserver:~/Escritorio$ su -
Contraseña:

Verificar el nombre del equipo con hostname

root@mga-ns01:~# hostname
mga-ns01.debian.local
root@mga-ns01:~#

Verificamos el nombre del dominio con dnsdomainname

root@mga-ns01:~# dnsdomainname
debian.local
root@mga-ns01:~#

Comprobamos la IP con ip a
root@tserver:~# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:c6:9a:93 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fec6:9a93/64 scope link
       valid_lft forever preferred_lft forever

3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:4a:4a:e5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.10/24 brd 192.168.10.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe4a:4ae5/64 scope link
       valid_lft forever preferred_lft forever
root@tserver:~#

¡No me gusta! Prefiero usar ifconfig, como en Debian net-tools no viene preinstalado, entonces tenemos que instalarlo, como yo ya lo tengo instalado con:
apt-get install net-tools

ahora sí, probamos con ifconfig

root@tserver:~# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:fec6:9a93  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:c6:9a:93  txqueuelen 1000  (Ethernet)
        RX packets 5  bytes 1520 (1.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 76  bytes 8414 (8.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.10  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::a00:27ff:fe4a:4ae5  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:4a:4a:e5  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 8  bytes 396 (396.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 396 (396.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


root@tserver:~#

Felicidades, hemos completado adecuadamente la configuración de los parámetros de red

24 Nov 20:10

Disponibles Debian 11.1 Bullseye y 10.11 Buster

by Eduardo Medina

debian artwork

Los responsables de Debian han anunciado la publicación de las versiones 10.11 Buster y 11.1 Bullseye, que vienen a ser los últimos lanzamientos de las ramas old stable y stable respectivamente. Como es de esperar, nos encontramos con la aplicación de los parches que se han ido acumulando desde los lanzamientos previos con el fin de evitar la realización de una actualización “pesada” justo después de completar la instalación.

Los lanzamientos estables de Debian tienen un conjunto de software estanco que raras veces es modificada durante el tiempo de vida del sistema, así que de 11.1 Bullseye sobresalen los parches para corregir tanto fallos de software como de seguridad. Entre los fallos de seguridad corregidos, nos encontramos una que permitía la ejecución de código arbitrario (CVE-2021-38173) y otra la “falta la validación de entrada en los nombres de host devueltos por los servidores DNS” (CVE-2021-3672).

En cuanto al kernel, que recordamos que en Bullseye es Linux 5.10, han llegado correcciones para los drivers Radeon (el viejo Open Source para gráficas AMD Radeon), AMDGPU (el “nuevo” para gráficas AMD Radeon) y Nouveau (el libre para gráficas de NVIDIA). Esto se suma a las correcciones aplicadas a los chips de sonido Realtek incorporado a diversos modelos de portátiles de HP.

De Debian 10.11 Buster destaca la eliminación de una gran cantidad de componentes y módulos relacionados con los núcleos 4.19.0-16 y anteriores debido a que ya nos son copilados por Linux. Esto no debería de acarrear ninguna merma a nivel de funcionamiento y características, ya que el kernel actual de Buster es la versión 4.19.0-18. Por lo demás, también están presentes los parches y cambios aplicados para corregir fallos de software y de seguridad, de entre los que sobresale la incorporación de las nuevas versiones de los microcódigos de Intel.

Los que quieran conocer todos los detalles de estos lanzamientos pueden consultar las listas de cambios de Bullseye 11.1 y Buster 10.11 publicadas por Debian. Os dejamos con los enlaces para descargar tanto la actual stable como la old stable de la distribución, aunque si se usa una gráfica Radeon sería recomendable echar un vistazo a las imágenes non-free para garantizar el arranque de los medios en vivo o del propio sistema tras realizar la instalación:

24 Nov 18:40

Uso del comando AWK en Linux y UNIX con ejemplos

by Joan Carles

Hace unas semanas vimos con bastante profundidad y con ejemplos el uso que podíamos dar a la utilidad Sed. Ahora ha llegado el momento de hacer lo mismo pero esta vez con el comando Awk. Como ya dije en su día, si queréis empezar a programar scripts es esencial tener un conocimiento básico de herramientas como sed, awk, grep, cut, etc.

¿QUÉ NOS PERMITE REALIZAR EL COMANDO AWK?

Los usos básicos que podemos dar al comando Awk son los siguientes:

  1. Buscar palabras y patrones de palabras y reemplazarlos por otras palabras y/o patrones.
  2. Hacer operaciones matemáticas.
  3. Procesar texto y mostrar las líneas y columnas que cumplen con determinadas condiciones.
  4. Etc.

Nota: En términos generales el comando awk permite procesar y modificar el texto según nuestras necesidades.

Si leen el artículo verán una serie de explicaciones y ejemplos que les ayudarán a defenderse cuando tengan que utilizar el comando awk.

MOSTRAR EN PANTALLA LAS COLUMNAS QUE QUERAMOS

A continuación veremos una serie de ejemplos que nos ayudarán a comprender como podemos manipular las columnas con el comando awk

Extraer las columnas que queramos de un determinado texto

El comando Awk nos permite seleccionar una columna determinada y mostrarla en pantalla. En mi caso ejecutando el comando ps obtengo la siguiente salida:

joan@gk55:~$ ps
    PID TTY          TIME CMD
 636856 pts/1    00:00:00 bash
 636889 pts/1    00:00:00 ps

Si únicamente queremos mostrar la columna PID ejecutaremos un comando del siguiente tipo:

ps | awk '{print $num_columna}'

Como el número de columna es la 1 entonces ejecutaremos el siguiente comando obteniendo el siguiente resultado.

joan@gk55:~$ ps | awk '{print $1}'
PID
636856
637797
637798

Nota: Colocamos '{}' y dentro de las llaves que introducimos/escribimos la acción que queremos realizar que en este caso es imprimir la columna 1.

Nota: El delimitador por defecto de awk es el espacio. Por lo tanto cada espacio que haya en la salida de texto será considerado como un cambio de columna. Más adelante verán que se puede cambiar el delimitador por defecto.

Si en vez de la primera columna quisiéramos imprimir la segunda ejecutaríamos el siguiente comando:

joan@gk55:~$ ps | awk '{print $2}'
TTY
pts/3
pts/3
pts/3

Si quisiéramos mostrar la primera columna sin mostrar la primera fila entonces ejecutaríamos el siguiente comando:

joan@gk55:~$ ps | awk 'NR>1{print $2}'
pts/3
pts/3
pts/3

Nota: Más adelante encontrarán más ejemplos y explicaciones para entender el uso del parámetro NR.

Cambiar el delimitador por defecto en Awk y extraer la primera columna

En el primer apartado hemos visto que el delimitador por defecto de awk es el espacio, pero en caso de necesidad podemos definir el delimitador que más nos convenga. Imaginemos que ejecutando el comando cat /etc/passwd obtenemos la siguiente salida:

joan@gk55:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
...

Si únicamente queremos mostrar los usuarios del sistema operativo borrando el resto de información tendremos que:

  1. Fijar : como delimitador.
  2. Imprimir la primera columna.

Para hacer lo que acabo de citar ejecutaremos un comando del siguiente tipo:

cat /etc/passwd | awk -F "delimitador" '{print $num_columna}'

Como el delimitador y el número de columna son : y 1 ejecutaré el siguiente comando obteniendo el siguiente resultado:

joan@gk55:~$ cat /etc/passwd | awk -F ":" '{print $1}'
root
daemon
bin
sys
sync
games
...

Extraer varias columnas de texto de forma simultánea con el comando awk

Si queremos extraer varias columnas de forma simultánea lo haremos del siguiente modo:

joan@gk55:~$ cat /etc/passwd | awk -F ":" '{print $1 $3 $4}'
root00
daemon11
bin22
sys33
sync465534
games560
...

La salida es difícil de leer e interpretar porque se imprimen las columnas sin dejar espacios entre ellas. Si queremos añadir espacios entre columnas lo haremos añadiendo los caracteres " " entre las columnas que seleccionamos para imprimir. Por lo tanto para hacer más legible el resultado anterior ejecutaremos el siguiente comando:

joan@gk55:~$ cat /etc/passwd | awk -F ":" '{print $1" "$3" "$4}'
root 0 0
daemon 1 1
bin 2 2
sys 3 3
sync 4 65534
games 5 60
...

Si en vez de un espacio quisiéramos añadir una tabulación reemplazaríamos " " por "\t" obteniendo el siguiente resultado:

joan@gk55:~$ cat /etc/passwd | awk -F ":" '{print $1"\t"$3"\t"$4}'
root	0	0
daemon	1	1
bin		2	2
sys		3	3
sync	4	65534
games	5	60
...

Nota: Otra opción para hacer que el formato sea más legible sería usar printf en vez de print. Más adelante veréis ejemplos de como se puede usar printf.

Fijar un delimitador con la opción FS e imprimir varias columnas

Mediante la opción FS «Field Separator» también podemos fijar un delimitador. Para ello deberemos usar un comando del siguiente tipo:

awk 'BEGIN{FS=":";} {print $1"\t"$3"\t"$4}'

Por lo tanto si volvemos al caso del apartado anterior y queremos imprimir las columnas 1, 3 y 4 lo haremos del siguiente modo:

joan@gk55:~$ cat /etc/passwd | awk 'BEGIN{FS=":";} {print $1"\t"$3"\t"$4}'
root	0	0
daemon	1	1
bin	2	2
sys	3	3
sync	4	65534
games	5	60
...

Nota: El comando ejecutado es equivalente a awk 'BEGIN{FS=":";} {print $1"\t"$3"\t"$4}' /etc/passwd o al cat /etc/passwd | awk -F ":" '{print $1"\t"$3"\t"$4}'
Nota: Toda acción definida dentro de las llaves de BEGIN se ejecuta antes de procesar el fichero de texto /etc(passwd)

Combinar el uso de FS con OFS en awk para tener un delimitador en la salida mostrada en pantalla

Si queremos combinar el uso de FS «field separator» con OFS «Output field separator» tendremos que proceder del siguiente modo.

La opción FS sirve para fijar el separador y la opción OFS define el separador de salida que usaremos para mostrar las columnas seleccionadas en pantalla.

Por ejemplo si queremos mostrar las columnas 1, 3 y 4 del comando cat etc/passwd y que las columnas de salida estén separadas por - entonces usaremos el siguiente comando:

joan@gk55:~$ cat /etc/passwd | awk 'BEGIN{FS=":";OFS=" - "} {print $1,$3,$4}'
root - 0 - 0
daemon - 1 - 1
bin - 2 - 2
sys - 3 - 3
sync - 4 - 65534
games - 5 - 60
...

Imprimir en pantalla únicamente el último delimitador de una salida con awk mediante $NF

Imaginemos que la salida del comando cat /etc/shells es la siguiente:

joan@gk55:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash

Si os fijáis, el nombre de la shell a veces está en la segunda columna y a veces en la tercera columna. Pero lo que es común en todas las salidas es que el nombre de la shell esté en el último delimitador. Para Imprimir el contenido que está después del último delimitador ejecutaremos un comando del siguiente tipo:

awk -F "/" '/^\// {print $NF}'

Cada uno de los parámetros del comando que acabáis de leer hace lo siguiente:

-F "/": Establecemos que el delimitador usado por awk será /

/^\//: Entre // introducimos ^\/ que es una expresión regular que significa toda línea que empiece por /

{print $NF}: Hace referencia a imprimir el último delimitador en todas las líneas que se cumpla la expresión regular ^\/

Si ahora llevamos la teoría a la práctica ejecutaremos el siguiente comando obteniendo el siguiente resultado:

joan@gk55:~$ awk -F "/" '/^\// {print $NF}' /etc/shells
sh
bash
bash
rbash
rbash
dash
dash

El comando anterior veréis que muestra shells duplicadas. Si queremos eliminar las shell duplicadas usaremos el comando uniq del siguiente modo:

joan@gk55:~$ awk -F "/" '/^\// {print $NF}' /etc/shells | uniq
sh
bash
rbash
dash

Imprimir el contenido del penúltimo o antepenúltimo delimitador mediante $NF

En el apartado anterior imprimimos el contenido del último delimitador. Si queremos imprimir el penúltimo tan solo tenemos que reemplazar $NF por %(NF-1). Si lo hacemos el resultado obtenido será:

joan@gk55:~$ awk -F "/" '/^\// {print $(NF-1)}' /etc/shells
bin
bin
bin
bin
bin
bin
bin

Si quisiéramos imprimir el antepenúltimo delimitador deberíamos usar $(NF-2)

joan@asus:~$ awk -F "/" '/^\// {print $(NF-2)}' /etc/shells


usr

usr

usr

OPERAR CON LÍNEAS DE TEXTO MEDIANTE EL COMANDO AWK

Hasta el momento hemos visto varios métodos para imprimir las columnas de texto que nos interesan. Del mismo modo que imprimimos las columnas de texto que nos interesan también podemos imprimir las filas o líneas de texto que nos interesen. Para ello deberéis proceder del siguiente modo.

Imprimir únicamente las líneas que sigan un determinado patrón

En mi caso la salida del comando df es la siguiente:

joan@gk55:~$ df
S.ficheros          bloques de 1K   Usados Disponibles Uso% Montado en
udev                      3949508        0     3949508   0% /dev
tmpfs                      797996     1304      796692   1% /run
/dev/sda5                28767268 13356764    13926168  49% /
tmpfs                     3989968    31068     3958900   1% /dev/shm
tmpfs                        5120        4        5116   1% /run/lock
tmpfs                     3989968       16     3989952   1% /tmp
/dev/sda4                66559996 26678488    39881508  41% /media/DATOS
/dev/sda6                40054040 16034856    21954800  43% /home
/dev/sda8                  507904    50252      457652  10% /boot/efi
tmpfs                      797992       56      797936   1% /run/user/1000

Si únicamente queremos mostrar en pantalla las líneas que empiezan por / usaremos un comando del siguiente tipo:

df | awk '/expresión_regular/ {print}'

En el apartado anterior hemos visto que la expresión regular para definir todas las líneas que empiezan por / es ^\/. Por lo tanto el comando para que únicamente se muestren las líneas que empiecen por / será el siguiente:

joan@gk55:~$ df | awk '/^\// {print}'
/dev/sda5                28767268 13356764    13926168  49% /
/dev/sda4                66559996 26678488    39881508  41% /media/DATOS
/dev/sda6                40054040 16033804    21955852  43% /home
/dev/sda8                  507904    50252      457652  10% /boot/efi

Y si únicamente queremos mostrar la línea que empieza por /dev/sda5 ejecutaremos el siguiente comando:

joan@gk55:~$ df | awk '/^\/dev\/sda5/ {print}'
/dev/sda5                28767268 13356764    13926168  49% /

Mostrar únicamente las líneas que empiezan o finalizan por un determinado patrón

Anteriormente ya hemos visto ejemplos para imprimir únicamente las líneas que empiezan por una letra determinada o por un patrón determinado. Por lo tanto para imprimir las líneas de la salida del comando df que empiezan por la palabra tmpfs ejecutaremos el siguiente comando:

joan@gk55:~$ df | awk '/^tmpfs/ {print}'
tmpfs                 298144       916      297228   1% /run
tmpfs                1490708    149436     1341272  11% /dev/shm
tmpfs                   5120         4        5116   1% /run/lock
tmpfs                 298140        56      298084   1% /run/user/1000

Si ahora queremos mostrar únicamente las líneas que terminan por /shm deberemos cambiar la expresión regular ^tmpfs por \/shm$. De este modo podéis ver que conseguimos nuestro objetivo:

joan@gk55:~$ df | awk '/\/shm$/ {print}'
tmpfs                1490708    155580     1335128  11% /dev/shm

Y si únicamente quisiéramos mostrar las líneas que empiezan por tmpfs y a la vez terminan por /shm lo haríamos del siguiente modo:

joan@gk55:~$ df | awk '/\/shm$/ && /^tmpf/ {print}'
tmpfs                1490708    134808     1355900  10% /dev/shm

Mostrar las columnas que queramos de únicamente las líneas que cumplen una determinada condición

En el ejemplo del apartado anterior se mostraban la totalidad de columnas de las líneas que empiezan por /. Si en vez de mostrar todas las columnas tan solo quiero mostrar la 1, la 2 y la 3 procederemos del siguiente modo:

joan@gk55:~$ df -h | awk '/^\// {print $1"\t"$2"\t"$3}'
/dev/sda5	28G		13G
/dev/sda4	64G		26G
/dev/sda6	39G		16G
/dev/sda8	496M	        50M

Si ahora queremos sumar las columnas 2 y 3 para obtener el espacio total de cada partición lo podemos hacer del siguiente modo:

joan@gk55:~$ df -h | awk '/^\// {print $1"\t"$2 + $3}'
/dev/sda5	41
/dev/sda4	90
/dev/sda6	55
/dev/sda8	546

Y si queremos que se siga mostrando la unidad de capacidad de almacenamiento:

joan@gk55:~$ df -h | awk '/^\// {print $1"\t"$2 + $3"G"}'
/dev/sda5	41G
/dev/sda4	90G
/dev/sda6	55G
/dev/sda8	546G

Mostrar únicamente las líneas que tengan una longitud de caracteres determinada mediante lenght

Si queremos imprimir las líneas del fichero /etc/shells que tienen una longitud superior a 9 caracteres ejecutaremos el siguiente comando:

joan@gk55:~$ awk ' length($0) > 9 ' /etc/shells
# /etc/shells: valid login shells
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/dash

Nota: Del mismo modo que hemos usado length($0) > 9 podríamos haber usado length($0) < 9, length($0) == 9 o length($0) != 9.

Mostrar filas que deben cumplir con varias condiciones de forma simultanea con el operador &&

Mediante el operador && podemos imprimir o mostrar las líneas que cumplan con 2 o más condiciones. Por ejemplo si queremos mostrar las líneas de salida del comando df -h que empiezan por t y cuya columna 6 tenga más de 8 caracteres ejecutaremos el siguiente comando:

joan@gk55:~$ sudo df -h | awk ' /^t/ && length($6) > 8 {print $0} '
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
tmpfs            292M    52K  292M   1% /run/user/1000

Ver la longitud de cada una de las líneas con el comando awk mediante ‘{print length}’

Para saber el número de caracteres de cada una de las líneas del fichero /etc/shells lo haremos mediante el siguiente comando:

joan@gk55:~$ awk '{print length}' /etc/shells
33
7
9
13
10
14
9
13

Si además de escribir el número de caracteres también queremos escribir el contenido de la línea:

joan@gk55:~$ awk '{print length"\t"$0}' /etc/shells
33	# /etc/shells: valid login shells
7	/bin/sh
9	/bin/bash
13	/usr/bin/bash
10	/bin/rbash
14	/usr/bin/rbash
9	/bin/dash
13	/usr/bin/dash

En este apartado hemos visto como imprimir el número de caracteres de un línea entera. Si únicamente queremos imprimir el número de caracteres de la columna 1 de la salida del comando df -h lo haremos del siguiente modo:

joan@gk55:~$ sudo df -h | awk '{print length($1)"\t"$1}'
10	S.ficheros
4	udev
5	tmpfs
9	/dev/sda1
5	tmpfs
5	tmpfs
10	compartida
5	tmpfs

Y si queremos eliminar la primera de la salida del comando df añadiríamos el parámetro NR>1 del siguiente modo:

joan@gk55:~$ sudo df -h | awk 'NR>1{print length($1)"\t"$1}'
4	udev
5	tmpfs
9	/dev/sda1
5	tmpfs
5	tmpfs
10	compartida
5	tmpfs

Imprimir la longitud de únicamente las líneas que tengan un determinado número de caracteres

Si ahora queremos imprimir la longitud de únicamente las líneas que tienen una longitud superior a 9 caracteres tan solo tenemos que combinar los comandos de los últimos apartados del siguiente modo:

joan@gk55:~$ awk ' length($0) > 9 {print length} ' /etc/shells
33
13
10
14
13

Imprimir todas las líneas cuyo el último delimitador sea igual a una determinada palabra mediante el condicional if

En mi caso la salida del comando ps -ef es la siguiente:

joan@gk55:~$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 17:11 ?        00:00:01 /sbin/init
root           2       0  0 17:11 ?        00:00:00 [kthreadd]
root           3       2  0 17:11 ?        00:00:00 [rcu_gp]
root           4       2  0 17:11 ?        00:00:00 [rcu_par_gp]
...

Si queremos obtener un listado de procesos cuyo último delimitador contenga la palabra firefox podemos usar lo aprendido hasta ahora conjuntamente con el comando if. Para conseguir nuestro propósito lo haremos del siguiente modo:

joan@gk55:~$ ps -ef | awk '{ if($NF == "firefox") print $0}'
joan       12642       1  0 09:42 ?        00:00:00 /bin/sh -c firefox
joan       12643   12642 14 09:42 ?        00:59:13 firefox

Nota: Podemos usar varios operadores como por ejemplo ==, !=, >, <
Nota: En apartados anteriores hemos visto que el último delimitador se define como $NF.
Nota: $0 hace referencia a todas las columnas.

Si únicamente quisiéramos imprimir el número de proceso y el último delimitador usaríamos el siguiente comando:

joan@gk55:~$ ps -ef | awk '{ if($NF == "firefox") print $2" "$NF}'
12642 firefox
12643 firefox

Contar el número de líneas de un fichero o de la salida de un comando con NR (Número de registros)

Para mostrar el número de líneas que tiene un fichero o la salida de un comando usaremos el parámetro NR. Por lo tanto para imprimir el número de líneas que tiene el fichero /etc/shells lo haremos del siguiente modo:

joan@gk55:~$ awk '{print NR}' /etc/shells
1
2
3
4
5
6
7
8

Sí únicamente queremos obtener el número total de líneas añadiremos el parámetro END del siguiente modo:

joan@gk55:~$ awk 'END {print NR}' /etc/shells
8

Nota: Toda acción precedida del comando END solo se ejecutará una vez cuando se haya procesado la salida del fichero /etc/shells

Imprimir la primera línea de un fichero o de la salida de un comando con la opción NR

La opción NR también no servirá para imprimir la línea de texto que nosotros queramos. Por ejemplo si queremos imprimir la primera línea de la salida del comando ps -aux lo haremos del siguiente modo:

joan@gk55:~$ ps -aux | awk 'NR==1{print $0}'
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

Y si únicamente queremos imprimir la segunda línea lo haremos así:

joan@gk55:~$ ps -aux | awk 'NR==2{print $0}'
root           1  0.0  0.3 163980  9400 ?        Ss   08:52   0:01 /sbin/init

Imprimir todas las filas de un fichero a partir de una determinada línea mediante la opción NR

Para imprimir todas las líneas de la salida del comando ps -aux excepto las 2 primeras lo haremos de forma similar al apartado anterior, pero en vez de usar el operador == usaremos el operador >

joan@gk55:~$ ps -aux | awk 'NR>2{print $0}'
root           2  0.0  0.0      0     0 ?        S    08:52   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   08:52   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   08:52   0:00 [rcu_par_gp]
...

Lo que estamos haciendo con el comando ejecutado es imprimir todos los registros del fichero excepto el 1 y el 2 que corresponden obviamente a la primera y segunda línea.

Imprimir todas las línea de un documento o salida que empiezan con un determinado carácter o string

Si quisiéramos imprimir todos los procesos que están corriendo en nuestro sistema operativo podemos usar el siguiente comando:

joan@gk55:~$ ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.3 163980  9388 ?        Ss   08:52   0:01 /sbin/init
root           2  0.0  0.0      0     0 ?        S    08:52   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   08:52   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   08:52   0:00 [rcu_par_gp]
...

En la primera columna $1 figura el usuario que ha iniciado el proceso. Si queremos imprimir los detalles de los procesos iniciados por usuario cuyo nombre empieza por a o por m, lo haremos del siguiente modo:

joan@gk55:~$ ps -aux | awk '$1 ~ /^[a,m]/ {print $0}'
avahi        451  0.0  0.1   7272  3132 ?        Ss   08:52   0:00 avahi-daemon: running [asus.local]
message+     455  0.0  0.1   8908  4572 ?        Ss   08:52   0:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
avahi        471  0.0  0.0   7092   316 ?        S    08:52   0:00 avahi-daemon: chroot helper

Si queremos el mismo resultado que acabamos de obtener mostrando la cabecera que en este caso será la primera línea lo haremos del siguiente modo:

joan@gk55:~$ ps -aux | awk 'NR==1{print $0}' && ps -aux | awk '$1 ~ /^[a,m]/ {print $0}'
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
avahi        451  0.0  0.1   7272  3096 ?        Ss   08:52   0:00 avahi-daemon: running [asus.local]
message+     455  0.0  0.1   8908  4572 ?        Ss   08:52   0:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
avahi        471  0.0  0.0   7092   304 ?        S    08:52   0:00 avahi-daemon: chroot helper

Imprimir eliminando los x primero caracteres de cada línea mediante el parámetro substr

En mi caso la salida del comando /etc/shells es la siguiente:

joan@gk55:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash

Si queremos imprimir la salida eliminando por ejemplo los 5 primeros caracteres de cada una de las líneas lo haremos del siguiente modo:

joan@gk55:~$ cat /etc/shells | awk '{print substr($0, 5)}'
etc/shells: valid login shells
/sh
/bash
/bin/bash
/rbash
/bin/rbash
/dash
/bin/dash

Como hemos visto anteriormente, si queremos borrar la primera línea de la salida del comando lo haremos mediante el parámetro NR>1 del siguiente modo:

joan@gk55:~$ cat /etc/shells | awk 'NR>1 {print substr($0, 5)}'
/sh
/bash
/bin/bash
/rbash
/bin/rbash
/dash
/bin/dash

Nota: El primer parámetro del comando substr sirve para definir la columna en la que operamos. El segundo parámetro es para definir los caracteres que queremos recortar.

Imprimir un rango de líneas determinadas mediante el comando awk y NR

Si en la salida del comando cat /etc/shells únicamente queremos imprimir las líneas o registros 2, 3 y 4 lo haremos del siguiente modo:

joan@gk55:~$ cat /etc/shells | awk 'NR==2, NR==4 {print $0}'
/bin/sh
/bin/bash
/usr/bin/bash

Si a la salida del comando que acabamos de ejecutar le quisiéramos añadir los número de línea lo haríamos del siguiente modo:

joan@gk55:~$ cat /etc/shells | awk 'NR==2, NR==4 {print NR, $0}'
2 /bin/sh
3 /bin/bash
4 /usr/bin/bash

Saber en que posición de una línea aparece una palabra o combinación de letras determinada mediante match y RSTART

Para saber la posición en que aparece una palabra o cadena de caracteres usaremos los parámetros match y RSTART. Su funcionamiento lo veréis en el siguiente ejemplo.

Para ver la posición en que aparece la palabra cpu en la salida del comando ps -aux ejecutaremos el siguiente comando:

joan@gk55:~$ ps -aux | awk 'match($0, /cpu/) {print $0 " Contiene la palabra \"cpu\" en la posición " RSTART}'
root           9  0.0  0.0      0     0 ?        I<   08:52   0:00 [mm_percpu_wq] Contiene la palabra "cpu" a la posición 75
root          15  0.0  0.0      0     0 ?        S    08:52   0:00 [cpuhp/0] Contiene la palabra "cpu" en la posición 69
root          16  0.0  0.0      0     0 ?        S    08:52   0:00 [cpuhp/1] Contiene la palabra "cpu" en la posición 69
root          21  0.0  0.0      0     0 ?        S    08:52   0:00 [cpuhp/2] Contiene la palabra "cpu" en la posición 69

La función match($0, /cpu/) busca todas las líneas que contienen un determinado patrón que en el caso del ejemplo es las letras cpu. Entonces mediante print y RSTART se imprimen o muestran en pantalla mostrando la posición en que aparece el patrón que estamos buscando.

Mostrar la longitud de un patrón mediante el parámetro RLENGHT

En el ejemplo del apartado anterior añadiremos que se muestre la longitud del patrón o texto que estamos buscando. Lo haremos con el parámetro RLENGTH del siguiente modo:

joan@gk55:~$ ps -aux | awk 'match($0, /cpu/) {print $0 " La longitud de la expresión buscada es " RSTART" La longitud del parámetro buscado es " RLENGTH}'
root           9  0.0  0.0      0     0 ?        I<   08:52   0:00 [mm_percpu_wq] La longitud de la expresión buscada es 75 La longitud del parámetro buscado es 3
root          15  0.0  0.0      0     0 ?        S    08:52   0:00 [cpuhp/0] La longitud de la expresión buscada es 69 La longitud del parámetro buscado es 3
root          16  0.0  0.0      0     0 ?        S    08:52   0:00 [cpuhp/1] La longitud de la expresión buscada es 69 La longitud del parámetro buscado es 3
root          21  0.0  0.0      0     0 ?        S    08:52   0:00 [cpuhp/2] La longitud de la expresión buscada es 69 La longitud del parámetro buscado es 3
joan      411346  0.0  0.1  11300  3040 pts/0    R+   14:01   0:00 awk match($0, /cpu/) {print $0 " La longitud de la expresión buscada es " RSTART" La longitud del parámetro buscado es " RLENGTH} La longitud de la expresión buscada es 83 La longitud del parámetro buscado es 3

REALIZAR OPERACIONES MATEMÁTICAS CON EL COMANDO AWK

Awk permite realizar operaciones matemáticas con los números de un fichero de texto o con los números que generan las salidas de los comandos. También es capaz de por ejemplo realizar operaciones matemáticas con valores almacenados en variables. Algunos ejemplos de lo que acabo de citar son los siguientes.

Realizar operaciones matemáticas con variables y awk

Si tenemos una variable a al que le asignamos el valor 10 y una variable b al que le asignamos el valor 20 podemos ejecutar el siguiente comando:

joan@gk55:~$ awk -v a="10" -v b="20" 'BEGIN {print "La multiplicación de a x b es", a*b;}'
La multiplicación de a x b es 200

Nota: Tenemos que usar la BEGIN porque no hay ninguna salida de texto o fichero a procesar. Todo lo que está dentro de BEGIN se ejecuta antes de procesarse un fichero o la salida de un comando. En contraposición END es todo lo que se ejecuta después de haber sido procesado un fichero o una salida de comando.

Nota: La forma de asignar una variable en awk es -v variable="valor"

Awk también permite llamar a variables que tenemos declaradas en nuestra shell de bash. Para ello lo haremos del modo que se muestra en el siguiente ejemplo:

joan@gk55:~$ a=1.5
joan@gk55:~$ b=4
joan@gk55:~$ awk -v a="$a" -v b="$b" 'BEGIN {print "La multiplicación de a x b es", a*b;}'
La multiplicación de a x b es 6

Calcular la raíz cuadrada de un número mediante awk

Del mismo modo que realizamos una suma podemos realizar restas, divisiones, multiplicaciones, etc. Así que se queremos obtener la raíz cuadrada de 400 lo haremos del siguiente modo:

joan@gk55:~$ awk 'BEGIN{print sqrt(400)}'
20

También podemos obtener un listado que nos proporcione resultados de la raíz cuadrada de una serie de números. Para ello podemos hacer uso de un bucle for de la siguiente forma:

joan@gk55:~$ awk 'BEGIN { for(i=1; i<=10; i++) print "La raíz cuadrada de", i*i, "es", i;}'
La raíz cuadrada de 1 es 1
La raíz cuadrada de 4 es 2
La raíz cuadrada de 9 es 3
La raíz cuadrada de 16 es 4
La raíz cuadrada de 25 es 5
La raíz cuadrada de 36 es 6
La raíz cuadrada de 49 es 7
La raíz cuadrada de 64 es 8
La raíz cuadrada de 81 es 9
La raíz cuadrada de 100 es 10

Y en el caso que quisieran obtener la raíz cuadrada de todos los números existentes entre el 0 y el 1 lo podrían hacer del siguiente modo:

joan@gk55:~$ awk 'BEGIN { for(i=0; i<=1; i=i+0.00001) print "La raíz cuadrada de", i*i, "es", i;}'
...
...
...
La raíz cuadrada de 0.99986 es 0.99993
La raíz cuadrada de 0.99988 es 0.99994
La raíz cuadrada de 0.9999 es 0.99995
La raíz cuadrada de 0.99992 es 0.99996
La raíz cuadrada de 0.99994 es 0.99997
La raíz cuadrada de 0.99996 es 0.99998
La raíz cuadrada de 0.99998 es 0.99999

EJECUTAR SCRIPTS CON EL COMANDO AWK

Como dijimos en el inicio del artículo awk es un lenguaje de programación. Podemos construir funciones, bucles y generar scripts usando el lenguaje awk. En nuestro caso definiremos un script para trabajar con los resultados que nos devuelve el comando df.

joan@gk55:~$ sudo df
S.ficheros     bloques de 1K    Usados Disponibles Uso% Montado en
udev                 1467404         0     1467404   0% /dev
tmpfs                 298144       904      297240   1% /run
/dev/sda1           56648848  13155828    40582968  25% /
tmpfs                1490708    351400     1139308  24% /dev/shm
tmpfs                   5120         4        5116   1% /run/lock
compartida         499451928 415539964    83911964  84% /media
tmpfs                 298140        56      298084   1% /run/user/1000

Lo que hará el script será lo siguiente:

  1. Mostrar solo las líneas que empiecen por la letra t y cuya capacidad disponible (Columna 4 «$4») sea mayor a 6000k
  2. De las columnas que se pueden mostrar solo imprimiremos en pantalla la (Columna 1 «$1»), que corresponde a la unidad, y la suma de la columnas 2 y 3 que corresponderá al espacio disponible.

Para generar un script simple con nombre capacidad.awk ejecutaremos el siguiente comando:

joan@gk55:~$ nano capacidad.awk

Una vez se abra el editor de textos escribiremos las instrucciones para conseguir nuestro propósito. En nuestro caso el código es el siguiente:

#!/usr/bin/awk -f

BEGIN { printf "%s\n","Voy a extraer las partes que me interesan del comando df" }
BEGIN { printf "%s\t%s\n","Unidad","Capacidad disponible" }
/^t/  && $4 > 6000 {print $1"\t"$2 + $3"K"}

Ahora ejecutaremos el script del siguiente modo y veremos que obtenemos el resultado deseado:

joan@gk55:~$ sudo df | awk -f capacidad.awk 

Voy a extraer las partes que me interesan del comando df

Unidad	Capacidad disponible
tmpfs	299048K
tmpfs	1845180K
tmpfs	298196K

Si también quisiéramos añadir las líneas que empiezan por c dejaríamos el script capacidad.awk del siguiente modo:

#!/usr/bin/awk -f

BEGIN { printf "%s\n","Voy a extraer las partes que me interesan del comando df" }
BEGIN { printf "%-12s %-3s\n","Unidad","Capacidad disponible" }
/^t/  && $4 > 6000 {printf "%-12s %-23s\n", $1, $2+$3"K"}
/^c/  && $4 > 6000 {printf "%-12s %-23d\n", $1, $2+$3"K"}

Nota: Si os fijáis en el contenido del script veremos que usamos la opción printf en lugar de print. De esta forma podemos dar formato a los datos de salida mostrados en pantalla. Los parámetros del comando printf harán lo siguiente:

%-: Justificar el texto a la izquierda.
%: Justificar el texto a la derecha.
12s: String de 12 caracteres.
23d: 23 caracteres con formato numérico decimal.
\n: Inserta una nueva línea.

Y el resultado obtenido seria el siguiente:

joan@gk55:~$ sudo df | awk -f capacidad.awk 
Voy a extraer las partes que me interesan del comando df
Unidad       Capacidad disponible
tmpfs        299048
tmpfs        1602408
compartida   923949580
tmpfs        298196

BUSCAR Y REEMPLAZAR TEXTO CON CON EL COMANDO AWK Y GSUB

Mediante la función gsub podemos buscar y reemplazar texto con awk de forma similar a como lo podemos hacer con sed. La función gsub se utiliza del siguiente modo:

gsub("letra_palabra_o_expresión_regular_a_buscar", "texto_que_reemplaza_el_buscado", lugar_donde_realizar_sustitución)

Buscar una expresión regular, palabra o letra y reemplazarla por otra

Por lo tanto si partimos del fichero de texto geekland.txt que tiene el siguiente contenido:

Geekland es el mejor blog, de tecnología

Y queremos reemplazar todas las G por g ejecutaremos el siguiente comando y obtendremos el siguiente resultado:

joan@gk55:~$ awk '{ gsub("G","g",$0); print $0 }' geekland.txt
geekland es el mejor blog, de tecnología

Buscar y reemplazar texto en únicamente una columna determinada

En nuestro caso la salida del comando df -h es la siguiente:

joan@gk55:~$ sudo df -h
S.ficheros     Tamaño Usados  Disp Uso% Montado en
udev             1,4G      0  1,4G   0% /dev
tmpfs            292M   916K  291M   1% /run
/dev/sda1         55G    13G   39G  25% /
tmpfs            1,5G   122M  1,4G   9% /dev/shm
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
compartida       477G   408G   69G  86% /media
tmpfs            292M    68K  292M   1% /run/user/1000

Siguiendo el mismo procedimiento que en el apartado anterior, si en la segunda columna queremos reemplazar todas las M por G procederemos del siguiente modo:

joan@gk55:~$ sudo df -h | awk '{ gsub("M","G",$2); print $2 }'
Tamaño
1,4G
292G
55G
1,5G
5,0G
477G
292G

Si en vez de imprimir la primera columna queremos imprimir la primera y la segunda de forma que la tabulación sea perfecta usaremos printf del siguiente modo:

joan@gk55:~$ sudo df -h | awk '{ gsub("M","G",$2); printf "%-12s %-12s\n",$1,$2 }'
S.ficheros   Tamaño      
udev         1,4G        
tmpfs        292G        
/dev/sda1    55G         
tmpfs        1,5G        
tmpfs        5,0G        
compartida   477G        
tmpfs        292G 

OTROS USOS QUE PODEMOS DAR AL COMANDO AWK

Hemos visto que el comando awk tiene multitud de usos. A continuación y para finalizar el artículo mostraremos un par de usos simples no detallados anteriormente.

Imprimir el contenido de un fichero con el comando awk

Awk se puede utilizar de forma similar al comando cat para mostrar el contenido de los ficheros de nuestro equipo. A modo de ejemplo para visualizar el contenido del fichero functions.php lo podemos hacer del siguiente modo.

joan@gk55:~/Nube$ awk '{print}' functions.php 
<?php
/**
 * Twenty Nineteen functions and definitions
 *
 * @link https://developer.wordpress.org/themes/basics/theme-functions/
 *
 * @package WordPress
 .....

Ejecutar un comando de bash mediante el comando awk

Awk permite ejecutar comandos bash sin ningún tipo de problema. Si por ejemplo queremos usar el comando pwd para imprimir la ruta en la que estamos ejecutaremos el siguiente comando:

joan@gk55:~$ awk 'BEGIN { system("pwd") }'
/home/joan

Si creen que hay usos interesantes del comando awk que no he citado les ánimo a escribir en los comentarios del blog.

Fuentes

https://www.um.es/innova/OCW/informatica-para-universitarios/ipu_docs/la_shell/awk.pdf

https://www.baeldung.com/linux/awk-guide

La entrada Uso del comando AWK en Linux y UNIX con ejemplos se publicó primero en geekland.

24 Nov 11:36

DuckDuckGo y Ecosia piden a la UE que prohíba a Google ser el buscador por defecto en navegadores y sistemas operativos

by Unknown

 Cuatro motores de búsqueda rivales de Google han pedido a los legisladores de la Unión Europea, en una carta abierta, que aborden el continuo dominio del mercado por parte del gigante tecnológico y que se establezcan normas para los menús de preferencias de los motores de búsqueda.


Leer más »
22 Nov 17:19

Megadron autónomo de la Policía Nacional Española: pesa 600 kg y alcanza los 130 km/h

by Unknown
La Policía Nacional lo llama "megadron", aunque su nombre técnico es Vehículo Aéreo Autónomo (AAV). Se trata de la última adquisición del cuerpo policial, que ha sido presentado estos días con motivo de Expodrónica en el marco del World ATM Congress.

Leer más »
22 Nov 16:50

Graves errores de seguridad obligan a suspender la web de T-Mobilitat de Barcelona

by Unknown

Un error en la web de la T-mobilitat ha dejado al descubierto los datos de las personas registradas en la plataforma. Según ha confirmado la Autoritat del Transport Metropolità (ATM) se ha tratado de un “error operativo” en la página web, que todavía está en fase de pruebas. Pese a que afirman que el acceso fue a “datos no sensibles” y durante un tiempo limitado, la ATM abrirá un expediente a la empresa responsable.



Leer más »
22 Nov 15:31

Evadiendo el seguimiento, rastreo, espionaje y vigilancia de Youtube con Freetube

by net0xide

Usualmente cuando queremos mirar algo en Youtube suele preocuparnos el seguimiento y vigilancia que esta plataforma podría ejercer sobre nuestro navegador web y dirección IP inyectando todas las cookies y código Javascript que le sea posible. Para solucionar ese problema, entre muchas otras opciones, aparece Invidious, el cual es un software libre y descentralizado que trabaja como proxy front-end indexando, registrando y mostrando vídeos y contenidos de Youtube. De esa manera, no necesitamos visitar la plataforma de Youtube directamente sino que ingresamos a la página web de algún nodo de Invidious en su lugar.

En consecuencia, podemos empoderarnos sobre las tecnologías que maneja y se ejecutan en nuestro navegador web y tomar el control minimizando el tráfico de ancho de banda, evadiendo el espionaje y vigilancia sin ejecutar el Javascript y códigos privativos de Youtube. Entre otras opciones, también tenemos la posibilidad de descargar vídeos en varias calidades de imágen y audio, así como inyectarlos en otras páginas, crear listas de reproducción y guardar suscripciones sin tener una cuenta en Google. Para conocer algunos nodos de Invidious, favor de visitar la página web oficial del proyecto.

Ahora bien, en base a Invidious, nace Freetube, un cliente y reproductor de Invidious, y por tanto de Youtube, para escritorio, enfocado a la privacidad, multiplataforma, licenciado bajo AGPLv3, traducido en múltiples idiomas y con un diseño muy amigable para el usuario promedio, que se conecta a un nodo de Invidious por defecto o el que nosotros prefiramos, importando e incorporando así todas las mejoras y novedades que Invidious pueda ofrecer. Desde descargar vídeos en alta definición, convertirlos en audio de múltiples formatos, guardar localmente un historial de nuestros vídeos vistos, favoritos y suscritos, bloqueando el seguimiento, espionaje, rastreo, vigilancia, cookies y Javascript de Youtube y personalizar una interfaz totalmente a la medida de cada uno, hasta incluir la opción para torificar nuestra conexión, es decir tunelizarla dentro de TOR, anonimizando así nuestra identidad, dirección IP y ubicación geográfica en Internet, y todo esto sin llegar a conectarse a Youtube ni a Google jamás porque de eso se encarga el nodo Invidious.

Para proceder a la instalación del mencionado en disputa podemos buscar en su página web oficial y/o su repositorio en Github donde se proveen los enlaces de descarga de binarios precompilados que permiten tanto ejecutar el software directamente de forma anidada como instalarlo en el equipo y también compilarlo desde el código fuente.

En caso de distribuciones GNU/Linux y derivadas:

  • Debian GNU/Linux y derivadas:

# Primero, actualizamos asegurándonos de tener todo al día y sin problemas
~$ sudo apt-get update
~$ sudo apt-get dist-upgrade

# Posteriormente instalamos gdebi, un software que nos permite instalar paquetes.deb junto con sus dependencias de forma fácil y rápida con solamente ejecutar 1 comando, en lugar de hacer sudo dpkg –install paquete.deb ; sudo apt-get –fix-broken install
~$ wget https://github.com/FreeTubeApp/FreeTube/releases/download/%version/paquete-de-freetube.deb
~$ sudo apt-get install gdebi
~$ sudo gdebi install -Paquete de Freetube-.deb

  • Fedora/CentOS/RHEL y derivadas:

# Lo mismo que anteriormente, actualizamos asegurándonos de tener todo al día
~$ sudo yum update

# Finalmente, procedemos con la instalación
~$ wget https://github.com/FreeTubeApp/FreeTube/releases/download/%version/paquete-de-freetube.rpm
~$ sudo yum install -Paquete de Freetube-.rpm

  • Arch Linux y derivadas:

# Con este único comando actualizamos e instalamos el paquete solicitado automáticamente
~$ sudo yay -Syu freetube-bin

  • Cuando todo falla, o si nos encontramos en una distribución fuera de las mencionadas, siempre tenemos el plan B:

# Flatpak es una tienda de aplicaciones y software, es muy fácil de usar y nos puede ayudar a instalar el software que necesitamos cuando todo lo anterior ha fallado o nos encontramos en una distribución fuera de las mencionadas
~$ wget https://dl.flathub.org/repo/appstream/io.freetubeapp.FreeTube.flatpakref
~$ sudo flatpak remote-add –if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
~$ sudo flatpak install flathub io.freetubeapp.FreeTube

  • Y por último, la vieja confiable para casos de emergencia o cuando no queremos complicarnos instalando y compilando el software:

# En caso de que todavía no funcione, procedemos a jugar la última carta descargando el binario precompilado AppImage, le asignamos permisos de ejecución y listo
~$ wget https://github.com/FreeTubeApp/FreeTube/releases/download/%version/paquete-de-freetube.AppImage
~$ sudo chmod +x -Paquete de Freetube-.AppImage
~$ ./-Paquete de Freetube-.AppImage

¡Happy hacking, linuxerxs!

22 Nov 15:07

Firefox 93 ya fue liberado y estas son sus novedades

by Darkcrizt

Firefox Logo

La nueva versión de Firefox 93 ya fue liberada junto con una actualización para las versiones con un período de soporte prolongado: 78.15.0 y 91.2.0.

De las principales innovaciones que se destacan de esta nueva versión del navegador podremos encontrar la compatibilidad habilitada de forma predeterminada para el formato de imagen AVIF (formato de imagen AV1), que utiliza tecnologías de compresión intracuadro del formato de codificación de vídeo AV1.

En ella se admiten espacios de color con una gama de colores completa y limitada, así como operaciones de transformación (rotación y espejo).

Otro de los cambios que se destaca de esta nueva versión es que se ha transferido a la categoría de motor WebRender obligatorio, que está escrito en el lenguaje Rust y permite lograr un aumento significativo en la velocidad de renderizado y reducir la carga en la CPU debido a la transferencia de las operaciones de renderizado del contenido de la página al lado de la GPU, que son implementados a través de shaders ejecutados en la GPU.

También se destaca que en esta nueva versión se ha añadido una capa que resuelve problemas con el portapapeles en entornos basados ​​en el protocolo Wayland. También incluye cambios para eliminar el parpadeo al mover la ventana al borde de la pantalla cuando se usa Wayland en configuraciones de múltiples monitores.

El visor de PDF integrado implementa la capacidad de abrir documentos con formularios XFA interactivos, que generalmente se utilizan en formularios electrónicos de varios bancos y agencias gubernamentales.

Además se habilitó la protección contra la descarga de archivos enviados a través de HTTP sin cifrado, pero iniciados desde páginas abiertas a través de HTTPS. Dichas descargas no están protegidas contra la suplantación de identidad como resultado del control sobre el tráfico de tránsito, pero dado que se realizan al cambiar de páginas abiertas por el usuario a través de HTTPS, puede surgir una falsa impresión sobre su seguridad. Si se intenta cargar dichos datos, se le mostrará al usuario una advertencia que le permitirá liberar el bloqueo si lo desea.

Además, las descargas de archivos de iframes aislados que no especifican explícitamente el atributo allow-downloads ahora están prohibidas y se bloquearán silenciosamente.

Otro cambio importante es la implementación mejorada del mecanismo SmartBlock, diseñado para resolver problemas en sitios que surgen del bloqueo de scripts externos en modo de navegación privada o al activar el bloqueo mejorado de contenido no deseado (estricto).

SmartBlock reemplaza automáticamente los scripts utilizados para el seguimiento con stubs para garantizar la carga correcta del sitio. Se han preparado stubs para algunos de los populares scripts de seguimiento de usuarios que figuran en Disconnect. La nueva versión incluye el bloqueo adaptativo de los scripts de Google Analytics, los scripts de la red publicitaria de Google y los widgets de los servicios Optimizely, Criteo y Amazon TAM.

En los modos de navegación privada y bloqueo estricto de contenido no deseado (estricto), se habilita la protección adicional del encabezado HTTP «Referer».

Para Windows, se implementó el soporte para la descarga automática de la pestaña de memoria, si el nivel de memoria libre en el sistema alcanza un valor críticamente bajo. En primer lugar, se descargan las pestañas que más memoria consumen y a las que el usuario no ha accedido durante mucho tiempo. Cuando cambia a una pestaña descargada, su contenido se vuelve a cargar automáticamente.

En Linux, se promete agregar la funcionalidad especificada en una de las próximas versiones.

De los demás cambios que se destacan de esta nueva versión:

  • El estilo del panel de descargas se ha ajustado al estilo visual general de Firefox.
  • En el modo compacto, se han reducido las sangrías entre los elementos del menú principal, el menú adicional, los marcadores y el historial de navegación.
  • Se ha agregado SHA-256 a la cantidad de algoritmos que se pueden usar para organizar la autenticación (autenticación HTTP) (anteriormente solo se admitía MD5).
  • Deshabilitado por los cifrados TLS predeterminados que utilizan el algoritmo 3DES. Por ejemplo, el conjunto de cifrado TLS_RSA_WITH_3DES_EDE_CBC_SHA es susceptible al ataque Sweet32.
  • El regreso de la compatibilidad con 3DES es posible con permiso explícito en la configuración de versiones anteriores de TLS.
  • En la plataforma macOS, se ha resuelto el problema de la pérdida de sesiones cuando Firefox se inicia desde un archivo «.dmg» montado.

¿Como instalar la nueva versión de Firefox 93 en Linux?

Usuarios de Ubuntu, Linux Mint o algún otro derivado de Ubuntu, pueden instalar o actualizar a esta nueva versión con ayuda del PPA del navegador.

Este lo pueden añadir al sistema abriendo una terminal y ejecutando en ella el siguiente comando:

sudo add-apt-repository ppa:ubuntu-mozilla-security/ppa -y
sudo apt-get update

Hecho esto ahora solo tienen que instalar con:

sudo apt install firefox

Para el caso de los usuarios de Arch Linux y derivados, basta con ejecutar en una terminal:

sudo pacman -S firefox

Ahora para quienes sean usuarios de Fedora o cualquier otra distribución derivada de esta:

sudo dnf install firefox

Finalmente si son usuarios de openSUSE, pueden apoyarse de los repositorios comunitarios, de los cuales podrán añadir el de Mozilla a su sistema.

Esto lo pueden hacer con una terminal y en ella tecleando:

su -
zypper ar -f http://download.opensuse.org/repositories/mozilla/openSUSE_Leap_15.1/ mozilla
zypper ref
zypper dup --from mozilla

Para el resto de las distribuciones de Linux, pueden descargar los paquetes binarios desde el siguiente enlace.  

19 Nov 22:45

El código de conducta de Ruby cambio por bromas sexistas en las listas de correo

by Darkcrizt

Actualmente estamos comenzando a ver diversos cambios que han surgido debido a la insatisfacción, molestias e incluso agresiones relacionados con el lenguaje y la forma en la que las personas suelen expresarse. Y es que no es algo que no se hubiera tocado antes, pero ahora esto ha comenzado a tener un mayor impacto y sobre todo ya muchos han comenzado a alzar la voz.

Sobre esto podríamos imaginarnos que estaríamos hablando sobre el lenguaje inclusivo el cual ha generado muchos movimientos y sobre todo a divido opiniones, pero lo cierto es que en el fondo de ello lo que se busca es el respeto y la no discriminación.

Y es que hablando sobre ello hace poco hubo una discusión entre los miembros de Ruby en Twitter y en GitHub en el cual sus participantes han dado a conocer su postura y opiniones sobre el cambio que se ha realizado en el Código de conducta del proyecto Ruby, que define los principios de comunicación amigable y respetuosa en la comunidad de desarrolladores.

Dentro de las modificaciones que se han realizado se menciona lo siguiente:

  • Se eliminó la cláusula que define la tolerancia para opiniones contrarias.
  • La frase que prescribe una actitud hospitalaria hacia los principiantes, los jóvenes participantes, sus profesores y los agradables «magos que escupen fuego» (probablemente personas que no pueden contener sus emociones) ha sido reemplazada por una general, prescribiendo tal actitud hacia todos los usuarios.
  • La cláusula de acoso se limita solo a las categorías protegidas, pero los panelistas no pudieron ponerse de acuerdo sobre lo que esto significa: por ejemplo, si el acoso que menciona la raza está prohibido o solo para los no blancos.
  • La frase de que las palabras y las acciones deben corresponder a las buenas intenciones se complementa con el hecho de que el participante debe comprender que las intenciones y consecuencias de las acciones pueden diferir.

Dichos cambios en el código de conducto se realizaron para proteger a los miembros del proyecto contra la transición de discusiones técnicas a escaramuzas sobre la base de diferencias de puntos de vista y para evitar declaraciones que sean ofensivas para ciertas personas bajo el disfraz de una opinión alternativa.

En particular, el motivo del cambio en el código fue un mensaje de un recién llegado a la lista de correo sobre un error en la evaluación de la expresión «Date.today +1». La autora de la publicación bromeó diciendo que tal error juega en manos de las mujeres a las que no les gusta revelar su verdadera edad.

Estoy muy decepcionado con la lista de correo Ruby en este momento. Un miembro más nuevo hizo una broma sexista y lo acusaron de inapropiado. Actualmente hay un hilo que debate los matices de la cultura, las bromas y todas las razones por las que no es gran cosa.

En respuesta, llovieron acusaciones de sexismo, insultos y críticas sobre la inadmisibilidad de chistes sobre personas vulnerables. Otros usuarios sintieron que la broma no era nada especial, y la reacción ofensiva de algunos participantes a la broma es quizás más inaceptable que la broma en sí.

Llegó al punto de los ultimátums con la intención de dejar de usar listas de correo si tales bromas se consideraban aceptables.

Quienes se oponen a cambiar el código creen que los representantes de diferentes culturas están representados en la comunidad y que no se puede esperar que aquellos que no son hablantes nativos de inglés conozcan todos los matices de la corrección política de otra persona.

También se teme que los cambios entierren la capacidad de expresar cualquier tipo de humor, ya que para cualquier broma definitivamente habrá alguien que se sienta ofendido.

Además debido a la percepción ambigua en la comunidad, los autores de los cambios piden que sean cancelados o reemplazados por un requisito para tratar de no iniciar discusiones políticas y otras «cismáticas».

Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

18 Nov 17:25

Hackean Twitch y filtran en un torrent 125GB datos privados

by Unknown

Un anónimo afirma haber filtrado la totalidad de Twitch, incluyendo su código fuente y la información de pago a los streamers. Se ha publicado un enlace torrent de 125GB en 4chan, en el que el autor afirma que la filtración tiene la intención de «fomentar más interrupciones y competencia en el espacio de transmisión de video en línea» porque «su comunidad es un pozo negro tóxico repugnante». Más de 6.000 repositorios de Git y al parecer no hay datos privados filtrados de los usuarios, excepto sus ganancias, pero no hay  credenciales, ni tarjetas de crédito, ni contraseñas en la filtración.


 

Leer más »
18 Nov 17:15

Grave vulnerabilidad servidor web Apache HTTP 2.4.49

by Unknown

Se ha publicado una vulnerabilidad en Apache 2.4.49 que se está reproduciendo de forma activa por actores maliciosos. Es una nueva vulnerabilidad crítica de Path Traversal afecta sólo en esa versión de Apache. La misma es identificada como CVE-2021-41773.



 

Leer más »
18 Nov 16:46

Crean señales Wifi dentro de un cable ethernet para robar datos

by Unknown

 ¿Una antena usando un cable ethernet? No es un error, es un mecanismo de exfiltración de datos recientemente descubierto. Este método emplea cables ethernet como una «antena de transmisión» para desviar sigilosamente datos altamente sensibles de sistemas air-gap, según las últimas investigaciones.

 


 

Leer más »
29 Oct 18:16

We need you to help test our releases

by Koen Vervloesem
We want to make sure that every Ubuntu Touch release we ship is better than the previous one. That’s why every release goes through a QA (Quality Assurance) process. And you can help with it. If you’...
20 Oct 17:07

#07 - Peertube y Planeta KDE

by kde_express@kde-espana.org (KDE Express Team)

Se acerca el aniversario de KDE, pero antes tenemos tiempo de tratar temas de todo tipo sobre todo relacionados con la promoción del trabajo de la comunidad. Si tienes 20 minutos (o 12 a 1.75x) escucharas en que andamos metidos y eventos que vienen de camino entre otros temas de los que os dejamos a continuación los enlaces.

Artículo original en https://kdeexpress.gitlab.io/07/

Si no ves nada tras esta linea, es que tu app no sabe leer bien el feed RSS, avisales o prueba otra ;)

Enlaces mencionados:


Puedes escuchar este episodio y seguir el podcast en tu propia aplicación facilmente con este enlace a Podlink o este a Podnews.

Transcripción a texto y subtítulos más abajo 👇, en la web steno.fm o en estas apps.

Este podcast tiene licencia Reconocimiento-CompartirIgual 4.0 Internacional (CC BY-SA 4.0).

15 Oct 07:20

Install Party el sábado 16 en Linux Center

by Miguel Menéndez

Una Install Party es un evento en el mundo real en el que se ayuda a instalar una distribución de GNU/Linux. Este evento está orientado a personas que pueden conocer GNU/Linux pero no se animan a instalarlo en sus ordenadores. Para participar sólo hay que apuntarse al evento (por temas de logística) y llevar un ordenador portátil. El próximo sábado 16 de octubre se hará una Install Party en Linux Center (Valencia). Detrás de Linux Center está Slimbook, una empresa valenciana que ensamblan ordenadores que tienen un buen soporte de GNU/Linux. En total hay 22 plazas y quedan 12 plazas libres en el momento de publicar esta entrada. Si estás interesado puedes usar este enlace del evento.

Agenda de la Install Party

La agenda de la Install Party está divida en dos partes. En la primera, que empieza a las 10:15 y termina a la hora de comer se presentan una serie de charlas relacionadas con el software libre. La segunda parte, que empieza a las 15:30, es la Install Party.

  • 10.15 Què es el Programari Lliure? – Pasqual Guerola i Alex Climent.
  • 12.00 Pausa para el café, té y picoteo, invitados todos los asistentes y pagado por Slimbook.
  • 12.15 Aniversario de KDE, 25 años – Baltasar Ortega.
  • 13.00 Ordenadores con GNU/Linux: Slimbook – Alejandro López
  • 14.00 Comida libre (los asistentes pueden traer bocadillos de casa o pedirse comida para que se la traigan).
  • 15.30 Install Party o taller de instalación de GNU/Linux en vuestros ordenadores.

Exposición de Slimbook

Exposición de Slimbook

Localización y medidas COVID

Una vez os habéis apuntado, el siguiente punto es llegar a Linux Center. Los datos son:

  • Linux Center
  • C/ Ronda de la Química s/n
  • Edificio ABM L’Andana, 7ª planta
  • (Frente a Parque Tecnológico)
  • 46980 Paterna, Valencia

Podéis poner “Linux Center” en Google Maps y os indicará como llegar. En el evento se tendrá gel en la entrada de Linux Center y mascarillas para los que no lleven una propia. Se renovará el aire y el aforo estará más limitado que en otras ocasiones para mantener las medidas de seguridad.

Organizadores

Los organizadores del evento son:

El evento es gratuito y no se retransmitirá por streaming. Si quieres participar, hay que ir físicamente. El cartel el evento lo ha diseñado ESME.

Install Party Linux Center

Install Party Linux Center (ESME)

Conclusiones

Una Install Party es una buena forma de instalar GNU/Linux en un ordenador con ayuda extra. Aunque el proceso es sencillo, si que os recomiendo tener una copia de seguridad de la información importante en un disco externo. De esa forma, si algo sale mal, siempre nos podemos recuperar de un error. Las charlas que dan antes de la Install Party son interesantes y ayudan a conocer más cosas de la comunidad. ¿Os animáis a participar?

Resumen para asistir:

  • Ordenador portátil con ratón y cargador.
  • Memoria USB para pasar la ISO de GNU/Linux.
  • Espacio libre en el disco duro, por ejemplo 25 GB.
  • Copia de seguridad de los datos en un disco externo (recomendable).
  • Ganas de aprender.
  • Pingüino de Tux (opcional).

Nota: si se puede instalar GNU/Linux en un ordenador que tenga Windows 11.

La entrada Install Party el sábado 16 en Linux Center se publicó primero en InnerZaurus.

12 Oct 20:27

Trucos para hacer huevos fritos que funcionan (y otros que no) | EL COMIDISTA

by El Comidista en EL PAÍS

"No sabe hacer ni un huevo frito" es una expresión habitual para describir a esas personas que lo ignoran todo de la cocina. Sin embargo, alcanzar la excelencia con este plato no es tan fácil, y el mundo está lleno de huevos fritos reguleros.

Los mandamientos para no fallar con el huevo frito ya te los dimos en nuestra sección Cocina para lerdos, pero desde entonces hemos detectado la presencia de unos cuantos truquis supuestamente milagrosos en YouTube y TikTok. El Comidistest ha pasado por su filtro cinco técnicas: el paquetito de clara con la yema dentro, los huevos a cascoporro en bandeja de horno, el huevo frito con vapor, en molde o en forma de nube cuqui. Varios funcionan, uno está realmente bien y otro es una basura. https://bit.ly/ComiditestHuevosFritos

Suscríbete a nuestro canal: http://cort.as/-9ysp
Visita: https://elcomidista.elpais.com
Síguenos en Facebook: https://www.facebook.com/elcomidista
Síguenos en Twitter: https://twitter.com/ElComidista Síguenos en Instagram:
https://www.instagram.com/elcomidista
12 Oct 20:17

Los engaños de los productos infantiles | EL COMIDISTA

by El Comidista en EL PAÍS

Cierta industria alimentaria vende como beneficiosos productos en absoluto saludables para los niños. ¿Cuáles son las técnicas más habituales para confundir a los padres? https://bit.ly/enganosproductosinfantiles

Suscríbete a nuestro canal: http://cort.as/-9ysp
Visita: https://elcomidista.elpais.com
Síguenos en Facebook: https://www.facebook.com/elcomidista
Síguenos en Twitter: https://twitter.com/ElComidista Síguenos en Instagram: https://www.instagram.com/elcomidista
¡Bienvenido al canal oficial de EL COMIDISTA en EL PAÍS! Cada semana publicamos nuevos vídeos de gastronomía, recetas, restaurantes, productos, chaladuras culinarias y mucho más. ¡Suscríbete ya a nuestro canal!: http://cort.as/-9ysp
El Comidista es una web muy maja que incluye recetas, info sobre trastos de cocina, restaurantes, productos y cualquier tontería que se les ocurra a sus autores.
El Comidista es una web muy maja que incluye recetas, info sobre trastos de cocina, restaurantes, productos y cualquier tontería que se les ocurra a sus autores.

Visita ➜ https://elcomidista.elpais.com/
Síguenos en Facebook ➜ https://www.facebook.com/elcomidista/
Síguenos en Twitter ➜ https://twitter.com/ElComidista
Síguenos en Instagram ➜ https://www.instagram.com/elcomidista
11 Oct 20:58

Curry verde tailandés de ternera | EL COMIDISTA

by El Comidista en EL PAÍS

Aunque la palabra "curry" se suele asociar a "comida india", este plato tiene un importante arraigo en otros lugares de Asia. Japón es uno de ellos,
pero si existe un país que pueda plantar cara a la India y Pakistán en
variedad y excelencia, es Tailandia. Los currys verdes, rojos o
amarillos, populares ya en medio mundo gracias a los restaurantes thai, son sólo la punta del iceberg de una cultura gastronómica exhuberante en este tipo de preparaciones.
Los
currys tailandeses son más frescos y herbáceos que los indios. Pueden
picar como un demonio, pero tienen la ventaja de que son muy rápidos de
hacer. Así lo demuestra el curry verde que nos preparó Alejandro
Zurdo, autor de Comiendo en las calles de Asia, en el
restaurante Kitchen 154 de Madrid. Él usó ternera y boniato, pero su
fórmula vale para cualquier tipo de hortaliza, carne o pescado. Todo lo
tienes en el vídeo de arriba.
RECETA ESCRITA: https://bit.ly/CurryVerdeTailandes

Suscríbete a nuestro canal: http://cort.as/-9ysp
Visita: https://elcomidista.elpais.com
Síguenos en Facebook: https://www.facebook.com/elcomidista
Síguenos en Twitter: https://twitter.com/ElComidista
Síguenos en Instagram: https://www.instagram.com/elcomidista
¡Bienvenido al canal oficial de EL COMIDISTA en EL PAÍS! Cada semana publicamos nuevos vídeos de gastronomía, recetas, restaurantes, productos, chaladuras culinarias y mucho más. ¡Suscríbete ya a nuestro canal!: http://cort.as/-9ysp
El Comidista es una web muy maja que incluye recetas, info sobre trastos de cocina, restaurantes, productos y cualquier tontería que se les ocurra a sus autores.
11 Oct 20:47

🔴 NO PODRÁS CREER LO QUE HE HECHO CON MATERIALES ELECTRÓNICOS

by LlegaExperimentos

NO PODRÁS CREER LO QUE HE HECHO CON MATERIALES ELECTRÓNICOS
👉 5 PCB´s por $2 (Color purpura o cualquier otro): https://jlcpcb.com/DYE
👉 Esquema Amplificador: http://bit.ly/2Dy4JFy
👉 Tienda Online Componentes Electrónicos: https://lcsc.com/

Música utilizada:
Track: Andromedik - With Me [NCS Release]
Music provided by NoCopyrightSounds.
Watch: https://youtu.be/pyj9yJO4rbA
Free Download / Stream: http://ncs.io/WithMeYO
09 Oct 20:27

🔵 ELECTRICIDAD GRATIS #shorts

by LlegaExperimentos
08 Oct 17:53

B.U.G.S. núm. 63 – “Creencias”

by Pedro Pérez Gómez

La entrada B.U.G.S. núm. 63 – “Creencias” se publicó primero en Linux Hispano.

08 Oct 06:55

Informativo matinal 08:10:21

by Solocomedia

😻😽🔔 Y recuerda que cada vez que te suscribes al canal y activas la campanita, un gatito sonríe y juega feliz con un ovillo de lana. 😻😽🔔
➡️ https://cutt.ly/Tffbse6 ⬅️

Si te aburres, también puedes seguirnos por nuestras redes sociales:
▶️ Instagram: https://www.instagram.com/solocomedia/
▶️ Twitter: https://twitter.com/solocomedia
▶️ Facebook: https://www.facebook.com/solocomedia

Y si quieres saber cosas que pasan con la comedia aquí en España pásate por
www.solocomedia.com

Hay cosas GRATIS.
07 Oct 17:11

Monitoriza los procesos en Linux

by victorhck

Veamos algunos comandos para monitorizar los procesos que eventos que crea el kernel linux en nuestro sistema

Las herramientas para la línea de comandos más comunes en nuestras distribuciones GNU/Linux para tener un control de los procesos del sistema son ps, pstree, pidof o pgrep que forman parte del conjunto de herramientas procps-ng (que incluye alguna otra herramienta como free o watch).

Los procesos son eventos que son gestionados por el kernel del sistema, en este caso Linux. Los procesos son creados cuando lanzas una aplicación o se ejecutan en segundo plano para mantener la hora del sistema, monitorizar el sistema de archivos.

A cada proceso del sistema se le asigna un número o identificador también conocido como IP o PID, que será la manera de gestionar dicho proceso, parándolo, matándolo, conocer quién lo creó, etc.

Estas herramientas pueden ser muy útiles a la hora de gestionar procesos de aplicaciones que se quedan colgadas, o se “vuelven locas” haciendo que el sistema falle.

Este artículo es una traducción/adaptación del artículo en inglés escrito por Seth Kenlon para la web opensource.com y publicado bajo una licencia CC-by-sa.

Ya vimos en el blog unas cuantas herramientas externas para monitorizar tu sistema de una forma más gráfica desde la línea de comandos:

Pero con las herramientas que ofrece procps-ng, podremos ir más al detalle, encontrando el identificador de un proceso, ya sabes el ID o PID. Para ello tenemos herramientas como ps, pstree, pidof o pgrep.

Encontrar el PID de un programa en ejecución

En la ocasión en la que quieras saber cual es el identificador del proceso ID o PID de una aplicación específica que sabes que se está ejecutando, puedes utilizar pidof o pgrep para encontrar esos procesos.

El comando pidof devuelve los PID de un comando, buscando por el nombre exacto. Como yo utilizo zsh, puedo saber los PID que este ha creado mediante:

$pidof zsh
4039 4038 4011 4005

El comando pgrep permite la búsqueda con expresiones regulares. Por ejemplo al buscar con pidof x11 no encuentra nada, porque hay que proporcionarle el nombre exacto.

Pero una búsqueda con pgrep que contenga la cadena x11 sí nos proporciona resultados:

pgrep .x11                                                                                     
1242
1381
1723

Obtener el nombre del proceso por el PID

Si conces el PID de un proceso, pero no sabes qué comando ha lanzado ese proceso, puedes realizar una “búsqueda inversa” mediante el comando ps:

ps 4011
PID TTY STAT TIME COMMAND
4011 pts/0 S 0:00 /bin/zsh

Listar todos los procesos

El comando ps muestra un listado de los procesos. Puedes verlos todos con la opción -e. Pero si solo quieres ver los creados por tu usuario (o el usuario que desees) puedes hacerlo con la opción -U <nombre>.

ps -U victorhck

Pero mejor que este comando, quizás es pstree, que nos muestra la salida de los procesos, pero en forma de árbol viendo qué proceso fue creado por quién, etc. Además también podemos hacer que nos muestre el número del proceso:

pstree -U victorhck --show-pids

Matando un proceso

Ahora que ya sabemos cómo conseguir el PID de un proceso, podremos “matarlo” para acabar con él, si este está creando conflictos en nuestro sistema y no responde a otras formas de acabar con el.

Por ejemplo si queremos matar un proceso, simplemente escribiremos:

kill <número_PID>

Y esto sería suficiente para terminarlo instantáneamente.


Espero que te haya resultado útil el artículo. ¿Ya conocías estos comandos? ¿Los utilizabas? ¿uilizas otros? Utiliza los comentarios para compartir tus experiencias y opiniones.

07 Oct 08:45

Informativo matinal 07:10:21

by Solocomedia

😻😽🔔 Y recuerda que cada vez que te suscribes al canal y activas la campanita, un gatito sonríe y juega feliz con un ovillo de lana. 😻😽🔔
➡️ https://cutt.ly/Tffbse6 ⬅️

Si te aburres, también puedes seguirnos por nuestras redes sociales:
▶️ Instagram: https://www.instagram.com/solocomedia/
▶️ Twitter: https://twitter.com/solocomedia
▶️ Facebook: https://www.facebook.com/solocomedia

Y si quieres saber cosas que pasan con la comedia aquí en España pásate por
www.solocomedia.com

Hay cosas GRATIS.
06 Oct 21:46

🔵 CÓMO HACER FUEGO CON ELECTRICIDAD #shorts

by LlegaExperimentos

CÓMO HACER FUEGO CON ELECTRICIDAD #shorts
06 Oct 11:00

Trenza de Almudévar: el dulce que conquistó España (y quiere imitar Mercadona) | EL COMIDISTA

by El Comidista en EL PAÍS

Puedes ser poco entusiasta de los dulces. Puede no emocionarte la bollería. Pero cuando pruebas la trenza de Almudévar, es difícil no caer rendido de amor como el príncipe de Rapunzel: ese
sabor a mantequilla, ese hojaldrado mullido, ese crocante de los frutos
secos y esa capa quebradiza de glasa vencen las reservas del más
glucofóbico.
Inspirada piezas similares de la repostería centroeuropea, la trenza se empezó a elaborar en la pastelería Tolosana de Almudévar (Huesca) en los años ochenta. Desde entonces, su popularidad no ha dejado de crecer: se vende online y en tiendas físicas de 32 provincias españolas, y hasta una gran cadena de supermercados como Mercadona ha intentado imitarla.
RECETA ESCRITA: https://bit.ly/trenzaAlmudevar
Suscríbete a nuestro canal: http://cort.as/-9ysp
Visita: https://elcomidista.elpais.com
Síguenos en Facebook: https://www.facebook.com/elcomidista
Síguenos en Twitter: https://twitter.com/ElComidista Síguenos en Instagram:
https://www.instagram.com/elcomidista
¡Bienvenido al canal oficial de EL COMIDISTA en EL PAÍS! Cada semana publicamos
nuevos vídeos de gastronomía, recetas, restaurantes, productos, chaladuras culinarias y
mucho más. ¡Suscríbete ya a nuestro canal!: http://cort.as/-9ysp
06 Oct 10:30

🔵 CÓMO HACER UNA BRUJULA CASERA #shorts

by LlegaExperimentos

CÓMO HACER UNA BRUJULA CASERA #shorts
06 Oct 09:09

Informativo matinal 06:10:21

by Solocomedia

😻😽🔔 Y recuerda que cada vez que te suscribes al canal y activas la campanita, un gatito sonríe y juega feliz con un ovillo de lana. 😻😽🔔
➡️ https://cutt.ly/Tffbse6 ⬅️

Si te aburres, también puedes seguirnos por nuestras redes sociales:
▶️ Instagram: https://www.instagram.com/solocomedia/
▶️ Twitter: https://twitter.com/solocomedia
▶️ Facebook: https://www.facebook.com/solocomedia

Y si quieres saber cosas que pasan con la comedia aquí en España pásate por
www.solocomedia.com

Hay cosas GRATIS.
05 Oct 16:40

¿Por qué cayeron Facebook, WhatsApp e Instagram más de 6 horas? Por culpa del BGP

by Unknown

 Al parecer una actualización rutinaria de los BGP de Facebook no se produjo correctamente. En consecuencia se estropeó el acceso y también interrumpió el acceso remoto a los ingenieros para solucionarlos. Por otro lado, las personas con acceso físico a los BGP no tenían conocimiento para realizar los arreglos


 

Leer más »
05 Oct 16:27

Caída de Facebook

by danigm

La entrada Caída de Facebook se publicó primero en Linux Hispano.