BATCH- Script respaldo documento EXCEL con 10 versiones.

Este script lo grabaría en el escritorio de WINDOWS. Al pincharlo realizara una copia de la planilla EXCEL, hasta un máximo de 10 versiones. Al llegar a la versión 10, desaparecerá la versión más antigua y esta se grabar como versión 10 (la mas reciente). Luego abrirá la planilla EXCEL para trabajar. Se puede adaptar a la imaginación del usuario.

Publicado en BATCH - DOS | Etiquetado , | Deja un comentario

BATCH – Obtener fecha y hora en SCRIPT BATCH Windows 10 para renombrar archivos o carpetas.

Al ejecutar el script, se obtiene el siguiente resultado. Pudiendo adaptarlo a cualquier situación que se requiera.

Publicado en Unix - Linux | Deja un comentario

BATCH – Script manejo de 2 archivos de texto. Resultado de comando en VARIABLE BATCH.  ERROR “no se reconoce como un comando interno o externo” en Script BATCH.

Para este ejemplo se utilizan 2 archivos de texto plano. “factura.txt” el cual contiene datos de facturas, con un código que es único en el archivo. El segundo archivo es “detalle.txt” el cual contiene el detalle de las facturas, identificados por el código de la factura y pueden ser múltiples líneas en el archivo.

El script une estos 2 archivos en el archivo “facdet.txt” el cual contiene las facturas y luego el detalle de dicha factura.

Existe un error que me dio en algún momento, específicamente en el comando “findstr” que se ejecuta dentro del ciclo FOR. Al ejecutar el SCRIPT me daba error “ no se reconoce como un comando interno o externo”.

Pero si el comando lo ejecutaba en la línea de comando o en el script fuera del ciclo FOR, si lo ejecutaba en forma correcta. Busqué alguna solución en la WEB y me di cuenta que muchas personas tenían este problema. La solución que daban todos era por problemas con la variable “PATH” de Windows. No era mi caso.

El problema me lo origino el antivirus que tenía, que por algún motivo, bloqueo la ejecución, pero solo cuando se gatilla dentro del ciclo FOR. Ni idea por qué.   Elimine el bloqueo y el problema se solucionó. Por si a alguien le pueda servir.

Publicado en Unix - Linux | Deja un comentario

BATCH – Contar caracteres de una cadena (largo de una variable) Script BATCH (cmd).-

La cadena se le pasa como parámetro al SCRIPT. Si la cadena contiene ESPACIOS, se debe ingresar encerrada en comillas simples

Publicado en Unix - Linux | Deja un comentario

LINUX – Matar procesos en forma masiva (Kill -9).

Lo utilizo directamente desde la consola de comando. En este ejemplo elimino todos los procesos de la cuenta (colono). Comando en una linea.

Publicado en Unix - Linux | Deja un comentario

BASH – Ejecutar un SCRIPT local en varios servidores remotos (Unix – Linux).

Para este ejemplo ingresaremos una lista de servidores en una archivo txt (remotes.txt). El SCRIPT leerá cada servidor del archivo y procederá a ejecutar el SCRIPT LOCAL (script.sh) en los servidores remotos.

Publicado en Unix - Linux | Deja un comentario

Editor VI.

Vi ha sido el primer editor de texto a pantalla completa para sistemas Unix . Además fue creado con la intención de que fuese sencillo en su uso y ligero para no cargar sobremanera el sistema. Para aquellos acostumbrados a usar editores de texto mediante en entornos gráficos, puede resultar un poco abrupto y complejo su aprendizaje, pero si bien porque estamos al cargo de un servidor Linux o porque nuestro entorno gráfico está dando problemas y no carga, deberíamos ser capaces de editar ficheros desde un editor como Vi / Vim.

Veamos los diferentes comandos básicos de movimiento, inserción y borrado (siempre en modo comando):

ComandoSignificado
hMover el cursor a la izquierda.
jMover el cursor hacia abajo.
kMover el cursor hacia arriba.
lMover el cursor hacia la derecha.
iInsertar texto en la posición actual del cursor (Insert), pasando a Modo Inserción. Se permanece en modo inserción hasta que se sale explícitamente de él.
ESCSalir del modo inserción y volver a modo comando. En modo comando, permite cancelar muchos de los comandos que se están ejecutando.
xBorrar el caracter bajo el cursor (equivale a la tecla Del/Supr).
XBorrar el caracter a la izquierda del cursor (equivale a la tecla Borrar/Backspace).
JJuntar la línea actual con la siguiente (Join), eliminando el retorno de carro entre ellas.
uDeshacer la última acción (Undo). Si lo pulsamos más veces desharemos acciones anteriores.
CTRL+RRehacer la última acción (Redo). Si lo pulsamos más veces reharemos acciones posteriores deshechas.
aInsertar texto en la siguiente posición tras el cursor (Append). Es similar a i, salvo que el texto no se inserta en la posición actual del cursor sino a su derecha.
APoner el cursor al final de la línea y pasar a modo inserción (añadir texto al final).
oCrear una línea vacía, en blanco, bajo la línea actual, y pasar a modo inserción con el cursor posicionado en dicha línea. Es mucho más cómodo que (como en otros editores) tener que pulsar FIN y ENTER para crear una línea en blanco.
OCrear una línea vacía, en blanco, sobre la línea actual. Sería el equivalente en otros editores a ARRIBA, ARRIBA, FIN, ENTER.
ddBorrar la línea actual (sobre la que está el cursor).
DBorrar desde la posición actual del cursor hasta el final de la línea.

