Buscar aquí

30 junio 2015

buscar archivos por el nombre, en un directorio en particular

find es una herramienta muy poderosa, que por defecto, busca en todos los directorios de manera recursiva (considera todos los directorios existentes bajo el que estamos buscando y dentro de estos y así), sin embargo, para algunas tareas puede ser necesario, que busque sólo en un directorio en particular, sin considerar los demás directorios, entonces para ello, se puede usar la opción prune:

find /mi/directorio/* -prune -name 'tntcpi_fm.log.*' -mtime +5 -exec rm {} \+

el argumento /mi/directorio/* es donde buscará, y el * es importante porque sin este no realiza la búsqueda al usar prune.

con -name le damos un patrón del nombre en este caso debiera comenzar co la palabra tntcpi_fm.log. el nombre del archivo

mtime +5 indica que además considere los archivos que fueron modificados más de 5 días atrás

exec le indicamos que ejecute algún comando para ese archivo, en este caso es un rm para eliminar el archivo encontrado.


26 marzo 2015

Obtener la fecha en distintos formatos

Siempre la manipulación de la fecha es un lío, una manera fácil de hacer, es utilizando el mismo comando date -funciona en linux y HPUX- por ejemplo:

[arturo@Linux ~]$ date -u +%Y-%m-%d
2015-03-26

el -u indica que queremos la salida de la fecha y con + entregamos el formato que queremos, aquí un par más:

[arturo@Linux ~]$ date -u +%X
02:38:53 PM
[arturo@Linux ~]$ date -u +%F
2015-03-26


o junto:

[arturo@Linux ~]$ date -u +%F-%X
2015-03-26-02:39:42 PM






ahora si quisieramos por ejemplo un archivo con la fecha, podriamos hacer algo así:
NOMARCHIVO="archivo_del_"`date -u +%F`".txt"
touch $NOMARCHIVO

entonces:

[arturo@Linux ~]$ NOMARCHIVO="archivo_del_"`date -u +%F`".txt"
[arturo@Linux ~]$ touch $NOMARCHIVO
[arturo@Linux ~]$ ll $NOMARCHIVO
-rw-rw-r--. 1 arturo arturo 0 Mar 26 11:42 archivo_del_2015-03-26.txt





20 marzo 2015

Leer un archivo con un script en shell

Muchas veces es necesario procesar los contenidos de un archivo desde el shell de linux para ejecutar alguna acción, por ejemplo:

#!/bin/sh

while read line
do
    echo $line
 done <  nombre_del_archivo

Este script hace algo muy simple, lee cada linea del archivo y la escribe por pantalla.  Hay una diferencia importante, es que este script considera todo el contenido de la linea, mientras que al usar una sentencia for, toma sólo la primera palaba hasta el separador, que por defecto es el espacio, por eso, es común tener algún problema al usar la sentencia for cuando se quiere leer la línea completa.

En el caso del for sería algo así:

for linea in `cat archivo`
do
     echo $linea
done

04 marzo 2015

Utilizar el contenido de un archivo para generar otro, pero filtrado

Muy común es la necesidad de utilizar el contenido de un archivo para generar otro, sea este nuevo un informe, un subconjunto del utilizado como fuente, por ejemplo, tenemos un archivo con los siguientes datos

123 marcelo rut 123712
421 jorge rut 88876
8766 marcela rut 98787
766 fernando rut -

lo guardo en un archivo llamado awktest para efectos de mostrar el funcionamento.

Si se fijan, el último tiene un guión en lugar de número, entonces, en el caso que quiera obtener los registros que tengan la palabra rut y seguida de un conjunto de números, podemos utilizar el comando awk de la siguiente forma:

[test@Linux ~]# awk '/rut/&&/ +[0-9]/ { print $0 }' awktest
123 marcelo rut 123712
421 jorge rut 88876
8766 marcela rut 98787

Ahora, el efecto de utilizar algo así:  awk '/ +[0-9]/ { print $0 }' awktest para este caso entrega el mismo resultado, salvo si existiera un registro con un registro como:
765 pablo RuT 6543

Este sera mostrado:
[test@Linux ~]# awk '/ +[0-9]/ { print $0 }' awktest.awk
123 marcelo rut 123712
421 jorge rut 88876
8766 marcela rut 98787
765 pablo RuT 6543

a diferencia del primer comando, donde busca la palabra rut de manera literal.

Ahora el comando se compone así:

  • awk, el comando en sí mismo.
  • El símbolo ' indica el inicio los parametros para el comando distintos al archivo o entrada
  • El texto existente entre los slash / son los elementos que busca de manera literal.  El texto a buscar debe ir entre dos slash.
  • El símbolo & repetido, indica un y lógico, un AND, entonces decimos que busque rut y el segundo elemento.
  • El elemento +[0-9] quiere decir que debe ir una cadena de numeros, entre 0 y 9, con al menos un número y no importa cuantos exista.
  • Entre los símbolos { } están las acciones que se aplicarán a los registros que cumplan con la condición, en este caso print $0 muestra la línea completa entrante.
  • Finalmente el archivo que será utilizado como entrada
Este es un uso muy simple para la inmensa potencialidad de awk, pues en sí mismo es un pseudo lenguaje de programación.




23 febrero 2015

Problemas con Applets Java

Desgraciadamente es bastante común en Linux tener problemas con las applets Java, por asuntos de seguridad, y existe una enorme cantidad de causas bajo este tipo de problema, a la hora de intentar de cargar la applet.  Una opción, es que si saben que el sitio es inofensivo y el applet les debe cargar necesariamente, se puede ajustar la opción de seguridad en el panel de control de la versión de java que estemos ejecutando, para ello:

¿Dónde esta el ejecutable de java que estamos usando? podemos utilizar el comando which, algo así:
which java, y nos responderá: /usr/bin/java, esto quiere decir que estamos usando alternatives entonces a continuar debemos ejecutar:


[miuser@Linux ~]$ alternatives --display java
java - status is manual.
 link currently points to /usr/java/jre1.7.0_60/bin/java





y con esto obtendremos la ruta de donde está ubicado el java que estamos utilizando.  Entonces ahora basta con que ejecutemos el Panel de Control de Java, para usamos hasta bin de la ruta obtenida, algo así:


/usr/java/jre1.7.0_60/bin/ControlPanel

 aparece una ventana como esta:



Como ven, dice Java in the browser is enabled See security tab, entonces debemos revisar la tab Security, veremos algo como esto:



 Ahora aquí es donde le diremos que nuestro sitio ES DE CONFIANZA y que no nos bloquee las applets por temas de seguridad, entonces hacemos click en botón Edit Site List y veremos algo como:



Entonces agregamos las URL presionando Add basta con agregar el comienzo de la URL, por ejemplo: http://miservidor:8080 o http://miservidor.miempresa.com depende netamente de la URL que se use.

Después de presionar Ok, si la URL inicia con HTTP y no HTTPS, aparece una advertencia que podemos ignorar, pues consideren que estamos indicando a Java, que no se preocupe por las applets que tenga este sitio, que las cargue sin cuestionarlas y esto, es tremendamente peligroso, por eso, esto lo podemos hacer sólo con sitios internos o que conozcamos perfectamente.