Mostrando entradas con la etiqueta COMANDOS. Mostrar todas las entradas
Mostrando entradas con la etiqueta COMANDOS. Mostrar todas las entradas

Linux: Reconstruccion de base de datos de paquetes RPM

tras una mala actualización de con el yum, se quedaron algunos paquetes rpm dañados. En el listado de software o haciendo un listado de los rpm, aparecía instalado el paquete de MozillaFirefox, pero no dejaba desinstalarlo, el mensaje de error era "paquete no instalado". Para repararlo:

Listar todos los rpm:
rpm --rebuilddb -vv
Buscar un archivo rpm:
rpm -qa | grep -i PAQUETE
Regenerar la lista de paquetes:
rpm --rebuilddb -vv

Dig: búsqueda inversa en batch

Para relaizar una búsqueda inversa usando dig podemos usar lo siguiente:
cat > lista.txt << EOF
216.58.211.35
54.247.124.36
204.79.197.212
EOF

for IP in `cat lista.txt`; do     echo $IP  `dig -x "$IP" +short` ; done;

Creamos un archivo con la lista de IPs que queremos buscar. Ejecutamos en bash el script que lee el archivo creado y hace un dig 

Restaurar archivos de configuración de un paquete en Centos

Si necesitamos recuperar todos archivos de un paquete, por ejemplo los archivos de configuración podemos hacer los siguiente:
rpm -qf /etc/httpd/conf/httpd.conf
httpd-2.4.6-45.el7.centos.x86_64
Luego forzamos la reinstalación del paquete
yum reinstall  httpd-2.4.6-45.el7.centos.x86_64

Solaris:Tiempo epoch en solaris y linux

En linux para obtener la fecha podemos usar:
date +%s
En Solaris  no está definido el strftime por lo que tendremos que usar python, perl o una combinación de comandos, por ejemplo:

truss /usr/bin/date 2>&1 | grep ^time | cut -f 2 -d' '
perl -le 'print time()'
truss /usr/bin/date 2>&1 | grep ^time | awk -F"= " '{print $2}'

Gnome term : cambiar título de la ventana dinámicamente

Para cambiar dinámicamente el título del teminal de gnome, ejecutaremos el siguiente comando:

xtermset -title  'Nuevo titulo'
Este comando también permite modificar otras propiedades como el color de la letra, el fondo....


Comando Tar

El comando tar permite empaquetar / desempaquetar varios archivos en uno solo. Su funciónprincipal es la de empaquetar, aunque también permite usar compresión mediante gzip

Empaquetar:
tar vcf nombre_archivo.tar archivo1 archivo2

v: (verbose) muestra en la patanlla las operaciones
c: (create/crear) opción para crear el archivo
f: (file/archivo) indica que se pasara como argumento el nombre del archivo tar

Podemos también usar comodines para seleccionar archivos, por ejemplo si queremos empaquetar todos los archivos jpg el comando sería:
tar cvf imagenes.tar *.jpg

Desempaquetar:
tar xvf nombre_archivo.tar

v: (verbose) muestra en la patanlla las operaciones
x: (extraer) opción desempaquetar
f: (file/archivo) indica que se pasara como argumento el nombre del archivo tar

También podemos especificar el nombre del archivo que queremos extraer.En el ejemplo extraemos el archivo imagen1.jpg (hay que especificar la ruta completa):
tar xvf nombre_archivo.tar /imagen/imagen1.jpg

Del mismo modo podemos usar comodines (como el asterisco) para desempaquetar. En el ejemplo extraemos todos los archivos jpg
tar xvf nombre_archivo.tar imagen1.jpg --wildcards '*.jpg'

wildcards: indica que se usarán comodines (pattern , patrones)

Listar Archivos
Para listar los archivos contenidos en un tar usaremos el siguiente comando
tar tf mi_archivo.tar

t : opción listar

Archivos TGZ
Para manejar archivos tgz (tar comprimidos con gzip) usaremos los mismos comandos que antes pero añadiendo la letra Z:

Comprimir:
tar cvfz nombre_archivo.tgz archivo1 archivo2

Descomprimir :
tar xvfz nombre_archivo.tgz

Listar:
tar tf nombre_archivo.tgz

Linux : comando cut , sort , wc y uniq para contar registros unicos en un archivo de texto

