# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Comprobar resolución inversa desde línea de comandos (Linux y Windows)


Comprobar la resolución de DNS inversa significa verificar el hostname al que resuelve una IP determinada (como sabréis normalmente se busca lo contrario).

Resolución inversa (reverse DNS) en Unix/Linux

Para verificar la resolución inversa en Linux utilizaremos el comando “host”:

# host ip

Ejemplos:

Google:

# host 66.102.9.105
105.9.102.66.in-addr.arpa domain name pointer lm-in-f105.1e100.net.

Telefónica:

# host 80.58.0.33
33.0.58.80.in-addr.arpa domain name pointer 33.Red-80-58-0.staticIP.rima-tde.net.

Resolución inversa (reverse DNS) en Windows

Para windows utilizaremos el comando nslookup, que realmente también podríamos utilizar en Unix. El proceso es el siguiente:

Google:

# nslookup 66.102.9.105
Server:         208.67.222.222
Address:        208.67.222.222#53

Non-authoritative answer:
105.9.102.66.in-addr.arpa       name = lm-in-f105.1e100.net.

Telefónica:

 nslookup 80.58.0.33
Server:         208.67.222.222
Address:        208.67.222.222#53

Non-authoritative answer:
33.0.58.80.in-addr.arpa name = 33.Red-80-58-0.staticIP.rima-tde.net.

En NixCraft encontraréis unas cuantas formas más de hacerlo.

Cómo vaciar ficheros en Linux


Existen varias formas de vaciar el contenido de ficheros en sistemas Unix desde la línea de comandos, algunas de ellas son las siguientes:

# echo "" > fichero
# > fichero
# :> fichero
# cat /dev/null > fichero
# true > fichero

eBook gratuito: The Linux Command Line


The Linux Command LineThe Linux® Command Line es un libro publicado bajo licencia Creative Commons creado por William E. Shotts, Jr especialmente para aquellos que se están iniciando en el mundo de la línea de comandos Linux.

En sus 522 páginas se cubre el mismo material disponible en LinuxCommand.org pero con mucho más detalle. Además de lo básico de la línea de comandos se enseña el shell scripting y el uso de los programas más comunes de la línea de comandos Linux.

Podéis descargar el libro a través de este enlace.

Información sobre apache desde línea de comandos


Siguiendo el hilo de la Información sobre PHP desde línea de comandos hoy vamos a ver las posibilidades que nos ofrece el servidor web Apache en la línea de comandos:

En primera instancia revisamos si el binario httpd se encuentra en nuestro path o si debemos llamar a su ruta completa:

# whereis httpd
httpd: /usr/sbin/httpd /etc/httpd

En este caso podemos llamarlo directamente con “httpd”, vamos a ver algunas opciones que nos permiten sacar información sobre el servidor web:

Mostrar la versión de Apache:

# httpd -v
# httpd -v
Server version: Apache/X.X.XX
Server built:   Sep 21 2009 09:57:47

Mostrar información y ajustes de la compilación:

Como véis también muestra la información que sacábamos con httpd -v:

# httpd -V
Server version: Apache/X.X.XX
Server built:   Sep 21 2009 09:57:47
Server's Module Magic Number: ...
Server loaded: ...
Compiled using:  ...
Architecture:   32-bit
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
...
...

Mostrar módulos compilados:

# httpd -l
Compiled in modules:
  core.c
  mod_access.c
  mod_auth.c
  mod_include.c
  mod_log_config.c
  mod_logio.c
  mod_env.c
  mod_expires.c
...
...

Ejecutar una revisión de sintaxis para los ficheros de configuración:

# httpd -t
Syntax OK

Listar las directivas de configuración disponibles:

# httpd -L
Directory (core.c)
	Container for directives affecting resources located in the specified directories
	Allowed in *.conf only outside...
	Container for directives affecting resources accessed through the specified URL paths
	Allowed in *.conf only outside ...
VirtualHost (core.c)
	Container to map directives to a particular virtual host, takes one or more host addresses
	Allowed in *.conf only outside ..
Files (core.c)
...
...

Especificar un fichero de configuración alternativo:

# httpd -f fichero

Especificar un ServerRoot alternativo:

# httpd -d directorio

Listar las opciones en línea de comandos:

# httpd -h
Usage: /usr/local/apache/bin/httpd [-D name] [-d directory] [-f file]
                                   [-C "directive"] [-c "directive"]
                                   [-k start|restart|graceful|stop]
                                   [-v] [-V] [-h] [-l] [-L] [-G] [-t] [-S]
Options:
  -D name           : define a name for use in  directives
  -d directory      : specify an alternate initial ServerRoot
  -f file           : specify an alternate ServerConfigFile
  -C "directive"    : process directive before reading config files
  -c "directive"    : process directive after reading config files
  -e level          : show startup errors of level (see LogLevel)
  -E file           : log startup errors to file
  -v                : show version number
  -V                : show compile settings
  -h                : list available command line options (this page)
  -l                : list compiled in modules
  -L                : list available configuration directives
  -G                : list available configuration directives after loading conf file
  -t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
  -S                : a synonym for -t -D DUMP_VHOSTS
  -t                : run syntax check for config files

Cómo eliminar servicios de Windows desde línea de comandos (CMD)


