miércoles, 16 de diciembre de 2015

Verificar que versión tienes instalada

Para saber la versión exacta que tengo instalada, en este caso de Debian, hay que colocar uno de estos dos comandos.
1- Para saber solo la versión que tengo hacemos en la consola:

$ cat /etc/issue.net

2- También tenemos un comando que nos va a dar muchos más detalles

$ lsb_release -a

El comando ls

Quizás uno de los comandos de mayor utilización, sirve para listar archivos.
Su sintaxis es la siguiente:

ls [opciones] [archivo...]
 
Si se ejecuta ls sin argumentos, dará como resultado un listado de todos los archivos (incluyendo directorios) del directorio donde el usuario está posicionado. Sus opciones son:
-a
Lista todos los archivos, incluyendo aquellos que comienzan con un «.» [4]
-d
Lista el nombre del directorio en vez de los archivos contenidos en él.
-l
Lista los archivos con mucho más detalle, especificando para cada archivo sus permisos, el número de enlaces rígidos, el nombre del propietario, el grupo al que pertenece, el tamaño en bytes y la fecha de la última modificación.
-r
Invierte el orden de listado de los archivos.
-s
Muestra el tamaño de cada archivo en bloques de 1024 bytes a la izquierda del nombre.
-h
Muestra los tamaños de archivo en términos de kilobytes, megabytes, etc.
-t
Lista los archivos ordenados por el tiempo de modificación en vez de ordenarlos alfabéticamente.
-A
Lista todos los archivos excepto el «.» y el «..».
-R
Lista los contenidos de todos los directorios recursivamente.
-S
Ordena el listado por el tamaño de los archivos.
--color[=cuándo]
Especifica si emplear color para distinguir los diferentes tipos de archivos. El argumento cuándo puede tener varios valores:
none
No usar colores. Esta opción es la predeterminada.
auto
Usar colores solamente cuando la salida estándar es una terminal.
always
Usar siempre colores. Si ls se usa con la opción --color sin especificar la opción de color, el resultado es el mismo que cuando se usa --color=always.

Ejemplo. Algunos ejemplos utilizando el comando ls
Supónganse que se tiene un directorio /usr/local/papers donde se alojan los documentos de un grupo de redactores de una revista, y se quiere saber cuáles fueron los últimos documentos modificados y su tamaño para su inclusión en el próximo número. Para esto se puede ejecutar el comando ls de la siguiente forma:


$ ls -lhtr /usr/local/papers 


 Como se puede observar, se le pasan 4 opciones al comando ls, de tal manera que muestre un listado extendido, ordenado por tiempos de modificación de forma ascendente y que además muestre los tamaños de archivo en forma más legible. Otra manera de ejecutar el mismo comando es la siguiente:


$ ls -l -h -t -r /usr/local/papers
 

martes, 17 de noviembre de 2015

Como cambiar la zona horaria en Linux desde una terminal

Cambiar la zona horaria de Linux desde una Terminal o línea de comandos es muy sencillo, bastan con ejecutar el comando "tzselect" y elegir nuestra zona horaria, por ejemplo supongamos que vivimos en Mexico y usamos la hora central, lo hacemos de la siguiente forma.

root@monitoreo:/etc/apache2# tzselect

Retorna un resultado como el siguiente.

Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
 1) Africa
 2) Americas
 3) Antarctica
 4) Arctic Ocean
 5) Asia
 6) Atlantic Ocean
 7) Australia
 8) Europe
 9) Indian Ocean
10) Pacific Ocean
11) coord - I want to use geographical coordinates.
12) TZ - I want to specify the time zone using the Posix TZ format.

Seleccionamos el número 2 que es Americas, luego el número 51 que es Venezuela y por último el número 1 que es el horario central.

Luego veremos una pantalla como la siguiente.
#? 2

Please select a country whose clocks agree with yours.
 1) Anguilla     28) Haiti
 2) Antigua & Barbuda     29) Honduras
 3) Argentina     30) Jamaica
 4) Aruba     31) Martinique
 5) Bahamas     32) Mexico
 6) Barbados     33) Montserrat
 7) Belize     34) Nicaragua
 8) Bolivia     35) Panama
 9) Brazil     36) Paraguay
10) Canada     37) Peru
11) Caribbean Netherlands    38) Puerto Rico
12) Cayman Islands     39) St Barthelemy
13) Chile     40) St Kitts & Nevis
14) Colombia     41) St Lucia
15) Costa Rica     42) St Maarten (Dutch part)
16) Cuba     43) St Martin (French part)
17) Curacao     44) St Pierre & Miquelon
18) Dominica     45) St Vincent
19) Dominican Republic     46) Suriname
20) Ecuador     47) Trinidad & Tobago
21) El Salvador     48) Turks & Caicos Is
22) French Guiana     49) United States
23) Greenland     50) Uruguay
24) Grenada     51) Venezuela
25) Guadeloupe     52) Virgin Islands (UK)
26) Guatemala     53) Virgin Islands (US)
27) Guyana