En la mayoría de comandos de Vim podemos añadir counts, que es como se conoce a los repetidores del comando. El count es un número que se teclea antes del comando para que se repita varias veces. Unido a la potencia del modo comando nos da mucho juego para la edición. Veamos unos cuantos ejemplos:

ComandoSignificado
10ddRepetir 10 veces el comando dd, es decir borrar 10 líneas empezando desde la línea actual. Es el equivalente a teclear manualmente 10 veces dd, y mucho más rápido que seleccionar 10 líneas a mano con ratón o cursores.
5xRepetir 5 veces el comando x, es decir, borrar 5 caracteres empezando desde el carácter actual. Equivale a pulsar manualmente 5 veces el comando x.
60i-<ESC><ENTER>Insertar 60 guiones consecutivos. Este comando se teclea en modo comando pulsando 6, 0, i, guión, y pulsando la tecla ESCAPE y luego pulsar ENTER para validar el comando. Al hacerlo, estamos diciendo que se repita 60 veces la secuencia i guión ESCAPE, es decir, pasar a modo inserción, escribir un guión, y volver al modo comando pulsando ESCAPE. El 60 que hay delante lo repite 60 veces, con lo cual tenemos 60 guiones en pantalla. ¿No es mucho más cómodo al programar, para introducir separadores de comentarios, que pulsar el guión 60 veces o durante varios segundos mientras miramos la columna en la que estamos?
10iHola<ENTER><ESC><ENTER>(pulsar ESC y ENTER como las teclas ESC y ENTER, no tecleando la cadena) Aparece la palabra Hola 10 veces en pantalla, cada vez en una línea propia. Su significado, al igual que en el ejemplo anterior, sería repite 10 veces la secuencia i, Hola, ENTER, ESC, que pasa a modo inserción, escribe Hola, pasa a la siguiente línea con ENTER, y vuelve a modo comando.

Los comandos básicos a la hora de editar ficheros son:

ComandoSignificado
:wGrabar los cambios del fichero actual.
:w nombreGrabar el contenido actual del buffer en un fichero de nombre nombre.
:q!Salir del editor sin grabar ningún cambio en el fichero actual (descartando cualquier cosa que hayamos hecho desde su apertura o última vez que grabamos).
ZZSalir del editor grabando los cambios en el fichero actual. También sirve 😡 o :wq!.
CTRL+GObtener información en la barra de estado del nombre del fichero que estamos editando, línea actual, número de líneas, en qué porcentaje del fichero estamos, y número de columna.
:e ficheroAbrir un fichero en el buffer actual (si está vacío) o en uno nuevo (si tenemos el buffer actual en uso)

En el caso de que hayamos abierto con :e más de un fichero, podemos movernos entre ellos con:

ComandoSignificado
:bnSiguiente buffer (fichero).
:bpAnterior buffer (fichero).
:bdCerrar buffer (fichero) actual.

En Vim podemos aplicar las búsquedas, borrados y modificaciones no sólo a la línea actual o a la totalidad del documento, sino que también podemos hacer referencia a porciones del texto:

Rango definido con…Significado
%Todo el documento.
n,MBloque de líneas desde la n a la M.
‘a,’bBloque de líneas entre las marcas a y b.
‘<,’>Bloque de texto seleccionado en modo visual.

Por ejemplo:

:17,20d                -> Borrar líneas de la 17 a la 20

:’a,’b s/hola/adios/g  -> Cambiar cadena en el bloque entre las marcas ‘a y ‘b

Hemos dicho que con el modo comando de Vim tenemos muchas más opciones que con el modo inserción (o que en otros editores), pero hasta ahora sólo hemos visto una ínfima parte de las posibilidades de Vim. Como veremos ahora, no tenemos porqué movernos carácter a carácter, línea a línea o página a página. Vamos a poder movernos a la palabra anterior y la siguiente, a cualquier parte del fichero, etc.

