martes, 1 de marzo de 2016

LINUX-CENTOS-LAB-ejercicios comando cut

En el siguiente lab vamos a aprender cómo utilizar el comando cut para obtener información relevante de archivos del server.
cut, sirve para cortar información en forma de columnas dentro de un archivo.

Considerar los siguientes parámetros del comando


-d indica cómo es el delimitador  
-f indica la columna a considerar. 
-s muestra las líneas que contienen el delimitador indicado. 
--output-delimiter= depliega la info cambiando el caracter delimitador entre columnas 



Obtener los nombres de usuario del archivo /etc/shadow

Vista del archivo
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
...
[root@localhost ~]#
En el siguiente ejemplo el archivo /etc/shadow usa el carcter ":" como separador de columnas.

[root@localhost ~]# cut -d':' -f1 /etc/shadow
root
bin
daemon
...
[root@localhost ~]#


Obtener el nombre, directorio y bash de los usuarios del archivo /etc/shadow

[root@localhost ~]# cut -d':' -f1,6,7 /etc/passwd

root:/root:/bin/bash

bin:/bin:/sbin/nologin

daemon:/sbin:/sbin/nologin

...

[root@localhost ~]#


Obtener los usuarios que no tienen passwd en el archivo /etc/shadow

Para obtener aquellos usuarios que no tienen passwd, utilizamos la opción -s que indica que sólo se muestran las líneas que tienen el delimitador. 

Vista del archivo
[root@localhost ~]# cat /etc/shadow 
root:$6$ZSjJBeB8mYNRRqgV$nEHPaQu6wXf29mhqR9fgMVBHwMzBgjAilSeIJKECZ3MXz.sAesYc0CZ0KLgDnbihEcpmNHdBbQToxa.5hKuaY0:16756:0:99999:7:::dbus:!!:16756::::::...copito:$6$MMxS6dyY$KvEI/15ND667Pex44.2dthmC8XQyGCOJbzCDjWB0w1q0hFB6CoxrSQGhTnqtbhOFikJEhOs9H410o1L6RUgBR/:16835:0:99999:7::29220:userest:$6$h9oph1io$u6ALg/I7g8baWto3H782KikqLJUfAxL/mCAWWeusg5X.GNOvnig2ofO.DSVgSoSWRgqrEQchq28GdF8IatA25/:0:0:99999:7:::userest4:$6$BfT6WGBS$J/50aQMc4UMsMr/eqpOrQ9q1GCPdJU/V13O9J/VBKmtVGR3HTjFjXMpusWmRq5ip3CnYCq//kDAa3gWMc1ZEX.:0:0:99999:7::16842:userest5:!!:16839:0:99999:7:::userest6:!!:16839:0:99999:7:::...[root@localhost ~]# 

El truco es utilizar dos veces el comando:
La primera vez como delimitador el caracter "!" que es parte de la segunda columna, y aparece sólo cuando el usuario no tiene passwd "!!"

[root@localhost ~]# cut -d'!' -f1 -s /etc/shadow
avahi-autoipd:
bus:
polkitd:
tss:
postfix:
sshd:
serest5:
userest6:
systemd-bus-proxy:
systemd-network:
[root@localhost ~]#


La segunda vez, sólo para separar el caracter ":" que queda al final de cada usuario.

[root@localhost ~]# cut -d'!' -f1 -s /etc/shadow | cut -d':' -f1avahi-autoipddbuspolkitdtsspostfixsshduserest5userest6systemd-bus-proxysystemd-network[root@localhost ~]# 

 NOTA: para el ejericio anterior no sirve utilizar el comando grep para filtrar por "!!" ya que ocurre lo siguiente:
  
[root@localhost ~]# grep "!!" /etc/shadowgrep "cat /etc/shadow" /etc/shadow[root@localhost ~]# 

Sin embargo sí lo podemos utilizar para otro tipo de filtros, tal como el siguiente ejemplo: 

Obtener todos los usuarios que utilizan bash

[root@localhost ~]# grep "/bin/bash" /etc/passwd | cut -d':' -f1rootuserest4userest5userest6[root@localhost ~]# 

Cambiar el caracter delimitador en la salida de información. 

Es posible cambiar el caracter delimitador entre columnas en la información desplegada. 

[root@localhost ~]# cut -d':' -f1,2,3 --output-delimiter=';' /etc/passwd root;x;0bin;x;1daemon;x;2...[root@localhost ~]# 

Cambiar las columnas como líneas en la salida de información. 


[root@localhost ~]# cut -d':' -f1,2,3 --output-delimiter=$'\n' /etc/passwd rootx0binx1daemonx2...[root@localhost ~]# 




No hay comentarios:

Publicar un comentario