Quitar los ^M de fin de linea

Con demasiada frecuencia ocurre que importamos un texto de MS-DOS a UNIX, y al editarlo con el vi (por ejemplo), sale lleno de “^M” al final de todas las líneas. Lo primero, decir que no hay problema en el vim, porque si pones la opción “autotext” (:set autotext), el vim automáticamente detecta el tipo de fichero que es (DOS o UNIX), y si es DOS, quita los ^M de la pantalla. Esto de los ^M ocurre porque el delimitador de línea de los ficheros de texto en DOS es CR-LF (carriage return-linefeed, o sea, retorno de carro y salto de línea), y en UNIX son simplemente LF. Así, muchas herramientas de UNIX (al menos por defecto), buscan como delimitador de línea el LF, así que al final de cada línea hay un caracter extraño (el CR).
Esto, en vi, se puede arreglar fácilmente con la orden

Te comento por encima qué significa este chorizo: El “%” sirve para que se sustituya en todas las líneas, y no sólo en la actual, la “s” para que se realice una sustitución, el Ctrl-V Ctrl-M es necesario para que el vi no se crea que estamos pulsando un ENTER (Ctrl-V sirve para insertar literales), y, por supuesto, se sustituye por nada, así que entre la segunda y la tercera barras no ponemos nada.
Por si no te gusta el vi, puedes cambiar el formato de los ficheros de texto desde la línea de órdenes, escribiendo:

Actualización : el ^M copiado de texto a consola se muestra como dos caracteres , pero realmente es uno. En la consola se puede generar con control+v + m con lo que un sed -i ‘d/^M/’ fichero deberia funcionar siempre y cuando ^M sea un solo caracter y no dos.

Publicado en Unix - Linux | Deja un comentario

UNIX – Script acceso remoto automatizado por telnet.-

Aunque el método común de logarse en una máquina de manera remota (y en modo texto) es ssh, en alguna ocasión puede que nos toque administrar sistemas antiguos que usan telnet para las labores de administración remota.

En este caso, permitir que un script se pueda logar por telnet en una máquina remota y ejecutar algunos comandos puede resultar tarea dificil (telnet no permite especificar por linea de comandos usuario y contraseña). A simple vista nos parecería que el logado por telnet requiere hacerse por una persona. No obstante, este proceso se puede automatizar (y por tanto, usarlo en nuestros scripts).

La idea es la siguiente: «teclear» los comandos o textos necesarios cuando las aplicaciones nos las van pidiendo. Cuando ejecutamos el comando telnet $IP_SERVIDOR, en un segundo o menos nos aparece el típico «Login: «; en este momento nuestro script tecleará el login correspondiente. Tras dos segundos (o algo menos) se nos pide «Password: «; a lo que nuestro script responderá. Y así con el resto de comandos o textos que una persona que se logase fuese introduciendo (con las temporizaciones correctas).

Si omitimos la redirección de la salida estándar a fichero, podremos ver cómo se va ejecutando todo y se van escribiendo los comandos en los tiempos establecidos. Si no dejásemos una pausa de 2 segundos entre la introducción del login y del password, el password se escribiría en pantalla antes de que el demonio telnet imprima el texto «Password: «, y muchos demonios telnet (si no todos) olvidan lo tecleado antes de solicitar el password. Lo mismo para el resto de comandos; necesitamos esperar a que «bdf» (df de HP-UX) termine de ejecutarse y nos aparezca el prompth del shell para poder meter el siguiente comando: exit.

Publicado en Unix - Linux | 1 comentario

BASH – Script suma tamaños de archivos.-

Script que muestra el tamaño total en bytes de todos los archivos que contiene el directorio actual, excluyendo directorios, subdirectorios y archivos ocultos. SÓLO ARCHIVOS!!

Publicado en Unix - Linux | Deja un comentario

UNIX – Script que muestra el arbol de directorios.-

Script para mostrar en forma de árbol los directorios contenidos en un directorio dado utilizando una función recursiva, el directorio se puede pasar como parametro en la ejecución :

Publicado en Unix - Linux | Deja un comentario

UNIX – Buscar y reemplazar cadenas en diferentes archivos.-

Este comando buscará todos los ficheros TXT en la carpeta ‘/home/trabajo’ y sus subcarpetas y en cada uno sustituirá todas las ocurrencias de la cadena ‘cientos’ con la cadena ‘miles’.

Publicado en Unix - Linux | Deja un comentario