#? 51

The following information has been given:

Venezuela

Therefore TZ='America/Caracas' will be used.
Local time is now: mar nov 17 14:07:08 VET 2015.
Universal Time is now: mar nov 17 18:37:08 UTC 2015.
Is the above information OK?
1) Yes
2) No

Si todo está correcto seleccionamos "1" y listo.
#? 1

You can make this change permanent for yourself by appending the line
TZ='America/Caracas'; export TZ
to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
America/Caracas

Ahora si queremos que este cambio se haga permanentemente entre reinicios de nuestra PC, agregamos la siguiente línea en nustro archivo .profile

TZ='America/Caracas'; export TZ

Otra forma de hacer lo mismo es con los siguientes comandos.

$ rm /etc/localtime
$ ln -s /usr/share/zoneinfo/America/Caracas /etc/localtime

Otra forma es colocando como root el siguiente comando 

#dpkg-reconfigure tzdata

Una vez que colocas el comando seleccionas America

y en la proxima pantalla seleccionas Caracas

y por ultimo arrojara el siguiente texto 

Current default time zone: 'America/Caracas'
Local time is now:      Tue Nov 17 14:49:10 VET 2015.
Universal Time is now:  Tue Nov 17 19:19:10 UTC 2015.

jueves, 12 de noviembre de 2015

Comprimir y descomprimir .gz, .tar.gz, y .zip por linea de comandos en Linux

Archivos .tar.gz:
Comprimir: tar -czvf empaquetado.tar.gz /carpeta/a/empaquetar/
Descomprimir: tar -xzvf archivo.tar.gz

Archivos .tar:
Empaquetar: tar -cvf paquete.tar /dir/a/comprimir/
Desempaquetar: tar -xvf paquete.tar

Archivos .gz:
Comprimir: gzip -9 index.php
Descomprimir: gzip -d index.php.gz

Archivos .zip:
Comprimir: zip archivo.zip carpeta
Descomprimir: unzip archivo.zip

Buscar archivos que contengan un texto en Linux

Para buscar archivos que contengan un cierto texto en Linux podemos utilizar el comando grep.

Su uso es muy sencillo. Basta con pasar como argumentos una cadena de texto a buscar (o una expresión regular) y el archivo o archivos en los que buscar.