Partimos de un archivo de texto en el que los registros aparecen separados por comas (csv) o por tabuladores. Este archivo puede provenir de una exportación de una tabla de la base de datos y queremos verificar si está correcto dicho archivo. Para ello usaremos algunos comandos unix para verificar el número de registros, o si el número de valores únicos de una columna es correcto.

Los comandos que usaremos serán:
- comando wc
- comando sort
- comando cut
-comando uniq

Contar el número de filas en un archivo csv

Usaremos únicamente el comnado:
wc -l archivo.csv

Que nos devolverá el número de filas

Contar el número de registros diferentes en un campo (similar a select count(distinct campo))

Suponemos que queremos ver cuantos registros diferentes del campo3 hay en archivo.csv (separador por tabuladores):
cut -f 3 archivo.csv | sort | uniq | wc -l

Si el archivo usase otro separador por ejemplo la coma ( , ) :
cut -t, -f 3 archivo.csv | sort | uniq | wc -l

Tambien podemos suprimir el comnado uniq:
cut -t, -f 3 archivo.csv | sort -u | wc -l

Comando cut : selección de columnas en archivos

El comando cut permite seleccionar columnas o campos completos en un archivo estructurado ( con campos separados por algún delimitador). El delimitador por defecto de cut es el tabulador

Algunas de las opciones son:
-f permite seleccionar el campo que queremos ver
-d para cambiar el delimitador
-c seleccionar columnas
-s no muestra las lineas que no tienen el delimitador

Supongamos que tenemos el archivo (separado por tabuladores)
1 a 123
5 b 64
2 A 32
3 a 16

- Seleccionamos el segundo campo
cut -f 2 prueba.txt
a
b
A
a

- Seleccionamos los caracteres entre la posición 5 y 6
cut -c5-6 prueba.txt
12
64
32
16

-Si el delimitador fuese una coma podríamos usar -d, o -d','
cut -d, -f 3 prueba2.txt
123
64
32
16

En el caso de usar conjuntamente ls y cut veremos que al tener un numero diferente de espacios en algunos campos (por ejemplo en el tamaño del archivo) no saldrán correctamente y algunas lineas saldrán en blanco.
ls -la | cut -d' ' -f 5

En este caso es mejor optar por otros comandos por ejemplo usando awk:
ls -la | awk '{print $5 }'

Comando sort : ordenar lineas de texto de un archivo

El comando sort ordena las lineas de un archivo de texto según varios criterios, algunos de las opciones más útiles son:
-n utilizar ordenamiento numérico en lugar de alfanumérico (letras)
-r invertir orden
-f ignora mayúsculas y minúsculas
-k número ordenar usando la columna número
-t nuevoseparador usar como separador el nuevo separador en lugar del separador por defecto. ej -t, o -t","
-u suprime las lineas repetidas ( similar al comando uniq )

Supongamos que tenemos el siguiente archivo ( cat > prueba.txt):
1 a 123
5 b 64
2 A 32
3 a 16

Los siguientes comandos dan las siguientes salidas:
- Ordenación por defecto
sort prueba.txt
1 a 123
2 A 32
3 a 16
5 b 64

- Ordenación usando la tercera columna
sort -k3 prueba.txt
1 a 123
3 a 16
2 A 32
5 b 64

- Orden usando la tercera columna y orden numérico
sort -k3 -n prueba.txt
3 a 16
2 A 32
5 b 64
1 a 123

- Orden usando la segunda columna y orden inverso
sort -k2 -r prueba.txt
5 b 64
2 A 32
3 a 16
1 a 123

-Si por ejemplo el archivo usase como separador la coma (,) la sintaxis sería:
sort -t, -k3 -n prueba2.txt
3,a,16
2,A,32
5,b,64
1,a,123

Comando WC : contar palabras, líneas y caracteres de archivos

El comando wc viene de "word count" y es un contador de lineas , palabras (letras separadas por espacios) y caracteres (bytes).
wc archivo.txt
584 14583 123787 archivo.txt

La salida muestra que el archivo tiene 584 lineas , 14583 palabras y 123787 caracteres.
Sus opciones en linea de comandos son:
-c cuenta los bytes
-m cuenta las palabras
-l cuenta las lineas

Por ejemplo, para ver si el numero de registros exportados ( select count(*) from tabla ) es identico al del archivo que hemos exportado contaremos las lineas de dicho archivo
wc - l archivo.txt
584 archivo.txt
Para contar el número de archivos en un directorio podemos usar:
ls -1 | wc -l