Lo primero que debemos saber es como encontrar todos los servicios configurados en el sistema, para ello:

Windows en español:

Inicio:> Ejecutar:> services.msc

Windows en inglés:

Start:> Run:> services.msc

Servicios Windows

Aparecerá una ventana como la de la imagen, en la cual podréis ver el listado de servicios del sistema, algunos iniciados, otros parados/deshabilitados, etc. Pinchando en cada uno de ellos con el botón derecho y después en “propiedades”.

Bien, aquí podéis revisar que servicios creéis necesarios y cuales no, pudiendo parar un proceso o deshabilitarlo para que no arranque en el inicio del sistema operativo.

Por otro lado, si lo que queremos es eliminar el servicio debemos hacerlo desde la línea de comandos de Windows:

Windows en español:

Inicio:> Ejecutar:> cmd

Windows en inglés:

Start:> Run:> cmd

Una vez en la ventana de línea de comandos, para eliminar un servicio:

sc delete nombre_del_servicio

Información sobre PHP desde línea de comandos


A través de la línea de comandos podemos averiguar información relativa a PHP muy interesante, como por ejemplo:

Versión de PHP instalada:

$ php -v

PHP 5.X.X (cli) (built: Jun 18 2009 18:16:19)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
    with Zend Extension Manager vX.X.X, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer vX.X.X, Copyright (c) 1998-2007, by Zend Technologies

Módulos de PHP instalados/compilados:

$ php -m
[PHP Modules]
bcmath
calendar
ctype
curl
date
dom
filter
ftp
gd
...
...
...
[Zend Modules]
Zend Extension Manager
Zend Optimizer

Información general PHP:

La salida de este comando es la misma que <? phpinfo() ?> en un script php.

$ php -i
phpinfo()
PHP Version => 5.X.X

System => Linux  #1 SMP Thu May 7 10:39:21 EDT 2009 iX86
Build Date => Jun 18 2009 18:14:47
Configure Command =>  './configure'  '--disable-pdo' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-gd-native-ttf' '--enable-libxml' '--enable-magic-quotes' '--enable
-mbstring' '--enable-sockets' '--enable-zip' '--prefix=/usr/local' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-curl=/opt/curlssl/' '--with-freetype-dir=/usr' '--with-gd' '--wit
Server API => Command Line Interface
Virtual Directory Support => disabled
....
....
....
This program makes use of the Zend Scripting Language Engine:
Zend Engine vX.X.X, Copyright (c) 1998-2009 Zend Technologies
    with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
    with Zend Optimizer vX.X.X, Copyright (c) 1998-2007, by Zend Technologies
....
....
....

Mostrar ficheros de configuración cargados y sus rutas:

$ php --ini

Configuration File (php.ini) Path: /xxx/xxx/xx
Loaded Configuration File:         /xxx/xxx/xxx/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

Mostrar configuración de un módulo/extensión instalado:

La sintaxis es php –ri módulo

$ php --ri openssl
openssl

OpenSSL support => enabled
OpenSSL Version => OpenSSL X.X.Xe-fips-xxx 01 Jul 2008

Mostrar información de un módulo/extensión instalado:

La sintaxis es php –re módulo

$ php --re openssl
Extension [
 extension #35 openssl version  ] {

  - Constants [36] {
    Constant [ string OPENSSL_VERSION_TEXT ] { OpenSSL X.X.Xe-fips-xxx 01 Jul 2008 }
    Constant [ integer OPENSSL_VERSION_NUMBER ] { 9469999 }
    Constant [ integer X509_PURPOSE_SSL_CLIENT ] { 1 }
    Constant [ integer X509_PURPOSE_SSL_SERVER ] { 2 }
    Constant [ integer X509_PURPOSE_NS_SSL_SERVER ] { 3 }
    Constant [ integer X509_PURPOSE_SMIME_SIGN ] { 4 }
    Constant [ integer X509_PURPOSE_SMIME_ENCRYPT ] { 5 }
    Constant [ integer X509_PURPOSE_CRL_SIGN ] { 6 }
    Constant [ integer X509_PURPOSE_ANY ] { 7 }
    Constant [ integer OPENSSL_ALGO_SHA1 ] { 1 }
    Constant [ integer OPENSSL_ALGO_MD5 ] { 2 }
    Constant [ integer OPENSSL_ALGO_MD4 ] { 3 }
    Constant [ integer OPENSSL_ALGO_MD2 ] { 4 }
    Constant [ integer OPENSSL_ALGO_DSS1 ] { 5 }
...
...
...

Respecto a estos dos últimos puntos, también podemos buscar información acerca de una clase (php –rf clase) y de una función (php –rc función).

Truco Shell: Enviar correos desde línea de comandos con ficheros adjuntos


Son varias las veces que me he visto en la necesidad de enviar un email desde línea de comandos en Unix, por si lo tenéis que hacer alguna vez ahí va la solución:

cat fichero.tar.gz | uuencode fichero.tar.gz | mail -s "Asunto del email" correo@dominio.com

Lo importante es saber utilizar uuencode, pues lo que hace es transformar código binario en texto, para así poder enviarlo por correo.
Bueno, esta es una de las formas de hacerlo, espero que os sirva.