grep “TODO” /home/zootropo/codigo/*.py

También podemos hacer que busque en todos los archivos contenidos en un cierto directorio, de forma recursiva, utilizando el flag -r:

grep -r “TODO” /home/zootropo/codigo/

El parámetro -l le indica que imprima los nombres de archivos en los que se encuentre el texto solicitado. 

grep -lir "usemos linux" "/media/win/cosas"

grep -lir "usemos linux" *.pdf

viernes, 30 de octubre de 2015

15 Comando básicos para gestionar MySql

ALL PRIVILEGES: como mencionamos previamente esto permite a un usuario de MySQL acceder a todas las bases de datos asignadas en el sistema.
CREATE: permite crear nuevas tablas o bases de datos.
DROP: permite eliminar tablas o bases de datos.
DELETE: permite eliminar registros de tablas.
INSERT: permite insertar registros en tablas.
SELECT: permite leer registros en las tablas.
UPDATE: permite actualizar registros seleccionados en tablas.

GRANT OPTION: permite remover privilegios de usuarios.

1. INGRESO A MYSQL

--> mysql -u root -p

2. CREAR BASE DE DATOS

--> CREATE DATABASE db_encuesta_servicios;

3. CREAR USUARIO

--> CREATE USER usuarioencuesta IDENTIFIED BY 'encuesta';
Query OK, 0 rows affected (0.00 sec)

Nota: Para probar el nuevo usuario  debes cerrar sesión escribiendo quit y volviendo a iniciar sesión con éste comando en la consola:

--> mysql -u [nombre de usuario]-p

4. ASIGNAR PRIVILEGIOS 

--> GRANT ALL PRIVILEGES ON *.* TO 'usuarioencuesta'@'localhost' IDENTIFIED BY 'encuesta' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

Nota: Cada vez que tu actualizas o cambias permisos, asegúrate de refrescar los privilegios mediante FLUSH PRIVILEGES;

5. MOSTRAR LAS BASE DE DATOS

--> show databases;

6. MUESTRA LAS TABLAS DE UNA BASE DE DATOS LLAMADA MYSQL

--> SHOW FULL TABLES FROM mysql;

7. ELIMINAR BASE DE DATOS EN MYSQL

--> DROP DATABASE db_encuesta_servicios;

8. ELIMINAR USUARIO DE LA BASE DE DATOS

--> DROP USER usuarioencuesta;

9. CONECTAR BASE DE DATOS EN MYSQL

--> connect db_encuesta_servicios;

10. RESTAURA UNA BASE DE DATOS

--> mysql -u usuarioencuesta -pencuesta db_encuesta_servicios < db_encuesta_servicios.sql

11. RESPALDAR UNA BASE DE DATOS

---> set FECHA=`date '+%Y_%m_%d'`
---> echo $FECHA

---> mysqldump -h localhost -u mi_usuario -p base_datos > /home/usuario/backup/mi_base_$FECHA.sql

Ejemplo
---> mysqldump -h localhost -u usuarioencuesta -p db_encuesta_servicios > /home/usuario/backup/db_encuesta_servicios.sql

12. CAMBIAR CLAVE DE ROOT

---> mysqladmin -u root -pcaracas password 'monitoreo';

13. CONFIGURAR EL PASSWORD DE ROOT

Si hacemos una instalacion de MySQL, veremos que no reuqerira password para conectar, por tanto configuramos uno con el siguiente comando: 


---> mysqladmin -u root password PASSWORD_ELEGIDO


14. CHEQUEAR QUE EL SERVIDOR MYSQL ESTA ACTIVO

Para constatar esto, ejecutamos lo suiguiente. 

---> mysqladmin -u root -p ping 
Enter password: 

mysqld is alive

15. PASSWORD RECOVERY 

15.1 - /etc/init.d/mysql stop

15.2 - mysqld_safe --skip-grant-tables &

15.3 - mysql -u root

15.4 - mysql> use mysql;
15.5 - mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where 15.6 - User='root';
15.7 - mysql> flush privileges;
15.8 - mysql> quit

15.9 - /etc/init.d/mysql stop

15.10 - /etc/init.d/mysql start

15.11 - mysql -u root -p

martes, 27 de octubre de 2015

Comandos de administración básica de LVM (Logical Volume Group)

Crear un volumen físico
pvcreate [device] [nombre]
ejemplo:
pvcreate /dev/dm-4 documentos

Para ver los volumenes fisicos creados
pvdisplay

Crear un grupo de volúmenes
vgcreate [nombre] [device:mapper]
ejemplo:
vgcreate docs /dev/dm-4

Ver los grupos de volumenes creados
vgdisplay

Crear un volumen lógico
lvcreate -L [size] -n [nombre] [volume:group]
ejemplo:
vgcreate docs /dev/dm-4

Determinar el espacio libre (-l) de un volume group
correo:~# vgs -o +vg_free_count,vg_extent_count




ejemplo:
correo:~# lvcreate -l255999 -n buzones CORREO
Logical volume "buzones" created

Ver los Volúmenes lógicos creados
lvdisplay

Aplicarle un Filesystem a un volumen lógico
Darle un formato a ese volumen
mkfs -t [filesystem] [logical:volume]

Comandos de administración básica de LVM (Logical Volume Group)

y montar el dispositivo:
mount -t [filesystem] [logical:volume] [mount:point] -o [options]

ejemplo:
• usando XFS:
mkfs.xfs -f -d agcount=32 -b size=4096 -i size=1024 -L buzones /dev/CORREO/buzones

NOTA: Debian no soporta clusters -b > 4096 bytes (4kb)
• usando EXT3:
mkfs.ext3 -I 1024 -b 4096 -m 1 -L mppefpdc -O dir_index /dev/CORREO/buzones


jueves, 22 de octubre de 2015

Comando apt-get

Siguiendo mi intención de acercar la terminal (esa cosa tan rara) a los nuevos usuarios, vamos a hablar del comando "apt-get".
apt-get es la herramienta que utiliza Debian y sus derivadas (Ubuntu incluida), para gestionar los paquetes instalables disponibles en los repositorios y aunque tenemos a nuestra disposición herramientas gráficas que nos facilitan las cosas, nunca está de más saber lo que podemos hacer con apt-get desde una terminal:


En Ubuntu, los comandos administrativos, como "apt-get", deben de ser ejecutados como superusuario, anteponiendo "sudo".


Uso:
sudo apt-get [opciones] orden [paquetes]
Ejemplos:
sudo apt-get [opciones] install paquete1 paqquete2 ...
sudo apt-get [opciones] remove paquete1 [paqquete2 ...
sudo apt-get [opciones] source paquete1 paquete2 ...
[opciones] se puede utilizar o no (ver el apartado correspondiente).

Comandos "apt-get":


1. Actualizar el listado de paquetes disponibles:
sudo apt-get update

2. Comprobar que todo ha ido bien tras la utilización de apt-get update:
sudo apt-get check

3. Instalar los programas deseados:
sudo apt-get install paquete

4. Reinstalar un programa:
sudo apt-get -reinstall install paquete

5. Actualizar solo los paquetes ya instalados que no necesitan, como dependencia, la instalación o desinstalación de otros paquetes:
sudo apt-get upgrade

6. Actualizar todos los paquetes del sistema, instalando o desinstalando los paquetes que sean necesarios para resolver las dependencias que pueda generar la actualización de algún paquete:
sudo apt-get dist-upgrade

7. Desinstalar un paquete:
sudo apt-get remove paquete

8. Desinstalar un paquete y elimina los archivos de configuración:
sudo apt-get remove --purge paquete

9. Resolver problemas con dependencias y paquetes rotos:
sudo apt-get -f install
Puede ser necesario reconfigurar dpkg con:
sudo sudo dpkg --configure -a

10. Para limpiar los paquetes descargados e instalados:
sudo apt-get clean

11. Para limpiar los paquetes viejos que ya no se usan:
sudo apt-get autoclean

12. Para buscar un paquete determinado:
sudo apt-cache search paquete

13. Descargar archivos fuente:
sudo apt-get source paquete

14. Configurar las dependencias de construcción para paquetes fuente:
sudo apt-get build-dep paquete

15. Seguir las selecciones de dselect:
sudo apt-get dselect-upgrade

16. Para conocer que paquetes hay instalados:
sudo apt-show-versions (-u)

17. Obtener más información de un paquete específico:
sudo apt-cache show paquete

18. Más información aún:
sudo apt-cache showpkg paquete

19. Para saber de que paquete depende:
sudo apt-cache depends paquete

20. Para encontrar el nombre de un paquete desde un archivo:
sudo apt-file search archivo

21. Listar el contenido de un paquete:
sudo apt-file list paquete

22. Para mantener al día esta función:
sudo apt-file update

23. Para mantener el sistema limpio de bibliotecas inútiles:
sudo apt-get autoremove

24. Actualizar la caché de paquetes (/var/cache/apt/pkgcache.bin), crea un nuevo árbol de dependencias:
sudo apt-get check

25. Mostrar un resumen de las dependencias no satisfechas en la caché de paquetes:
sudo apt-cache unmet

26. Mostrar una lista de todo lo que tenemos instalado en el sistema:
sudo apt-cache pkgnames -generate


Opciones:


-s Simula una acción.
-d Sólo descarga.
-y No pregunta y asume que si a todo.
-u Muestra paquetes actualizados.
-h Muestra texto de ayuda.
-q Salida registrable - sin indicador de progreso.
-qq Sin salida, excepto si hay errores.
-f Intenta continuar sí la comprobación de integridad falla (dependencias rotas).
-m Intenta continuar si los archivos no son localizables.
-b Construye el paquete fuente después de obtenerlo.
-V Muesta números de versión detallados.
-c=? Lee este archivo de configuración.
-o=? Establece una opción de configuración arbitraria.

Comando "apt":


Actualización: A partir de Ubuntu 14.04, el gestor de paquetes apt ("Avanced Package Tool") tiene nuevas opciones. Ya no es necesario escribir "apt-get" y se puede utilizar simplemente "apt", (apt seguirá funcionando).

1. Buscar y mostrar los paquetes instalados por su nombre:
sudo apt list
 
2. Buscar en las descripciones de los paquetes:
sudo apt search ...
 
3. Mostrar los detalles de un paquete:
sudo apt show paquete
 
4. Actualizar la lista de paquetes disponibles:
sudo apt update
 
5. Instalar un paquetes
sudo apt install paquete
 
6. Eliminar un paquete
sudo apt remove paquete
 
7. Actualizar el sistema actualizando paquetes
sudo apt upgrade
 
8. Actualizar todo el sistema eliminando, instalando o actualizando paquetes
sudo apt full-upgrade
 
9. Editar la información de las fuentes de software ("sources.list") llamando a nano o vim.
sudo apt edit-sources

viernes, 16 de octubre de 2015

Comandos para medir el trafico en la red


Para medir por proceso el trafico de la red que hay en Linux es nethogs, sencillo, hace lo que dice que hace, te muestra por aplicación qué uso de red se está haciendo, el ancho de banda consumido tanto de download como upload.

Para ejecutar hay que hacerlos con permisos de administrador e indicar qué interfaz vamos a chequear, ej: eth0, wlan0, etc.:


nethogs

# nethogs eth0

Instalación:

# ubuntu or debian (default repos)
$ sudo apt-get install nethogs

# fedora or centos (from epel)
$ sudo yum install nethogs -y


nload

Para medir el ancho de banda total hay muchas app: nload, también hay que ejecutarla como admin pero no hace falta indicar la interfaz, mide el total:

Instalación:

# ubuntu/debian
$ sudo apt-get install nload

# fedora or centos
$ yum install nload -y


ifstat

En los casos que quieran verlo tipo batch en vivo, muy útil para tener algo sencillo que nos muestre segundo a segundo en una listita, probé ifstat y es bastante útil: 

# ubuntu/debian
$ sudo apt-get install ifstat 

# fedora or centos
$ yum install ifstat -y

BMon

BMon (Bandwidth Monitor) es una herramienta similar a nload que muestra la carga de tráfico sobre todas las interfaces de red en el sistema. La salida también se compone de un gráfico y una sección con detalles del nivel de paquetes.

Instale BMon - Ubuntu, Debian y Fedora usuarios pueden instalar desde repositorios predeterminados. Los usuarios de CentOS necesitan repoforge configuración, ya que su no disponible en Epel.

# Ubuntu o debian
$ Sudo apt-get install BMon

# Fedora o centos (desde repoforge)
$ Sudo yum install BMon
BMon soporta muchas opciones y es capaz de producir informes en formato html. Compruebe la página de manual para más información





Tcptrack

Es similar a iftop, y utiliza la biblioteca PCAP para capturar paquetes y calcular varias estadísticas como el ancho de banda utilizado en cada conexión. También es compatible con los filtros PCAP estándar que pueden ser utilizados para supervisar las conexiones específicas.

Instale Tcptrack - Ubuntu, Debian y Fedora tienen en repos por defecto. Los usuarios de CentOS necesitan obtener de RepoForge ya que no está disponible en Epel tampoco.

# Ubuntu, debian
$ Sudo apt-get install Tcptrack

# Fedora, CentOS (desde repositorio repoforge)
$ Sudo yum install Tcptrack





vnStat

VnStat es poco diferente de la mayoría de las otras herramientas. En realidad, tiene un servicio de fondo / daemon y mantiene la grabación del tamaño de transferencia de datos todo el tiempo. A continuación puede ser utilizado para generar un informe de la historia de uso de la red.

$ service vnstat status
 * vnStat daemon is running

Correr vnStat sin ninguna opción simplemente mostrar la cantidad total de la transferencia de datos que tuvo lugar desde la fecha en que el demonio está en ejecución.



Para controlar el uso del ancho de banda en tiempo real, utilice la opción '-l' (modo en directo). A continuación, se mostraría el ancho de banda total utilizada por los datos entrantes y salientes, pero de una manera muy precisa sin ningún detalle acerca de las conexiones internas o procesos de acogida.



VnStat es más como una herramienta para obtener informes históricos de cuánto ancho de banda se utiliza todos los días o en el último mes. No es estrictamente una herramienta para el monitoreo de la red en tiempo real.

VnStat soporta muchas opciones, detalles sobre los que se pueden encontrar en la página de manual.

Instale vnStat

  # Ubuntu o debian
 $ Sudo apt-get install vnStat

 # Fedora o centos (de EPEL)


 $ Sudo yum install vnStat 

speedometer


Otra herramienta pequeña y sencilla que simplemente saca buenos gráficos en busca de tráfico entrante y saliente a través de una interfaz dada.

$ speedometer -r eth0 -t eth0



Install speedometer

# ubuntu or debian users

$ sudo apt-get install speedometer


Trafshow

#aptitude install netdiag

Como NetWatch y pktstat, trafshow informa las actuales conexiones activas, su protocolo y la velocidad de transferencia de datos en cada conexión. Puede filtrar las conexiones que utilizan filtros de tipo pcap.

Monitorear únicas conexiones tcp



$ Sudo apt-get install netdiag

martes, 29 de septiembre de 2015

20 Comandos Netstat para Administradores de Redes Linux

1. Listado de todos los puertos de escucha TCP y conexiones UDP

Listado de todos los puertos (TCP y UDP) mediante netstat -a.

2. Listado de conexiones de puertos TCP

Listado de sólo conexiones de puerto TCP (Transmission Control Protocol) utilizando netstat -at.

3. Listado de conexiones UDP Puertos

Listado sólo conexiones de puerto UDP (User Datagram Protocol) utilizando netstat -au.

4. Listado de todas las conexiones de Escucha

Listado de todas las conexiones activas de escucha de puertos con netstat -l.

5. Listado de todos los puertos de escucha TCP

Listado de todos los puertos TCP de escucha activa mediante la opción netstat -lt.

6. Listado de todos los puertos de escucha UDP

Listado de todos los puertos UDP de escucha activa mediante la opción netstat -lu.

7. Listado de todos los puertos de escucha UNIX

Listado de todos los puertos de escucha UNIX activos utilizando netstat -lx.

8. Mostrando estadísticas por protocolo

Muestra estadísticas por protocolo. De forma predeterminada, se muestran las estadísticas para el TCP, UDP, ICMP e IP. El parámetro -s se puede utilizar para especificar un conjunto de protocolos.

9. Mostrando estadísticas por protocolo TCP

Mostrando estadísticas de único protocolo TCP mediante la opción netstat -st.

11. Visualización del nombre de servicio con PID

Viendo nombre de servicio con su número PID, utilizando la opción netstat -tp mostrará "PID / Program Name". 

12. Viendo modo promiscuo

Viendo modo promiscuo con ac, netstat imprimirá la información seleccionada o actualización de la pantalla cada cinco segundo. Actualización de la pantalla por defecto en cada segundo. netstat -ac 5 | grep tcp

13. Viendo enrutamiento IP del núcleo

14. Muestra la tabla de enrutamiento del núcleo 

Con netstat y comando de la ruta IP. netstat -r

15. Mostrando transacciones de paquetes de interfaz de red 

Que incluye tanto la transferencia y recepción de paquetes con un tamaño de MTU. netstat -i

Mostrando tabla de interfaz del kernel, similar al comando ifconfig.
netstat -ie

16. Visualización de información de IPv4 e IPv6

Muestra la información de pertenencia a un grupo multicast de IPv4 e IPv6. netstat -g

17. Imprimir Información Netstat continuamente

Para obtener información netstat cada pocos segundos, a continuación, utilice el comando siguiente, se imprimirá la información netstat continuamente, por ejemplo, cada pocos segundos. netstat -c

18. Encontrar direcciones no soportadas

Encontrar familias de direcciones sin configurar con alguna información útil. netstat --verbose

19. Encontrar programas de escucha

Averigüe cuántos escuchar programas que se ejecutan en un puerto. netstat -ap|grep http

20. Visualización de estadísticas de red RAW. netstat --statistics --raw




















 

martes, 25 de agosto de 2015

La generación de claves GPG: No hay suficientes bytes aleatorios disponibles

No bytes aleatorios suficientes disponibles
Generación de claves con GnuPG

Cualquier persona que quiera crear una nueva clave establecido a través de GnuPG (GPG) pueden presentar en este error:

Tenemos que generar una gran cantidad de bytes aleatorios.  Es una buena idea realizar
 alguna otra acción (escriba en el teclado, mueva el ratón, utilizar la
 discos) durante la generación privilegiada;  esto da el número aleatorio
 generador una mejor oportunidad de ganar suficiente entropía.

 No hay suficientes bytes aleatorios disponibles.  Por favor hacer algún otro trabajo para dar
 el sistema operativo la oportunidad de recoger más entropía!  (Necesidad 142 bytes más) 

El problema es causado por la falta de entropía (o el ruido del sistema aleatorio).

Para comprobar la entropía disponible, compruebe los parámetros del kernel colocando el siguiente comando en un terminal como root:
cat /proc/sys/kernel/random/entropy_avail

root@repo-chimanta:/# cat /proc/sys/kernel/random/entropy_avail
15

Para solucionarlo, ejecute el comando rngd: rngd -f -r / dev / urandom

Debian / Ubuntu: apt-get install rng-tools
Red Hat / CentOS: yum install -y rng-utils

root@repo-chimanta:/# rngd -f -r /dev/urandom
rngd 2-unofficial-mt.14 starting up...
entropy feed to the kernel ready

root@repo-chimanta:/# cat /proc/sys/kernel/random/entropy_avail
3413





lunes, 17 de agosto de 2015

Comando SED en Linux

Qué es sed

SED (Stream EDitor) es un editor de flujos y ficheros de forma no interactiva. Permite modificar el contenido de las diferentes líneas de un fichero en base a una serie de comandos o un fichero de comandos (-f fichero_comandos).

Sed recibe por stdin (o vía fichero) una serie de líneas para manipular, y aplica a cada una de ellas los comandos que le especifiquemos a todas ellas, a un rango de las mismas, o a las que cumplan alguna condición..

Su sintaxis es de la forma:
sed [opciones] ´[comandos]´ archivos-de-entrada.

Algunas de sus opciones son:

i Insertar línea antes de la línea actual.
a Insertar línea después de la línea actual.
c Cambiar línea actual.
d Borrar línea actual.
p Imprimir línea actual en salida estándar.
s Sustituir cadena en línea actual.
r archivo Añadir contenido de “archivo” a la línea actual.
w archivo Escribir salida a un archivo.
! Aplicar instrucción a las líneas no seleccionadas por la condición.

q Finalizar procesamiento del archivo.

Por ejemplo:

  Sustituir apariciones de cadena1 por cadena2 en todo el fichero:
  # sed 's/cadena1/cadena2/g' fichero > fichero2

  Sustituir apariciones de cadena1 por cadena2 en las líneas 1 a 10:
  # comando | sed '1,10 s/cadena1/cadena2/g'
  
  Eliminar las líneas 2 a 7 del fichero
  # sed '2,7 d' fichero > fichero2
  
  Buscar un determinado patrón en un fichero:
  # sed -e '/cadena/ !d' fichero
  
  Buscar AAA o BBB o CCC en la misma línea:
  # sed '/AAA/!d; /BBB/!d; /CCC/!d' fichero

  Buscar AAA y BBB y CCC:
  # sed '/AAA.*BBB.*CCC/!d' fichero
  
  Buscar AAA o BBB o CCC (en diferentes líneas, o grep -E):
  # sed -e '/AAA/b' -e '/BBB/b' -e '/CCC/b' -e d
  # gsed '/AAA\|BBB\|CCC/!d'

Formato de uso


El formato básico de uso de sed es:
  # sed [-ns] '[direccion] instruccion argumentos'

Donde:

[direccion] es opcional, siendo un número de línea (N), rango de números de línea (N,M) o búsqueda de regexp (/cadena/) indicando el ámbito de actuación de las instrucciones. Si no se especifica [direccion], se actúa sobre todas las líneas del flujo.
Instruccion puede ser:
i = Insertar línea antes de la línea actual.
a = Insertar línea después de la línea actual.
c = Cambiar línea actual.
d = Borrar línea actual.
p = Imprimir línea actual en stdout.
s = Sustituir cadena en línea actual.
r fichero = Añadir contenido de "fichero" a la línea actual.
w fichero = Escribir salida a un fichero.
! = Aplicar instrucción a las líneas no seleccionadas por la condición.
q = Finalizar procesamiento del fichero.
-n: No mostrar por stdout las líneas que están siendo procesadas.

-s: Tratar todos los ficheros entrantes como flujos separados.

Ejemplos de sustitución

Reemplazar cadenas:
  # sed 's/^Host solaris8/Host solaris9/g' fichero > fichero2

Reemplazar cadenas sólo en las lineas que contentan una cadena:
  # sed '/cadena_a_buscar/ s/vieja/nueva/g' fichero > fichero2

Reemplazar cadenas sólo en en determinadas líneas:
  # sed '5,6 s/vieja/nueva/g' fichero > fichero2

Reemplazar multiples cadenas (A o B):
  # sed 's/cadenasrc1\|cadenasrc2/cadena_nueva/g'

Sustituir líneas completas (c) que cumplan o no un patrón:
  # echo -e "linea 1\nlinea 2" | sed '/1/ cPrueba'
    Prueba
    linea 2
  # echo -e "linea X 1\nlinea 2" | sed '/1/ !cPrueba'
    linea 1
    Prueba


Ejemplos de Inserción

Insertar en una linea especifica en este caso la linea 41 del archivo fichero.txt
sed -i '41a Texto_a_ingresar' fichero.txt


Insertar 3 espacios en blanco al principio de cada línea:
  # sed 's/^/   /' fichero

Añadir una línea antes o despues del final de un fichero ($=última línea):
  # sed -e '$i Prueba' fichero > fichero2
  # sed -e '$a Prueba' fichero > fichero2

Insertar una linea en blanco antes de cada linea que cumpla una regex:
  # sed '/cadena/{x;p;x;}' fichero

Insertar una linea en blanco detras de cada linea que cumpla una regex:
  # sed '/cadena/G' fichero

Insertar una linea en blanco antes y despues de cada linea que cumpla una regex:
  # sed '/cadena/{x;p;x;G;}' fichero
  
Insertar una línea en blanco cada 5 líneas:
  # sed 'n;n;n;n;G;' fichero
  
Insertar número de línea antes de cada línea:
  # sed = filename | sed 'N;s/\n/\t/' fichero
  
Insertar número de línea, pero sólo si no está en blanco:
  # sed '/./=' fichero | sed '/./N; s/\n/ /'

Si una línea acaba en \ (backslash) unirla con la siguiente:
  # sed -e :a -e '/\\$/N; s/\\\n//; ta' fichero

Ejemplos de Selección/Visualización

  Ver las primeras 10 líneas de un fichero:
  # sed 10q
  
Ver las últimas 10 líneas de un fichero:
  # sed -e :a -e '$q;N;11,$D;ba'
  
Ver un rango concreto de líneas de un fichero:
  # cat -n fich2 | sed -n '2,3 p'
    2    linea 2
    3    linea 3
  (Con cat -n, el comando cat agrega el número de línea).
  (Con sed -n, no se imprime nada por pantalla, salvo 2,3p).

Ver un rango concreto de líneas de varios ficheros:
  # sed '2,3 p' *
    linea 2 fichero 1
    linea 3 fichero 1
    linea 2 fichero 2
    linea 3 fichero 2
  (-s = no tratar como flujo sino como ficheros separados)

Sólo mostrar la primera linea de un fichero:
  # sed -n '1p' fichero > fichero2.txt

No mostrar la primera linea de un fichero:
  # sed '1d' fichero > fichero2.txt

Mostrar la primera/ultima línea de un fichero:
  # sed -n '1p' fichero
  # sed -n '$p' fichero

Imprimir las líneas que no hagan match con una regexp (grep -v):
  # sed '/regexp/!d' fichero
  # sed -n '/regexp/p' fichero

Mostrar la línea que sigue inmediatamente a una regexp:
  # sed -n '/regexp/{n;p;}' fichero

Mostrar desde una expresión regular hasta el final de fichero:
  # sed -n '/regexp/,$p' fichero
  
Imprimir líneas de 60 caracteres o más:
  # sed -n '/^.\{60\}/p' fichero
  
Imprimir líneas de 60 caracteres o menos:
  # sed -n '/^.\{65\}/!p' fichero
  # sed '/^.\{65\}/d' fichero
  
Ejemplos de Borrado

Eliminar un rango concreto de líneas de un fichero:
  # sed '2,4 d' fichero > fichero2.txt

Eliminar todas las líneas de un fichero excepto un rango:
  # sed '2,4 !d' fichero > fichero2.txt
  
Eliminar la última línea de un fichero
  # sed '$d' fichero

Eliminar desde una línea concreta hasta el final del fichero:
  # sed '2,$d' fichero > fichero2.txt

Eliminar las líneas que contentan una cadena:
  # sed '/cadena/ d' fichero > fichero2.txt
  # sed '/^cadena/ d' fichero > fichero2.txt
  # sed '/^cadena$/ d' fichero > fichero2.txt

Eliminar líneas en blanco (variación del anterior):
  # comando | sed '/^$/ d'
  # sed '/^$/d' fichero > fichero2.txt

Eliminar múltiples líneas en blanco consecutivas dejando sólo 1:
  # sed '/./,/^$/!d' fichero

Añadir una línea después de cada línea:
  # echo -e "linea 1\nlinea 2" | sed 'aPrueba'
    linea 1
    Prueba
    linea 2
    Prueba

Eliminar espacios al principio de línea:
  # sed 's/^ *//g' fichero

