LINUX – Comandos Lsattr y chattr: leer y establecer atributos especiales (Bit Inmutable o Bit Append Only).

Además de los permisos de lectura, escritura, y de ejecución asociados con el dueño, el grupo propietario y el resto de los usuarios del sistema, Linux nos permite establecer otros atributos en archivos y directorios. Por muchos motivos, podemos necesitar que ciertos archivos dentro de un sistema Linux tengan una protección total ante su borrado, incluso para usuarios administradores (root) quienes por equivocación o descuido, pudieran borrar ese fichero.

El comando lsattr nos permite leer los atributos especiales que pudiese tener activado un directorio o un archivo en particular :

Para bloquear el borrado o modificación de un fichero para cualquier usuario de un sistema, necesitamos configurar el bit «immutable», +i del comando chattr (Esta acción se debe realizar con cuenta root). Para quitar el atributo se realiza con el parámetro -i :

Para evitar borrar o modificar información de un archivo, se realiza configurando el bit «append only». Esto es muy útil para proteger los archivos de log. Para quitar el atributo se realiza con el parámetro -a :

Publicado en Unix - Linux | 3 comentarios

Renombrar varios archivos a la vez, en lote, desde consola (linux).-

1) Añadir algo tras una parte del nombre del archivo que es común en todos los ficheros.
Ejemplo:
imagenXXXX.jpg por imagen_NEW_XXXX.jpg

2) Renombrar un grupo de imágenes con nombres diferentes. Si tenemos un grupo de imágenes (por ejemplo PNG) a las que les queremos añadir una información en la parte final del nombre de la imagen antes de la extensión.
Ejemplo:
nombreimagen.png por nombreimagen_150x150.png

3) Vamos a suponer que queremos reemplazar los guiones bajos por guiones medios («_» por «-«) en los nombres de nuestros archivos de un directorio determinado.

4) Añadir texto al inicio del nombre del fichero. Con el carácter ^ le indicamos al comando rename que se sitúe en el comienzo del nombre del fichero y ahí inserte o ejecute la segunda parte.
Ejemplo:
leccion 1.doc,
leccion 2.doc …
por
tema – leccion 1.doc,
tema – leccion 2.doc …

5) Si queremos eliminar varios caracteres antes de un punto de corte determinado.
Ejemplo:
texto1_abc_001_small.jpg,
texto2_abc_002_small.jpg,
texto3_abc_003_small.jpgpor
texto1_small.jpg,
texto2_small.jpg,
texto3_small.jpg
Utilizamos para el corte la cadena «_small» y le decimos que nos elimine los 8 caracteres (\w) anteriores, o los reemplace por lo que indiquemos en la segunda parte del comando rename.

5b) Si queremos reemplazar desde un punto determinado de corte, pero respetando un número concreto de caracteres numéricos antes de la parte donde se produce el corte. Para este caso usamos el elemento «$1» en la cadena de la parte derecha, para que nos coja esa variable obtenida de la parte izquierda.  Viendo el ejemplo se entenderá mejor.
Ejemplo:
texto1_uno001_small.jpg,
texto2_otro002_small.jpg,
texto3_cualquiera003_small.jpg …por
texto1_uno_ADD-001_small.jpg,
texto2_otro_ADD-002_small.jpg,
texto3_cualquiera_ADD-003_small.jpg …

Utilizamos para el corte la cadena «_small» y le decimos que nos guarde los 3 caracteres numéricos (\d) anteriores (001, 002, 003…) utilizando el $1 en la segunda parte del comando (la expresión de la derecha) Nos añadirá o modificara lo indicado en la segunda parte del comando rename justo antes de esos 3 caracteres reservados antes del corte.

6) Cambiar mayúsculas y minúsculas.
Ejemplo:
mi_fichero.txt por MI_FICHERO.TXT

7) Eliminar del nombre del fichero caracteres especiales que no están entre la letra a y la z (a-z) . Dejando en el nombre del fichero solo caracteres alfanuméricos.
Ejemplo:
mi-fichero.txt por mifichero.txt

Para cambiar varios caracteres lo ejecutamos varias veces:
Ejemplo:
mi-fichero-con-varios-caracteres.txt por mificheroconvarioscaracteres.txt
Lo ejecutaremos 4 veces.

Publicado en Unix - Linux | Deja un comentario

BASH – Creador de directorios con bash scripting.-

Lo que queremos hacer es lo siguiente, primero comprobar si el directorio que nosotros indicamos ya existe, y si existe obviamente no lo vamos a crear, pero vamos a informar al usuario de que ya existe, con un texto personalizado. En caso contrario, si este directorio no existe, vamos a crearlo.

Como es una buena práctica controlar los procesos para saber si han funcionado bien o no, crearemos un mensaje personalizado para que el usuario tenga más información. Para ello evaluaremos si la ejecución anterior ha ido bien o mal, indicando al usuario con un texto personalizado si el directorio se ha creado con éxito o no.

Publicado en Unix - Linux | Deja un comentario

LINUX – Comando cp de Linux. Un par de trucos útiles.-

El comando cp en GNU/Linux sirve para copiar un archivo o carpeta trabajando en la línea de comandos. Pero esconde muchas opciones.

A la opción ya conocida de -r (recursive) para que copie la carpeta Fotos_movil y todo el contenido de la misma, hemos añadido la opción -u (“update“) para que actualice el contenido en la carpeta destino y sólo copie aquellas fotos o datos que no estuvieran ya en el destino. Y con la opción -v (“verbose“) el comando muestra en pantalla las tareas que va realizando.

Imaginemos que estamos trabajando en un archivo llamado texto.md y lo estamos modificando, pero queremos tener una copia de seguridad o backup, de los distintos archivos antes de ir modificándolos, es aquí cuando el comando cp hace su magia.

En el comando lo que hacemos es copiar el mismo archivo encima de sí mismo. Esto con el comando cp no se puede hacer, pero en este caso especial queremos que sea así por tanto forzamos al comando que lo haga con la opción –force

La opción –backup=numbered le dice al comando que quiero hacer un backup del archivo indicado, y que las sucesivas copias de seguridad que haga quiero que estén numeradas consecutivamente. La primera será la 1, la segunda la 2, etc…

Ahora modificamos nuestro archivo texto.md una vez guardado volvemos a ejecutar el comando anterior para tener un nuevo archivo de respaldo. Si listamos los archivos que tenemos en nuestro equipo con el comando ls veremos que tenemos algo similar a esto:

Publicado en Unix - Linux | Deja un comentario

BASH – Ejecutar comando remoto mediante SSH sin Password (EXPECT).-

Estamos acostumbrados a ejecutar comando en nuestra maquina local de manera sencilla. Esto también se hace sencillo utilizando la herramienta EXPECT, a continuación unos pequeños ejemplos de uso :

Le damos permisos de jecución : chmod +x execute.sh y ya podremos utilizarlo : ./execute.sh “ls -l” Con esto te mostrara el listado del servidor en donde hayas lanzado el comando. Otros ejemplos para bajar o subir archivos a un servidor mediante el comando SCP :

Publicado en Unix - Linux | Deja un comentario