ComandoSignificado
wMueve el cursor al principio de la siguiente palabra de la línea actual, o de la siguiente línea si estamos en la última palabra de la línea.
bMueve el cursor al principio de la anterior palabra de la línea actual, o de la anterior línea si estamos en la primera palabra de la línea.
eIgual que w, pero coloca el cursor en el último carácter de la siguiente palabra (al final de la palabra en lugar de al principio).
geIgual que b, pero coloca el cursor en el último carácter de la anterior palabra.
W, B, E y gEIguales que wbe y ge, pero con una peculiaridad. En mayúsculas, nos movemos de palabra en palabra considerando como separador de palabra sólo los espacios en blanco y retornos de carro, mientras que en minúsculas, Vim utiliza un modo inteligente con más separadores de palabras, como el guión o la barra. Por ejemplo, en el caso de tener la frase cadena1-cadena2 cadena3 o cadena1/cadena2 cadena3 con el cursor sobre el primer carácter, w avanzaría el cursor hasta primera letra de cadena2, mientras que W lo avanzaría hasta la primera letra de cadena3.
$Mueve el cursor al final de la línea (equivalente a la tecla Fin).
0Mueve el cursor al principio de la línea (equivalente a la tecla Inicio).
^Mueve el cursor al primer carácter no blanco de la línea. Perfecto a la hora de programar, cuando queremos corregir cosas en el código, normalmente indentado con espacios o tabuladores al principio de las líneas.
{Mueve el cursor al anterior párrafo (o bloque de código).
}Mueve el cursor al siguiente párrafo (o bloque de código).
f<carácter>Realiza una búsqueda en la línea actual del carácter indicado. Por ejemplo, fx mueve el cursor a la primera aparición del carácter x desde la posición actual. Muy útil para ir rápidamente a partes concretas de una línea sin llevar la mano al ratón (por ejemplo, para corregir una h que sea un error ortográfico, pulsando fh.
F<carácter>Igual que el comando anterior, pero realizando la búsqueda hacia atrás en la línea actual (empezando desde la posición actual del cursor).
t<carácter> y T<carácter>Similares a f<carácter> y F<carácter> salvo que posicionan el cursor en el carácter anterior a la letra buscada.
; y ,Repiten la ejecución del último comando f, F, t o T hacia adelante (;) o hacia atrás (,).
ESCEn el caso de búsquedas f, F, t o T, permite cancelar la búsqueda.
%Al pulsarlo sobre un paréntesis abierto o cerrado (, ), corchete abierto o cerrado [, ] , o llave abierta o cerrada {, }, mueve el cursor a la pareja de dicho elemento. Por ejemplo, si estamos programando y queremos saber cuál es el paréntesis que cierra el paréntesis sobre el cual está el cursor, pulsamos % y vim nos lleva directamente a él. Como también funciona con corchetes y llaves, podemos encontrar fácilmente qué llave cierra un bloque de código, o qué if/for/while/loquesea es el que ha abierto una determinada llave de cierre en un programa en C que estemos depurando.
<NUMERO>GIr a la línea número NUMERO del documento. Por ejemplo, 100G nos llevaría a la línea número 100. Es especialmente útil a la hora de programar, cuando tenemos que ir a líneas concretas del programa donde el compilador nos ha reportado errores.

Si no estamos programando pero queremos utilizar números de líneas (porque nos parece más cómodo), podemos hacer uso de las siguientes opciones de modo comando:

ComandoSignificado
:set numberActiva la numeración de líneas.
:set nonumberDesactiva la numeración de líneas.
:set rulerActiva en la barra de estado una indicación de la columna y fila actual.

Cualquiera de estas opciones las podemos poner en nuestro fichero .vimrc para que se apliquen a todos los documentos que editemos, o cambiarlas en cualquier momento en modo comando.

ComandoSignificado
ggIr a la primera línea del documento (equivale a 1G)
GSin número delante, G nos lleva a la última línea del documento.
<NUMERO>%Nos lleva a un porcentaje concreto del fichero. Por ejemplo 50% nos lleva a la mitad del fichero, y 95%, casi al final del mismo.
CTRL+FScrollea una pantalla completa hacia adelanta (F de Forward).
CTRL+BScrollea una pantalla completa hacia atrás (B de Backward).
CTRL+EScrollea la pantalla en una sóla línea hacia arriba.
CTRL+YScrollea la pantalla en una sóla línea hacia abajo.
CTRL+UScrollea media pantalla de texto hacia abajo (el equivalente a hacer medio RePág). Puede sonar raro el hecho de scrollear medias pantallas, pero en determinadas situaciones puede ser útil (si no queremos perder de vista texto ya leído cuando avanzamos, por ejemplo).
CTRL+DScrollea media pantalla de texto hacia arriba (como hacer medio AvPág). Permite así avanzar el documento media página sin perder de vista el texto donde está el cursor.
zzSin modificar la posición actual del cursor, modifica la ventana de visualización del fichero de forma que la línea actual acabe centrada en pantalla y podamos ver el contexto. Por ejemplo, supongamos que estamos en la parte de abajo de la pantalla con el cursor en la última línea y necesitamos ver con facilidad y claridad qué líneas hay sobre y bajo ella. En otros editores usaríamos la tecla de Abajo hasta centrar un poco la línea en pantalla y luego subiríamos hacia arriba para volver a la línea en que estábamos. En Vim basta con pulsar zz para centrar la línea actual en pantalla sin mover la posición del cursor para nada.
ztIgual que zz pero posicionando la línea en la parte superior de la pantalla (t viene de top) lo que nos permite ver con claridad la línea actual y muchas líneas posteriores.
zbIgual que zt, pero posicionando la línea en la última posición de la ventana de pantalla, lo que nos permite ver la línea actual y muchas líneas anteriores. En ambos 3 comandos no se modifica la posición del cursor en el documento, sólo la manera de verlo en pantalla.

De nuevo podemos utilizar multiplicadores en todos los comandos anteriores para evitarnos pulsaciones innecesarias de teclas:

ComandoSignificado
20wAvanzar 20 palabras.
3fxAvanzar el cursor a la tercera aparición de la letra x en la línea actual, desde la posición del cursor.

Por último, respecto a comandos de movimiento, existen 3 comandos muy especiales que nos permiten posicionar el cursor al principio, medio y final de la pantalla. Ojo, no principio, medio y final del fichero, sino de la pantalla, de lo que vemos en nuestro monitor:

ComandoSignificado
HPosiciona el cursor al principio de la pantalla (sin hacer scroll de ella).
MPosiciona el cursor en el centro de la pantalla.
LPosiciona el cursor en la parte baja de la pantalla.
ComandoSignificado
4dwRepetir 4 veces dw, es decir, borrar 4 palabras.
d4wBorrar el resultado de 4w, es decir, borrar el resultado de moverse 4 palabras.

Como algunos modificaciones y operadores se utilizan tanto, Vim nos proporciona unos atajos de una sola letra para ejecutarlos:

AtajoEquivalenteSignificado
xdlBorrar el carácter bajo el cursor.
XdhBorrar el carácter a la izquierda del cursor.
Dd$Borrar hasta el final de la línea.
Cc$Cambiar el texto hasta el final de la línea.
sclCambiar un carácter.
SccCambiar la línea completa.

Gracias a la potencia de Vim, entre operadores y multiplicadores podemos hacer la edición muchísimo más rápida. Veamos algunos comandos más avanzados:

ComandoSignificado
dwBorrar desde el cursor hasta el final de la palabra actual. Por ejemplo, si estamos encima de la letra m de la palabra automóvil, ejecutando dw quedaría tan sólo la palabra auto. Recuerda que w avanza hasta el siguiente separador de palabra y W hasta el siguiente espacio entre palabras, de modo que también podemos usar dW si es lo que nos interesa.
dbBorrar desde el cursor hasta el principio de la palabra actual. Por ejemplo, si estamos encima de la letra m de la palabra automóvil, ejecutando db quedaría tan sólo la palabra móvil.
diwBorrar la palabra bajo el cursor (completa), desde su principio hasta su final, estemos donde estemos dentro de la palabra.
dawBorrar la palabra bajo el cursor, igual que diw, pero en este caso si existe un espacio tras la palabra también lo borra.
disBorrar la frase (no línea, sino frase hasta el próximo punto) sobre la que está el cursor.
dasIgual que dis, pero si existe un espacio tras la frase también lo elimina.
dGBorrar desde la posición actual del cursor hasta el final del fichero.
dggBorrar desde la posición actual del cursor hasta el principio del fichero.

Otra de las operaciones básicas de búsqueda es el reemplazo de cadenas, es decir, cambiar en todo el fichero (o en una parte del mismo) una cadena por otra. Esto se hace con el comando de sustitución :s.

Por ejemplo, para cambiar todas las apariciones de la cadena hola por adios, haremos:

Este comando viene a decirle a Vim que sustituya (s), en todo el fichero (%), la cadena hola por adios, y que si en una línea encuentra más de una aparición de hola, que cambie todas (g). Si quitamos la g, sólo cambiaremos la primera aparición de hola en cada frase. Si además de la g añadimos una i, se hará una comparación que no distingue mayúsculas de minúsculas.

Recordad que en el caso de usar expresiones regulares tendremos que escapar ciertos caracteres especiales, como los puntos, las barras, etc, en la parte de búsqueda. Por ejemplo:

El resumen del uso básico de la sustitución en Vim es:

ComandoSignificado
:%s/cad1/cad2/Reemplazar en cada línea del fichero la primera aparición de cad1 (sea cadena o expresión regular) por cad2.
:%s/cad1/cad2/gReemplazar en cada línea del fichero todas las apariciones de cad1 por cad2.
:%s/cad1/cad2/giReemplazar en cada línea del fichero todas las apariciones de cad1 por cad2, sin distinguir mayúsculas y minúsculas
:%s/cad1/cad2/gcReemplazar en cada línea del fichero todas las apariciones de cad1 por cad2
pidiendo confirmación en cada reemplazo.
:%s/cad\(regexp\)ena/cad\1ena2/gcUtilizar en la sustitución parte de la búsqueda por expresión regular
:n,NcomandoCualquiera de los 3 ejemplos anteriores, sobre un rango de líneas.
:'<,’>comandoCualquiera de los ejemplos anteriores, sobre la selección «visual» actual.
‘<,’> aparece cuando tenemos un texto seleccionado y pulsamos «:».
:’a,’bs/cad1/cad2/gRealizar la sustitución en el texto entre 2 marcas (a y b en el ejemplo).
:%s//CAD2/gReutilizar la última búsqueda realizada para el reemplazo (búsqueda vacía en %s)

A continuación mostramos una serie de ejemplos basicos útiles que no tienen cabida en otra sección pero que pueden resultar interesantes si el lector no los ha deducido ya para realizar una tarea concreta:

  • :%s/*$/ → Eliminar espacios en blanco al final de línea en todo el documento.
  • :%s/TABULADOR*$// → Eliminar espacios en blanco y tabuladores al final de línea en todo el documento.
  • :g/cadena/d → Eliminar todas aquellas líneas que contienen una cadena o patrón.
  • :g/^ *#/d → Eliminar todas las líneas de comentarios de python (que desde el principo de línea haya 0 o más espacios y una almohadilla). Aplicación del ejemplo anterior.
  • :g!/cadena/d → Eliminar todas aquellas líneas que no cumplen un patrón indicado.
  • :1,$ s/^V^M// → Eliminar retornos de carro de MSDOS (las teclas ^V y ^M se corresponden con Ctrl+V y Ctrl+M y hay que pulsarlas primero una y después la otra, no teclear su texto).
Publicado en Unix - Linux | Deja un comentario

LINUX – Comando TR – Ejemplos para aprender el uso.

En el caso que tengamos un texto y queramos transformar la totalidad de a a A lo haremos del siguiente modo:

En el caso que queramos reemplazar todas las vocales de una frase de minúscula a mayúscula lo podemos hacer del siguiente modo:

En el caso que queramos transformar la totalidad de letras mayúsculas a minúsculas lo podemos hacer del siguiente modo:

Si queremos también podemos añadir una línea nueva al fichero geekland.txt que sea igual que la primera pero en minúscula siguiendo el siguiente procedimiento:

Si ejecutamos el siguiente comando:

Vemos que ha ocurrido lo siguiente:

La letra a se reemplaza por la A. La b por la B y a partir de aquí la cef… hasta llegar la z se reemplazarán por la B.

Si queremos evitar este comportamiento podemos usar la opción -t o truncate. Si ejecutamos el mismo comando añadiendo la opción -t:

Vemos que ha ocurrido lo siguiente:

La letra a se reemplaza por la A. La b por la B y a partir de aquí no se reemplazará ninguna otra letra. El comportamiento ahora será de este modo gracias a la opción -t. Por lo tanto la opción -t hace que la longitud del primero de los argumentos introducidos en el comando tr sea igual que la del segundo argumento.

Nota: Con la opción -t el primero de los argumentos introducidos del comando tr tiene que tener una longitud igual o superior al segundo de los argumentos.

Si queremos borrar todas las vocales mayúsculas y minúsculas de una frase y que sean reemplazadas por un espacio en blanco lo haremos mediante la opción tr -d. Un ejemplo de lo que acabo de citar es el siguiente:

Si quisiéramos que las vocales borradas fueran reemplazadas por espacios en blanco deberíamos haber usado el siguiente comando:

Para borrar todo el contenido de una frase excepto las vocales aeiou, tendremos que usar la opción -c. La opción -c o complemento vendría a actuar como lo contrario a la orden que introducimos en el comando. Por lo tanto para borrar todas las letras que no sea vocales de una frase lo haremos del siguiente modo:

Para borra todos los caracteres que no son legibles, se utiliza el siguiente comando :

Nota: Mediante la opción -cd '[:print:]' estamos diciendo que se borre todo carácter que no se imprimible/legíble. Además la opción \n hará que al finalizar la tarea el cursos de la terminal quede ubicado en una nueva línea.

Para borra todo lo que no sea un digito o numero se realizara con el siguiente comando :

Si por lo contrario quieren borrar la totalidad de números que aparecen a la frase tan solo tendrían que eliminar la opción -c complemento y obtendrían el siguiente resultado:

En ocasiones escribimos rápido y es posible que por error escribamos 2 caracteres repetidos de forma consecutiva. Un ejemplo de lo que acabo de citar es el siguiente:

En el ejemplo vemos que a la palabra ejemplo le sobran dos e. Para eliminarlas lo podemos hacer con la opción -s Squeeze del siguiente modo:

Si tuviéramos una frase con exceso de espacios, como por ejemplo la siguiente:

Y quisiéramos eliminar los espacios sobrantes lo haríamos del siguiente modo:

Transformar los espacios en tabulaciones horizontales o verticales con TR

En el ejemplo que propondremos a continuación tenemos 3 palabras separadas por un espacio:

Si queremos transformar este espacio por un tabulación lo haremos usando la opción [:space:] y \t del siguiente modo:

La opción \t añade una tabulación horizontal. Si quisiéramos añadir una tabulación vertical lo haríamos con la opción \v del siguiente modo obteniendo un resultado parecido al siguiente:

Generar una nueva línea cada vez que encontremos un determinado carácter delimitador

Si tenemos una frase, que obviamente está compuesta por palabras separadas por espacio, podemos separar cada una de las palabras en una nueva línea usando la siguiente sintaxis:

Obviamente este artículo únicamente detalla algunas de las opciones del comando tr.

Publicado en Unix - Linux | Deja un comentario

Lenguaje programación AWK.

Articulo obtenido desde la siguiente página : «https://learnxinyminutes.com/docs/es-es/awk-es/».

Usando el buscador, puedes obtener más códigos útiles del lenguaje AWK..

AWK es una herramienta estándar en cada sistema UNIX compatible con POSIX. Es como un Perl restringido, perfecto para tareas de procesamiento de texto y otras necesidades de scripting. Tiene una sintaxis similar a C, pero sin puntos y comas, manejo manual de memoria y tipado estático. Puedes llamarlo desde un script de shell o usarlo como un lenguaje stand-alone para scripting.

¿Por qué elegir AWK sobre Perl? Principalmente, porque AWK es parte de UNIX. Siempre puedes contar con él, mientras que el futuro de Perl está en duda. AWK es más fácil de leer que Perl. Para scripts sencillos de procesamiento de texto, particularmente si es para leer archivos línea a línea y dividir por delimitadores, probablemente AWK es la herramienta correcta para el trabajo.

Publicado en Unix - Linux | Deja un comentario

LINUX – Poniendo color a nuestros SCRIPTS.

También existe la posibilidad de darle un toque más visual a aquello que imprimimos por pantalla; eso se logra mediante la inclusión de Etiquetas de color y mediante el mostrado de la cadena mediante el comando echo -e «cadena». Una etiqueta de color siempre tiene que ser almacenada en una variable y tienen que tener la siguiente estructura:

Los colores que se quieren especificar poseen un código númerico en concreto; es decir no se puede especificar un color como Rojo, negro, etc… Se tratan de códigos algo complejos de memorizar, es por ello que os listo a continuación cada color con su correspondiente código:

Queremos mostrar esta cadena con diferentes colores; para ello crearemos cuatro variables llamadas ROJO, CYAN, VERDE y BLANCO y haremos que la palabra vamos se muestre en rojo, las palabras a probar se muestren en cyan, la palabra diferentes se muestre en verde y por último la palabra colores se muestre en blanco.El código para lograr dicho sería el siguiente:

Publicado en Unix - Linux | Deja un comentario

BASH -Script verificar correcta ejecución.-

El siguiente script intenta crear un subdirectorio tmp/project en el directorio actual. En la condición de la sentencia if verificamos si el valor de la variable $? es diferente de 0. Si ese es el caso, imprimimos un mensaje de error y salimos del script con el código de salida 1. La rama else imprime un mensaje exitoso y se ejecuta solo si el valor de $? es 0

Publicado en Unix - Linux | Deja un comentario

BASH – LINUX ver fecha de caducidad de un certificado SSL (Plugin NAGIOS para renovar certificado SSL).-

Para la correcta ejecución debe tener instalado OPENSSL . El SCRIPT solicita 4 argumentos para su ejecución :

1 = Nombre servidor 2=Puerto 3=Días WARNING 4=Días CRITICAL

Para ejecutarlo se debe dar permisos de ejecución :

chmod u+x check_cert.sh

Para ejecutarlo :

./check_cert.sh volcan01 443 20 10

Se obtiene el siguiente resultado :

OK – Quedan 129 días para VENCER

Publicado en Unix - Linux | Deja un comentario

BASH – Plugin NAGIOS memoria servidores AIX.

El SCRIPT solicita el valor WARNING y CRITICO del uso de memoria. Pasando estos umbrales, reportara en la consola NAGIOS según corresponda :

Publicado en Unix - Linux | Deja un comentario

BASH – Uso del comando «seq».-

Corresponde a herramienta de la línea de comandos. Sencilla, pero que combinada con otros comandos, puede ser de gran ayuda. Básicamente se encarga de imprimir una secuencia de números. Los siguientes comandos se pueden probar para ver lo que realizan :

Publicado en Unix - Linux | Deja un comentario

BASH – Operaciones y comparación de números con decimales en Scripts BASH.

En BASH no es posible ( de manera nativa) realizar operaciones con números decimales.  Para superar esta limitación de BASH, se utiliza el comando “bc”, con el cual se pueden realizar operaciones con números decimales, también se puede indicar la cantidad de números decimales que entregara en el resultado. Algunos ejemplos de código :

Acá ingresaremos 2 valores, los cuales pueden ser positivos, negativo o decimal. El programa los valida que realmente correspondan a un número. Posterior a esto despliega el número menor ingresado :

Ahora mostraremos la comparación de números decimales, para realizar esto, lo haremos con ayuda del lenguaje AWK (script adaptado para NAGIOS) , chequeo de UPTIME, el SCRIPT solicita se ingrese el WARNING y CRITICO de proceso y lo compara con el primer valor (Carga del sistema al minuto) :

Publicado en Unix - Linux | Deja un comentario

BASH – Validar ingreso de un número (positivo, negativo o decimal).-

El siguiente código sirve para validar que el ingreso solicitado, corresponda a un número. Este puede ser positivo, negativo o decimal. Ejemplos de ingreso : +24 +24.324 12 12.22 -23 -23.45 etc….

Publicado en Unix - Linux | Deja un comentario

SCRIPTS – Variables especiales de BASH.-

Publicado en Unix - Linux | Deja un comentario

LINUX – Copia de directorios.

La copia recursiva incluye a una carpeta y todas sus subcarpetas. Por lo tanto, la estructura del directorio se copia entera. Esto no funciona con la copia sencilla del comando CP: si intentas copiar una carpeta sin el parámetro correspondiente, te saldrá un mensaje de error. El parámetro que debes usar es el ‘-r’, también conocido como ‘–recursivo’ o ‘-R’.

En nuestro ejemplo, queremos crear regularmente una copia de seguridad de una carpeta, incluyendo su contenido y subcarpetas. Para que no haya que copiar siempre todo el contenido del directorio, puedes utilizar el parámetro “update”.

Cuando ejecutes el comando por primera vez, se te creará el directorio “original” dentro de la carpeta de backups. Todos los archivos y subdirectorios se te copiarán dentro de él. Si se trata de grandes cantidades de datos, esto puede llevar algún tiempo. Si utilizas el parámetro ‘-u’, solo copiarás los elementos modificados posteriormente.

Publicado en Unix - Linux | Deja un comentario

LINUX – Funciones especiales del comando CP.-

El comando CP de Linux también puede realizar otras tareas. Para ello, al comando se le puede añadir un término que contenga un parámetro:

Puedes introducir los siguientes parámetros (flags) en el campo para que el trabajo de copia sea más complejo o más fácil.

ParámetrosDescripciónEjemplo
-aCopia el archivo con la misma configuración de permisos y metadatos que el original.cp -a texto.txt /home/usuario/carpeta_de_destino/
–archiveCopia el archivo con la misma configuración de permisos y metadatos que el original.cp –archive texto.txt /home/usuario/carpeta_de_destino/
-bCrea una copia en la memoria intermedia (también llamada buffer) si el archivo original y el destino tienen el mismo nombre, pero diferente contenido.cp -b texto.txt /home/usuario/carpeta_de_destino/
–backupCrea una copia en la memoria intermedia (también llamada buffer) si el archivo original y el destino tienen el mismo nombre, pero diferente contenido.cp –backup texto.txt /home/usuario/carpeta_de_destino/
–backup=numberedCrea un nuevo archivo numerado si el archivo original y el de destino tienen el mismo nombre de archivo, pero diferente contenido.cp –backup==numbered texto.txt /home/usuario/carpeta_de_destino/
–backup=existingCrea un nuevo archivo numerado si el archivo original y el de destino tienen el mismo nombre de archivo, pero diferente contenido – y ya existen copias de seguridad numeradas.cp –backup==existing texto.txt /home/usuario/carpeta_de_destino/
-dCopia los enlaces simbólicos.cp -d texto.txt /home/usuario/carpeta_de_destino/
-fObliga a sobrescribir al copiar.cp -f texto.txt /home/usuario/carpeta_de_destino/texto.txt
–forceObliga a sobrescribir al copiar.cp –force texto.txt /home/usuario/carpeta_de_destino/texto.txt
-iPide permiso antes de sobrescribir archivos con el mismo nombre.cp -i texto.txt /home/usuario/carpeta_de_destino/
–interactivePide permiso antes de sobrescribir archivos con el mismo nombre.cp –interactive texto.txt /home/usuario/carpeta_de_destino/
-lCrea un enlace duro en lugar de una copia.cp -l texto.txt /home/usuario/carpeta_de_destino/
–linkCrea un enlace duro en lugar de una copia.cp –link texto.txt /home/usuario/carpeta_de_destino/
-nLos archivos existentes nunca se sobrescribirán.cp -n texto.txt /home/usuario/carpeta_de_destino/
–no-cobblerLos archivos existentes nunca se sobrescribirán.cp –no-cobbler texto.txt /home/usuario/carpeta_de_destino/
-pLos atributos del archivo original se heredan al copiar.cp -p texto.txt texto1.txt
–preserveLos atributos del archivo original se heredan al copiar.cp –preserve texto.txt texto1.txt
–preserve=modeEl modo del archivo original se hereda al copiar.cp –preserve==mode texto.txt texto1.txt
–preserve=ownershipLas propiedades del archivo original se heredan al copiar.cp –preserve==ownership texto.txt texto1.txt
–preserve=timestampLa marca de tiempo del archivo original se hereda al copiar.cp –preserve==timestamp texto.txt texto1.txt
–preserve=linksLos enlaces del archivo original se heredan al copiar.cp –preserve==links texto.txt texto1.txt
–preserve=contextEl contexto de seguridad del archivo original se hereda al copiar.cp –preserve==context texto.txt texto1.txt
–preserve=xattrLos atributos extendidos del archivo original se heredan al copiar.cp –preserve==xattr texto.txt texto1.txt
–preserve=allTodos los atributos del archivo original se heredan al copiar.cp –preserve==all texto.txt texto1.txt
-PLos enlaces simbólicos se guardan como tales al copiar.cp -P texto.txt /home/usuario/carpeta_de_destino/
–no-dereferenceLos enlaces simbólicos se guardan como tales al copiar.cp –no-dereference texto.txt /home/usuario/capeta_de_destino/
-rLos directorios, incluidos los subdirectorios, se copian de forma recursiva.cp -r /home/usuario/carpeta_de_origen/ /home/usuario/carpeta_de_destino/
-RLos directorios, incluidos los subdirectorios, se copian de forma recursiva.cp -R /home/usuario/carpeta_de_origen/ /home/usuario/carpeta_de_destino/
–recursiveLos directorios, incluidos los subdirectorios, se copian de forma recursiva.cp –recursive /home/usuario/carpeta_de_origen/ /home/usuario/carpeta_de_destino/
-sCrea un enlace simbólico para el archivo original.cp -s texto.txt /home/usuario/carpeta_de_destino/
–symbolic-linkCrea un enlace simbólico para el archivo original.cp –symbolic-link texto.txt /home/usuario/carpeta_de_destino/
-SSobrescribe un sufijo de backup al copiar con –backup.cp –backup=simple -S texto.txt /home/usuario/carpeta_de_destino/
–suffix=own_suffixSobrescribe con su propio sufijo el sufijo de backup al copiar con –backup.cp –backup=simple –suffix=own_suffix texto.txt /home/usuario/carpeta_de_destino/
-uCopia el archivo solamente si el archivo de destino es más antiguo que el original.cp -u texto.txt /home/usuario/carpeta_de_destino/texto.txt
–updateCopia el archivo solamente si el archivo de destino es más antiguo que el original.cp –update texto.txt /home/usuario/carpeta_de_destino/texto.txt
-vEmite un mensaje al terminar la copia.cp -v texto.txt texto1.txt
–verboseEmite un mensaje al terminar la copia.cp –verbose texto.txt texto1.txt
Publicado en Unix - Linux | Deja un comentario

BASH – Script para listar Directorios y Subdirectorios.

Script que lista todos los directorios y subdirectorios recursivamente de uno dado. El
directorio será introducido como argumento y el guion lo primero que hará será verificar si es
precisamente un directorio.

Publicado en Unix - Linux | Deja un comentario