Eliminar todos los espacios que haya al final de cada línea:
  # sed 's/ *$//' fichero

Eliminar espacios sobrantes a principio y final de línea, o ambos:
  # sed 's/^[ \t]*//' fichero
  # sed 's/[ \t]*$//' fichero
  # sed 's/^[ \t]*//;s/[ \t]*$//' fichero

Eliminar tags HTML:
  # sed -e :a -e 's/<[^>]*>//g;/</N;//ba' fichero
  
Borrar líneas duplicadas no consecutivas de un fichero:
  # sed -n 'G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P' fichero

Eliminar líneas en blanco y comentarios bash:
  # comando | sed '/^$/ d'
  # sed '/^$/d; / *#/d' fichero > fichero2.txt

Uso de salida selectiva

Salir a nuestra voluntad antes de acabar el fichero:
  # sed -e '/uno/ s/uno/1/' -e '/salir/ q' fichero > fichero2.txt
  # sed 10q fichero
  # sed q fichero

Equivalencia de -e con ";":
  # sed -e '/AAA/b' -e '/BBB/b' -e 'd'  ==  sed '/AAA/b;/BBB/b;d'

Usar 'q' apropiadamente reduce tiempo de procesamiento:
  # sed -n '10,20p' fichero
  # sed -n '21q;10,20p' fichero  -> Más rápido que el anterior.
  
Conversión de CRLF de DOS a formato UNIX (LF):
  # sed 's/.$//' fichero
  
Conversión de LF de UNIX a formato DOS (CRLF):
  # sed 's/$'"/`echo \\\r`/" fichero
  
Obtener el Subject de un correo, pero sin cadena "Subject: ":
  # sed '/^Subject: */!d; s///;q' fichero
  
Imprimir párrafo (cadenas entre 2 líneas en blanco) si contiene XXX:
  # sed -e '/./{H;$!d;}' -e 'x;/XXX/!d;' fichero

Imprimir párrafo si contiene (1) XXX y ZZZ o bien (2) XXX o ZZZ :
  # sed -e '/./{H;$!d;}' -e 'x;/XXX/!d;/ZZZ/!d'
  # sed -e '/./{H;$!d;}' -e 'x;/XXX/b' -e '/ZZZ/b' -e d