Linux

Linux, Trucos

Excluir directorios en las búsquedas con find en Linux. Prune y -not -path

En ocasiones tienes que buscar ficheros en un árbol de directorios Linux, pero quieres excluir directorios de la búsqueda. ¿Cómo se hace con find? Hoy te lo contamos. Cómo excluir directorios de las búsquedas con find en Linux. Tienes varias opciones, os dejamos dos de las más usadas -prune  y -not -path de find. -prune. La opción -prune le dice a find que no descienda por ese directorio.  Vamos a ver ciertos ejemplos. Recordamos que $ find . -name prueba busca todo con nombre prueba.- $ find . -name prueba -prune   Esto dice que busque todo con nombre prueba y no descienda por los directorios con ese nombre. – $ find ./* -prune  Aquí find mostrará el contenido del directorio actual pero no descenderá por sus directorios (por prune).¿Cómo hacer que con prune se puedan omitir ciertos directorios y  muestre otros? Con la opción -o -print   . -o es un OR, con lo que podemos poner más comandos que no sigan la pauta del prune. -print muestra el contenido. Ejemplos: -$ find . -name prueba -prune -o -print Esto excluye el directorio prueba y muestra el resto. Es como si dijera “encuentra prueba, no bajes por ahí, y muestra todo lo demás”. – $ find . -name prueba -prune -print -o -print Encuentra todo lo que sea prueba, no desciendas por ahí pero muéstramelo y luego muestra el resto. Es igual que el anterior pero muestra los resultados prueba encontrados. – $ find . -type d -name Azul -prune -o -name “*.jpg” -print Esto busca todos los ficheros con extensión jpg excepto los que están en el directorio Azul. Con esto podéis crear vosotros las combinaciones que os hagan falta. -not -path. Path te permite buscar en una ruta, -not -path te excluye esa ruta. Así que find /home/user/pedro -type f -not -path “*doc/texto*” -not -path “*images/texto*” Busca todos los ficheros en el directorio pedro que no tengan las rutas indicadas. Uno de los problemas que tiene path es que va a tardar  más porque comprueba en todas las búsquedas si cumple la cadena en -not -path. Podemos optimizarlo usando una combinación de ambos comandos: find . -path ./docs/privados -prune -o -print Esto evita el directorio docs/privados y todo lo que haya debajo (prune hace que no descienda por él) y muestra todo lo demás.

Linux, Servidores, Sistemas, Trucos

Cómo saber las conexiones activas por FTP en un servidor Linux

Si tienes un servidor Linux y quieres saber qué conexiones de FTP están activas en ese momento o, dicho de otra manera, cuánta gente hay conectada en ese momento por FTP, hoy os decimos cómo. Enumerar las conexiones activas por FTP en un servidor Linux. Pure-ftpwho: Este es uno de los primeros comandos a probar. En línea de comandos lista las conexiones de FTP activas. Pero además tiene algún parámetro interesante como -c  o -w que hace que el resultado se muestre en html. Por lo tanto puede usarse en u script y mostrarse en una web o herramienta interna. Puedes filtrar los resultados de netstat para el puerto que quieras, tanto el 21 de FTP clásico como el 22 de sftp. netstat -tan | grep \:21 para FTP netstat -tan | grep \:22 para SFTP En algunos servidores, si lo tienen instalado, también puedes ejecutar ftptop o ftpwho. Así podréis vigilar vuestras conexiones en  el servidor.

Linux, Sistemas

Cómo saber el número de cores y CPUs en un Linux

En ocasiones puede interesarte saber el número de cores en tu máquina Linux, o el número de procesadores que van a poder gestionar un proceso. Hoy os decimos cómo. Cómo saber el número de cores y CPUs en un Linux. Tienes varias maneras. Por un lado puedes usar el comando nproc. nproc sin ningún delimitador proporciona el número de procesadores disponibles. nproc –all proporciona el número de procesadores instalados (estén o no disponibles). Por otro lado, el comando lscpu proporciona algo más de información detallada sobre el procesador, si bien a lo mejor algo confusa. Aquí hay que tener en cuenta que: CPUs =Hilos de procesamiento X núcleos por socket X sockets Como veis en la imagen CPUs= 1 X 4 x 1= 4, mismo resultado que el comando nproc. En este caso, por ejemplo, tenemos 1 procesador físico en 1 socket con 4 núcleos, y un hilo, por lo tanto 4 procesadores “virtuales”. Para más inri podéis ver esta misma información de otra manera con: grep -E ‘processor|core id’ /proc/cpuinfo o grep -m 1 ‘cpu cores’ /proc/cpuinfo    

Linux, Noticias Informáticas, Sistemas, Trucos

Puedes descargar distribuciones de Linux en la Tienda de Windows y usarlas como una aplicación

¿Sabías que ya puedes descargar distribuciones de Linux en la Tienda de Linux y usarlas como una aplicación? Es decir, no instalar dos sistemas operativos, sino usar Linux desde Windows, como un programa. Sin virtualizarlo. Yo no, lo acabo de descubrir hoy y os lo cuento. ¿Por qué la gente no usa Linux? Soy muy fan de Linux. Y suelo trabajar en él. Pero desgraciadamente cuando compras un ordenador suele venir con Windows instalado (y ya que estás lo usas). Nadie quiere instalar un sistema operativo. Esta es una de las mayores razones por las que Windows triunfa, Mac también (además de la moda) pero el sistema operativo más usado en servidores y superordenadores, Linux, no lo hace en el escritorio. Según su creador, Linus Torvalds: El área del escritorio es realmente dura y difícil y molesta que sea la última área en resistirse. La razón por la que el escritorio es una área tan difícil de dominar es porqué los usuarios no quieren instalar un sistema operativo en sus ordenadores, como tampoco lo quieren hacer en sus teléfonos. La razón por la que Linux es un éxito en los teléfonos móviles, no es porqué hayan 900.000 personas al día descargando e instalando imágenes de Android en sus teléfonos.Es porqué Android viene preinstalado con el teléfono. Esto nunca ha pasado en el campo de los ordenadores y realmente es difícil que pase, ya que aunque hayan compañías como Dell que preinstale Linux a empresas de gran envergadura, es algo que hay que pedir que se haga expresamente y solo lo hacen por una porción muy pequeña de sus ordenadores, por lo tanto la preinstalación de Linux en ordenadores no es algo común. En definitiva si no hay ordenadores con Linux preinstalado nunca se conseguirá dominar el área del escritorio(…) Ya se puede instalar Linux desde la tienda de Windows. Windows siempre había sido competencia de Linux, eran rivales. Pero desde hace un tiempo la política parece haber cambiado y se ha producido un acercamiento entre ambos. En una de sus actualizaciones, Windows 10 empezó por activar el bash desde el que podías ejecutar algunos comandos de linux desde un terminal en Windows.  Pero esto ha ido evolucionando hasta lo que ahora se llama WSL (Windows Subsystem for Linux). Un subsistema que no virtualiza sino ejecuta los comandos directamente en Windows. Es como un Wine de Windows (pero al revés). Empezaron a portar las distribuciones de Linux a ese subsistema y dejarlas en la tienda (Microsoft Store) para que las puedas ejecutar. Primero fue Ubuntu, pero ahora tienes otras muchas como OpenSuse, Debian, Suse, Kali…  Lo alucinante es que además puedes instalar varias. Es decir, puedes tener varias distribuciones de Linux funcionando a la vez. Además, ahora han sacado una herramienta para que puedas portar cualquier distribución que quieras a este sistema y ejecutarla en Windows. ¿Por qué es tan interesante? Esto es interesante no sólo para la gente que nos gusta Linux, sino: para los que trabajamos con sistemas en varios entornos. Ahora vas a poder tener en una misma máquina Windows y varias distribuciones de Linux y así podrás probar cómo funcionan e interactúan los programas. Además algunas distribuciones tiene comandos que no tiene Windows y puedes usarlos. Usar programas que sólo funcionen desde Linux en Windows. Tener instaladas, como un programa, distribuciones de seguridad como Kali Linux. Muy útil para tener herramientas de seguridad en Windows. Algunas de las distros vienen con el paquete básico (para ocupar poco), incluso sólo con CLI, pero se pueden instalar los paquetes y entornos gráficos con los instaladores normales de dicha distribución. En próximos artículos y vídeos os enseñaremos a instalar y usar alguna de estas aplicaciones de Linux desde el Windows Store.            

Linux, Servidores, Sistemas, Trucos

Ncdu. Comprueba el uso de tu disco desde terminal en Linux mejor que con du

Ya hemos comentado que para ver el uso del espacio por termina en Linux se puede usar el comando du (es el que usamos todos). Pero du es más bien escaso (por decir algo). Si necesitamos más información, conviene instalar ncdu, del que hablamos hoy. Ncdu (Ncurses disck usage) es un analizador de disco programado en C y realizado bajo la interfaz ncurses (que permite crear aplicaciones con interfaces basadas en texto).  Añade varias funcionalidades a du y lo hace más visual y completo. No viene por defecto en muchas distribuciones pero si está en los repositorios de las principales, así que puedes instalarlo fácilmente. En Debian y similares con: sudo apt-get install ncdu Uso del comando. Una vez instalado, si ejecutas ncdu sin opciones obtendrás un listado de directorios en forma de árbol. También se puede dar una ruta específica como: ncdu /home/ Podrás navegar por el listado con el cursor o las flechas (lo bueno de la interfaz gráfica). Pulsando la tecla i encima de un directorio te dará información del mismo. Como el programa está destinado a limpiar servidores, también te permite la opción de borrar. Puedes ponerte encima de una elemento y pulsar la tecla d para borrar (te pide confirmación, tranquilos). La tecla ? te lleva a la ayuda con más comandos que puedes realizar. Para salir tienes que pulsar la tecla q. Además de la interfaz visual, ncdu tiene funciones extra. Por ejemplo podemos crear informes y enviarlos a un fichero: ncdu /home/datos -o informe.txt Estos ficheros tienen mucha información y no son muy amigables, puede pueden usarse como fuente y leerse desde el mismo comando: ncdu-f informe.txt Además, podemos programar la creación de estos informes en un crontab. Hay muchísimas otras opciones como exclusiones, quiet mode etc, pero para más información mejor consultad el manual oficial. Como veis un pequeño comando muy útil para los que usamos Linux.

Diseño Web, Información Tecnica, Linux, Servidores

Cómo configurar http/2 para Apache (ejemplo con Debian)

Hace unos días explicamos las ventajas de http/2, las páginas vuelan. Hoy queremos explicaros cómo activarlo en vuestro servidor Apache. En el ejemplo supondremos un servidor Debian (varía poco en otro sistema). Apache tiene que tener el mod_http2. Lo primero es que tu versión de Apache tiene que venir con el módulo http2  (mod_http2) compilado. Si no puedes o cambiar a una versión que lo tenga, o compilar Apache. Para poder hacerlo tu sistema necesita al menos la versión 1.2.1 de libnghttp2. Una vez comprobado, compila Apache con –enable-http2. Http/2 funciona casi exclusivamente con SSL (https). Necesitas certificado. Aunque no es una petición de http/2, la mayoría de los navegadores sólo hablan http/2 con certificado. Así que asegúrate que tus webs (las que quieres que vayan con http/2) lo tienen. Recuerda que puedes tener ambas cosas activadas así que puedes tener http/2 con alguna web y http/1 con otras. Seguramente tendrás que cambiar tu Módulo de MultiProcesamiento (MPM). Http/2  no funciona con todos los MPM. No funciona con apache mpm prefork desde apache 2.4.27. Hay que usar mpm worker o event. Pero mpm worker y event no pueden utilizar mod_php necesitan por fuerza usar fastcgi o php-fpm, así que a lo mejor también tienes que cambiar eso. Os dejamos un ejemplo:     apachectl stop     apt-get install php7.1-fpm # Instala el Php-fpm Esto puede variar por la versión     a2enmod proxy_fcgi setenvif     a2enconf php7.1-fpm # De nuevo depende de la versión a instalar.     a2dismod php7.1 # Deshabilita mod_php     a2dismod mpm_prefork  # Deshabilita el prefork anterior porque sólo se puede usar un MPM     a2enmod mpm_event  # Habilita event. Puedes habilitar worker en vez de este.     apachectl start Configuración. Lo primero es activar el módulo con : LoadModule http2_module modules/mod_http2.so O activarlo con: a2enmod http2 apachectl restart Después tienes que modificar tu fichero de configuración de Apache para decir si quieres que todas las webs vayan preferiblemente con http/2. Por ejemplo con : Protocols h2 http/1.1 o Protocols h2 h2c http/1.1 Como veis si no puede usar el 2 carga el protocolo en versión 1. Si, por el contrario, quieres activarlo sólo por web, por virtual host, tienes que hacer algo como: Protocols http/1.1 <VirtualHost *:443> ServerName tudominio.es Protocols h2 http/1.1 </VirtualHost> Recuerda reiniciar Apache para que todo se active.

Linux, Servidores, Sistemas, Trucos

Modo rescate OVH: cómo acceder a tu servidor aunque esté caído o bloqueado.

Tenemos servidores de clientes en varios proveedores, uno de ellos OVH. Hace unos días uno de dichos servidores, tras una modificación en los iptables, nos echó y no dejaba conectarnos. De ninguna manera, ni tras reiniciar. Por si os ocurre, os explicamos el modo rescate de OVH (gracias, gracias, gracias OVH), a través del cual pudimos deshacer la modificación anterior y acceder de nuevo al servidor. El modo rescue-pro, rescate, carga un sistema Linux basado en Debian desde red, lo que te permite montar los discos y hacer los cambios necesarios. Igual que si tuvieras el servidor delante y iniciaras en modo recuperación de Linux. Para activar el modo rescate (inglés): Tienes que ir al área de cliente dedicado y seleccione el servidor al que quieres acceder en la columna izquierda. En la pestaña «Estado del servidor», en «Información general» > «Boot», pincha en «Editar». Después «Iniciar en modo rescue» y elige la configuración rescue-pro. Una vez elegido ese modo de inicio, hay que reiniciar el servidor. Si puedes por SSH, si no desde el panel de OVH. OVH mandará un correo con el la contraseña temporal de root. Entra por SSH, usa el usuario root y la contraseña que te han mandado. Verás que puedes acceder, pero no tienes los discos montados. Tienes que montarlos. Para saber que disco tienes puedes hacer fdisk -l. Monta los discos, por ejemplo con: mount /dev/hda2 /mnt/var Después haz los cambios que necesites. Para desactivar el modo rescate entra de nuevo en el mismo menú de OVH y después en el modo de inicio escoge «Iniciar en el disco duro». Después reinicia el servidor. Este tipo de servicios de los proveedores no tienen precio 😀  

Linux, Sistemas, Trucos

Elasticsearch en Debian. Cómo instalarlo: no uséis la versión de los repositorios

Ayer tuvimos que instalar un Elasticsearch en Debian. Y como nos dio bastantes problemas, os dejamos cómo hacerlo. Primero, NO instaléis la versión en los repositorios de Debian. Ojala fuera tan sencillo como sudo apt-get install elasticsearch . El paquete en los repositorios instala bien,  se ejecuta bien, pero rechaza las conexiones cuando haces una prueba en el terminal mediante curl localhost:9200No deja registros, no da errores, nada. Si das un service elasticsearch status te dice Active (exited) en verde. Lo que significa que está arrancado, pero no sabe qué demonio usar. Si buscas soluciones a esto hay muchas como cambiar el network.host de elasticsearch o decirle en /etc/default/elasticsearch que arranque el demonio (viene desactivado por defecto).No hagáis nada de eso, no perdáis tiempo, no funciona y la solución es más sencilla: instalar la última versión de los repositorios de Elasticsearch. Lo primero que deberéis hacer es comprobar que versión de java tenéis con java -version. Debería decir al menos 1.8 Si no instala esa versión. Para ello: Agrega los repositorios de Oracle: su – echo “deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main” | tee /etc/apt/sources.list.d/webupd8team-java.list echo “deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main” | tee -a /etc/apt/sources.list.d/webupd8team-java.list apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv-keys EEA14886 apt-get update exit Ahora tienes dos maneras de instalar el java: Si quieres que esa versión sea la que tiene por defecto: sudo apt-get install oracle-java8-set-default Si no quieres que sea por defecto (yo no quería): sudo apt-get install –no-install-recommends oracle-java8-installer Comprueba la versión de nuevo con java -version. Ahora vamos a instalar elasticsearch. Añadimos la clave pública de Elastic wget -qO – https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add – Instala el apt-transport-https sudo apt-get install apt-transport-https Añade el repositorio echo “deb https://artifacts.elastic.co/packages/5.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list Actualiza e instala elasticsearch de los repositorios de la empresa. sudo apt-get update && sudo apt-get install elasticsearch Más información sobre la instalación aquí. Ok ya lo tienes instalado, ¿cómo lo ejecutas? Tienes que ver si tu sistema usa Sysv init o systemd. Lo puedes verificar de manera sencilla haciendo: ps -p 1 Nosotros usábamos systemd y explicaré el proceso con este sistema. Pero dejo el enlace aquí para que veáis cómo se hace de la otra manera. (Optativo aunque recomendable). Hacer que elasticsearch se inicie al arrancar el servidor: sudo /bin/systemctl daemon-reload sudo /bin/systemctl enable elasticsearch.service Podéis inicializar elasticsearch y pararlo con estos comandos: sudo systemctl start elasticsearch.service sudo systemctl stop elasticsearch.service Para ver si funciona haced un service elasticsearch status y debería poner online. Podéis comprobarlo haciendo curl localhost:9200 y deberíais recibir algo como (por cierto podéis ver la versión de elasticsearch así tb): { “name” : “Cp8oag6”, “cluster_name” : “elasticsearch”, “cluster_uuid” : “AT69_T_DTp-1qgIJlatQqA”, “version” : { “number” : “6.0.0-alpha1”, “build_hash” : “f27399d”, “build_date” : “2016-03-30T09:51:41.449Z”, “build_snapshot” : false, “lucene_version” : “7.0.0-SNAPSHOT” }, “tagline” : “You Know, for Search” } También podéis verificar que está escuchando en ese puerto con netstat -ntpl ¡Y ya lo tenéis! Por último recordaros que los logs están en /var/log/elasticsearch/

Linux, Sistemas, Soporte, Trucos

Rsync failed to connect. Error code 10

Esta semana estábamos manejando unos servidores de un cliente nuevo y no podíamos hacer un rsync entre dos de ellos. Se suponía que estaba funcionando pero no. El error que recibíamos era: rsync: failed to connect to xxxxxx: Connection refused (111) rsync error: error in socket IO (code 10) Obviamente puede pasar por muchas cosas. Os dejamos la solución que nos sirvió por si os pasa. En resumen la causa era que rsync no estaba corriendo en el servidor, seguramente debido a un reinicio. Para comprobar si es así podéis ejecutar lo siguiente en el servidor que se supone rechaza la conexión (destino): $ systemctl list-unit-files |grep rsync rsync.service disabled Si sale disabled es eso. ¿Cómo activarlo? $ sudo systemctl enable rsync.service Synchronizing state for rsync.service with sysvinit using update-rc.d… Executing /usr/sbin/update-rc.d rsync defaults Executing /usr/sbin/update-rc.d rsync enable Con eso habilitamos el servicio PERO todavía no lo activamos. $ sudo systemctl start rsync.service Esto activa el servicio, ya está funcionado. Ahora lo podemos comprobar con: $ systemctl |grep rsync rsync.service loaded active running fast remote file copy program daemon Como vemos ya funciona. Y además, la gran ventaja es que “sobrevive” a los reinicios, no tenemos que activarlo manualmente todo el rato.  

Linux, Seguridad, Soporte, Trucos

Cambiar la contraseña administrador (root) en un ordenador Linux

Otro proceso que, para muchos admin puede resultar básico, pero que nos faltaba en nuestro blog: cómo cambiar la contraseña de administrador (root) de un ordenador con Linux. El resumen el proceso consiste en tener acceso físico a la máquina y entrar en el modo de usuario único (single user mode). Puedes hacer lo mismo entrando con un disco de otra distribución y He oído alguna vez cosas como “que poco seguro Linux si puedes cambiar la contraseña de manera tan fácil”. Bueno, aunque en sistemas de producción exigentes, se le pone contraseña a este single user mode, o se protege de otras maneras,  no existe sistema operativo al que no puedas acceder si tienes acceso físico. Es por eso que es tan importante tener seguridad en los locales, salas de servidores etc. Y no está mal tener este “back door” para que un usuario normal pueda cambiar su contraseña si se le olvida. El modo de entrar en este single user mode depende de la distribución de Linux… y hay muchísimas.  Una vez en ese modo en todas puedes cambiar la contraseña entrando en root con chroot o sysroot y luego con el comando passwd. Esto es común para todos. Si la distribución está usando GRUB, tienes que entrar en el menu del mismo. Algunas lo muestran al inciar, otras lo han quitado por motivos estéticos (y de seguridad) y tienes que pulsar ESC al iniciar para que aparezca. En otras (Ubuntu) tienes que pulsar Shift mientras inicia. Después pulsa la tecla e sobre la línea que quieras (la primera muchas veces) para entrar en el modo editor. Os dejamos según versiones: Centos 6: Una vez en el menú, edita la línea del kernel pulsando a. Si está borra hgb quiet Añade un espacio seguido de un 1. Pulsa Enter para reiniciar y entrar en modo single user. Centros 7: Aquí está muy detallado. Si no sigue este método: Encuentra la línea del kernel. Empieza por linux16. Cambia ro por rw init=/sysroot/bin/sh Pulsa Ctrl+X o F10 para entrar en modo single user. Debian/Ubuntu: Una vez editando el Grub encuentra la línea que dice “linux /boot/…”. Añade al final init=/bin/bash (en algunas versiones también vale poner sólo single) Ctrl+X o F10 para reiniciar. Al reinciar monta la raíz con mount -rw -o remount / Luego puedes hacer los de passwd para cambiarlo. Algunas versiones tenían recovery mode en el modo avanzado del GRUB y se puede hacer desde ahí. FreeBSD Tiene un modo single user en el menú de inicio. Con esto ya lo tendrías al reiniciar. Si no funciona tendrás que “googlear” el método para tu distribución en concreto.

Scroll al inicio