Buscar este blog

lunes, 23 de septiembre de 2013

El Génesis de la computación

Googleando un poco me encontré este texto. Lo anexo a este blog, porque, sin afán de ofender, es muy bueno reirse de vez en cuando.



Génesis de la Computación

1. Al principio Dios creo el Bit y el Byte. Y de ellos creó la Palabra.

2. Y hubo dos bytes en una palabra; y nada mas existía. Y Dios separó el Uno del Cero; y vio que esto era bueno.

3. Y Dios dijo:
- Hágase el Dato.
Y así sucedió.
Y Dios dijo:
- Que los Datos vayan a su correspondiente lugar.
Y creó los disquetes, discos duros y los discos compactos.

4. Y dijo Dios
- Háganse las computadoras, así habrá lugar para poner los disquetes, discos duros y discos compactos.
Y Dios creó las computadoras y los llamó Hardware.

5. Y no había Software aun.
Pero Dios creó programas, chicos y grandes...
Y les dijo:
- Vayan y multiplíquense por si mismos y llenen toda la Memoria.

6. Y dijo Dios:
- Crearé al Programador; y el Programador hará nuevos programas y gobernará sobre las computadoras, programas y datos.

7. Y Dios creó al Programador y lo puso en el Centro de Datos.
Y Dios le mostró al Programador el Árbol de Directorios y le dijo:
- Puedes usar todos los volúmenes y subvolúmenes, pero NO USES Windows.

8. Y Dios dijo:
- No es bueno para el Programador estar solo.
Y tomo un hueso del cuerpo del Programador y creó una criatura que buscaría al Programador, lo admiraría y amaría las cosas que hiciera el Programador;
Y Dios llamó a la criatura EL USUARIO.

9. Y el Programador y el Usuario fueron dejados por EL solos bajo el Unix desnudo y fue bueno.

10. Pero Bill fue más listo que todas las otras criaturas de Dios.
Y Bill le dijo al Usuario:
- ¿Realmente Dios te dijo que no ejecutaras ningún programa?
11. Y respondió el Usuario
- Dios nos dijo que podíamos usar cualquier programa y cualquier dato pero nos dijo que no ejecutáramos Windows o moriríamos.

12. Y Bill dijo al Usuario
- ¿Cómo puedes hablar sobre algo que no has probado? En el momento que corras Windows te convertirás en igual a Dios. Podrás crear cualquier cosa que desees con un simple clic del ratón.

13. Y el Usuario vio que los frutos del Windows eran buenos y fáciles de usar. Y el Usuario vio que cualquier conocimiento era inútil, pues Windows podía reemplazarlos.

14. Así que el Usuario instaló Windows en su computador y le dijo al Programador que era bueno.

15. Y el Programador empezó a buscar nuevos drivers.
Y Dios le pregunto:
- ¿Qué buscas?
Y el Programador respondió:
- Busco nuevos drivers porque no puedo hallarlos en el DOS.
Y Dios dijo:
- ¿Quien te dijo que necesitabas drivers? ¿Ejecutaste Windows?
Y el Programador dijo:
- ¡Fue Bill quien nos lo dijo!

16. Y Dios dijo a Bill:
- Por lo que hiciste serás odiado por todas las criaturas.
Y el Usuario estará siempre descontento contigo.
Y siempre venderás Windows.

17. Y Dios dijo al Usuario
- Por lo que hiciste Windows te decepcionará y se comerá todos tus recursos.
Y tendrás que usar programas piojosos.
Y serás infectado por virus de cómputo.
Y siempre confiaras en la ayuda del Programador.

18. Y Dios dijo al Programador:
- Porque oíste al Usuario nunca serás feliz. Todos tus programas tendrán errores y tendrás que arreglarlos hasta el fin de los tiempos.

19. Y Dios los echó del Centro de Datos y cerró la puerta y la aseguró con un password.




Happy Hacking!!!!

Gestión de Redes con GNU/Linux

Recientemente me integré a una empresa que tiene como fuerte el proveer el servicio de Internet a los municipios más alejados de la capital del estado (Zacatecas). Sin embargo, una de las cosas que me hacían falta para poder realizar mejor mi trabajo era una herramienta que me permitiera (en tiempo real) visualizar el estado general de la red, así como de los diferentes dispositivos que permiten la interconexión de las antenas de punto a punto.

Lamentablemente, mi falta de experiencia en este campo me impedía encontrar un programa que tuviera las "tres b's" (bueno, bonito y barato). Muchas herramientas están disponibles para (¡horror!) Güindous. Pero después de mucho googlear encontré algunas que parecen lo suficientemente buenas para mi chamba.

The Dude.


The Dude es una herramienta gráfica-visual desarrollada por la empresa Mikrotik, fabricante y distribuidor de equipos de telecomunicaciones. The Dude presenta una interfaz gráfica bastante amigable que permite monitorear en tiempo real el estado de la red.

Aún cuando The Dude no es Open Source, sí es una herramienta gratuita. La pueden descargar desde este enlace.

The Dude está diseñada para ejecutarse desde un entorno windows, más es posible ejecutarla desde cualquier distro GNU/Linux mediante el uso de Wine.

Puntos a favor:

  • Es muy completa
  • Es intuitiva
  • Es rápida
Puntos en contra:
  • Usa Windows
Podría mejorar:
  • Sí, si se desarrolla nativamente para GNU/Linux, sin el uso de Wine.


MRTG


MRTG es una herramienta bastante completa que utiliza un servidor web para su funcionamiento. Está escrita en C y Perl por Tobiar Oetiker y Dave Rand. Principalmente se usa para supervisar la carga de tráfico de interfaces de red.



La herramienta se basa en el protocolo SNMP para obtener información de los routers y tarjetas de red. También permite ejecutar cualquier tipo de aplicación en lugar de consultar un dispositivo SNMP.

MRTG se ejecuta como un deamon o bien como un script desde las tareas programadas con cron. Por defecto se ejecuta cada cinco minutos recolectando información de los dispositivos que se le indican en la configuración.

Pueden descargar la versión de su preferencia desde este enlace.

Puntos a favor:

  • Es Open Source
  • Funciona perfectamente con GNU/Linux y cualquier otra plataforma sin el uso de Wine
  • Usa HTML para mostrar los resultados
Puntos en contra:
  • Si el equipo a usar no tiene suficiente poder, las tareas de recolección y búsqueda de información pueden alentarlo
Podría mejorar:
  • Sí, si mejoran el instalador para GNU/Linux, ya que es necesario compilarlo y construirlo antes de usarlo.

Scotty+Tkined


Este es un programa para la gestión de redes que hace uso del protocolo SNMP para recolectar la información. Sin embargo su funcionalidad está muy limitada.

Pueden descargarlo desde este enlace.

Y hay más herramientas que estuve checando, pero que en escencia hacen lo mismo en mayor o menor medida. Espero que este post les sea de utilidad.

Happy Hacking!!!

viernes, 6 de septiembre de 2013

Netflix en Ubuntu

Hace tiempo publicaba en este blog que no era posible instalar Netflix en Linux porque la interfaz de Netflix utiliza Silverlight, el cual es una herramienta que no cuenta con licencia para ser usada más que por aquellos Sistemas Operativos que pagan por ello (MacOS). Además requiere por fuerza la utilización de Internet Explorer.

Gracias al desarrollador Erich Hoover y al bloguero David Andrews ahora los usuarios de GNU/Linux (específicamente Ubuntu) podemos disfrutar de los servicios de streaming de Netflix, y todo gracias a una aplicación llamada Netflix Desktop.

Pero primero lo primero: Antes de instalar esta aplicación, debemos asegurarnos de que nuestro Ubuntu cuenta con Wine instalado y con sus extenciones completas.

Para instalar wine, abriremos una consola (los que me conocen saben que me encanta trabajar desde la consola de Linux) y escribiremos:

sudo apt-get install wine winetricks

Con este comando, nuestro Ubuntu instalará los componentes de Wine junto con las librerías necesarias. Una vez terminado debemos instalar Netflix Desktop. Para ello deberemos agregar el repositorio escribiendo en la consola:

sudo apt-add-repository ppa:ehoover/compholio
sudo apt-get update && sudo apt-get install netflix-desktop

Ahora buscaremos la aplicación desde Unity




Al abrir la aplicación por primera vez, Netflix Desktop nos pedirá autorización para instalar varios paquetes necesarios para su correcto funcionamiento. Aceptaremos la opción y una vez terminado el proceso reiniciamos la aplicación.


Simplemente escribiremos los datos de nuestra cuenta en Netflix y ¡Listo! Es el momento de ir a comprar unas palomitas, una soda... ¡Y disfrutar del cine!


Happy Hacking!!!

miércoles, 8 de mayo de 2013

Añadir equipo GNU/Linux a Active Directory


En esta pequeña receta les enseñaré a añadir a un usuario con una máquina GNU/Linux a iniciar sesión en un Active Directory o PDC, para que de esa forma una vez que iniciamos sesión en nuestro sistema, automáticamente el sistema inciará sesión también en el contralador de dominio Active Directory.
Para ello utlizaremos el conjunto de aplicaciones Samba, autenticación KerberosWinbind y algún que otro paquete más.
Este post aplica para Ubuntu y sus derivados.
Partiremos de un sistema recien instalado el cual necesitamos agregar a un dominio ya creado  con una cuenta de usuario ya creada. Esta cuenta creada en el PDC debe ser la misma que la que utilizaremos para entrar en nuestro Ubuntu.
Una vez instalado el sistema con su sistema gráfico y todo, pasaremos modificar la configuración para que cada vez que entremos a nuestro sistema nuevo, automaticamente inicie la sesión en el PDC a la vez que entramos en nuestro sistema. Para ello utilizaremos nuestro gestos de inicio de sesión, en mi caso GDM.
Para ello, como he dicho antes supondremos que ya tenemos la cuenta del cliente creada, en el ejemplo tomaremos como dominio de prueba el nombre DOMINIO.LOCAL, con la ip 192.168.1.1, el nombre del controlador de dominio sera en nuestro ejemplo pdc.edages.local y como usuario juanmi
Comencemos instalando unos cuantos paquetes:
# apt-get install samba smbclient winbind krb5-user krb5-config ntpdate
Una vez realizado comenzaremos a modificar la configuración de samba, para ello haremos una copia del archivo original y crearemos uno nuevo:
# mv /etc/samba/smb.conf /etc/samba/smb.conf.ORIGINAL
Editaremos el nuevo archivo:
# sudo nano /etc/samba/smb.conf
Y pondremos el siguiente contenido, cambiándolo según sea cada caso, respeten las MAYUSCULAS.
[global]
workgroup = DOMINIO
realm = DOMINIO.LOCAL
security = ADS
password server = 192.168.1.1
log level = 1
syslog = 0
printcap name = cups
domain master = No
wins server = 192.168.1.1
idmap uid = 10000-29999
idmap gid = 10000-29999
winbind separator =
winbind use default domain = Yes
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
netbios name = juanmi
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
domain master = no
server string = Juanmi
encrypt passwords = true
dos charset = 850
unix charset = iso-8859-15
[homes]
comment = Home Directories
valid users = %S
browseable = No
read only = No
inherit acls = Yes
[profiles]
comment = Network Profiles Service
path = %H
read only = No
store dos attributes = Yes
create mask = 0600
directory mask = 0700
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = Yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
[Comparto]
comment = Comparto en Juanmi
path = /home/juanmi/Desktop/Comparto
read only = No
inherit acls = Yes
public = no
browseable = yes
create mask= 664
force create mode = 664
directory mask = 775
force directory mode = 775
[Musica]
comment = Musica
path = /home/juanmi/Desktop/Musica
read only = No
inherit acls = Yes
Crearemos el directorio para alojar las home de cada usuario del dominio:
# mkdir /home/DOMINIO
Continuaremos ahora configurando más archivos. Ahora sigue /etc/krb5.conf
# sudo nano /etc/krb5.conf
y pongamos el siguiente contenido, cambiándolo de nuevo con las opciones necesarias:
[libdefaults]
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
clockskew = 300
# The following krb5.conf variables are only for MIT Kerberos.
# The following encryption type specification will be used by MIT Kerberos
# if uncommented.  In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#       default_tgs_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
#       default_tkt_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
#       permitted_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
# The following libdefaults parameters are only for Heimdal Kerberos.
[realms]
DOMINIO.LOCAL = {
kdc = 192.168.1.1
default_domain = dominio.local
admin_server = 192.168.1.1
        }
dominio.local = {
kdc = 
192.168.1.1
                default_domain = dominio.local
admin_server = 1
92.168.1.1
        }
dominio = {
kdc = 
192.168.1.1
                default_domain = dominio
admin_server = 
192.168.1.1
        }
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
[domain_realm]
.dominio = dominio
.dominio.local = DOMINIO.LOCAL
[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0
try_first_pass = true
}


Editaremos ahora todos los archivos para que cuando iniciemos utilicen los datos introducidos para que inicie la sesión contra el Active Directory:
# cd /etc/pam.d/
# nano common-account
Y lo dejaremos así:
 #
# /etc/pam.d/common-account – authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system.  The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
#
# here are the per-package modules (the “Primary” block)
account sufficient      pam_winbind.so
account [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so
# here’s the fallback if no module succeeds
account requisite                       pam_deny.so
# prime the stack with a positive return value if there isn’t one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
account required                        pam_permit.so
# and here are more per-package modules (the “Additional” block)
# end of pam-auth-update config
Ahora
# nano common-auth
Y lo dejaremos así:
#
# /etc/pam.d/common-auth – authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
# here are the per-package modules (the “Primary” block)
auth    sufficient      pam_winbind.so
auth    [success=1 default=ignore]      pam_unix.so nullok_secure try_first_pass
# here’s the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn’t one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules (the “Additional” block)
# end of pam-auth-update config
Ahora
# nano common-session
Y lo dejaremos así:
#
# /etc/pam.d/common-session – session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
# here are the per-package modules (the “Primary” block)
session [default=1]                     pam_permit.so
# here’s the fallback if no module succeeds
session requisite                       pam_deny.so
# prime the stack with a positive return value if there isn’t one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required                        pam_permit.so
# and here are more per-package modules (the “Additional” block)
session sufficient      pam_winbind.so
session required        pam_unix.so
session optional                        pam_ck_connector.so nox11
# end of pam-auth-update config
Ahora
# nano common-password
Y lo dejaremos así:
#
# /etc/pam.d/common-password – password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
# used to change user passwords.  The default is pam_unix.
# Explanation of pam_unix options:
#
# The “md5″ option enables MD5 passwords.  Without this option, the
# default is Unix crypt.
#
# The “obscure” option replaces the old `OBSCURE_CHECKS_ENAB’ option in
# login.defs.
#
# See the pam_unix manpage for other options.
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
# here are the per-package modules (the “Primary” block)
password        sufficient      pam_winbind.so
password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass md5
# here’s the fallback if no module succeeds
password        requisite                       pam_deny.so
# prime the stack with a positive return value if there isn’t one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password        required                        pam_permit.so
# and here are more per-package modules (the “Additional” block)
password        optional        pam_gnome_keyring.so
# end of pam-auth-update config
Y por último  editaremos la configuración de nuestro gestor de sesiones, en mi caso GDM, como dije más arriba:
# nano gdm
Y lo dejaremos así:
 #%PAM-1.0
auth required /lib/security/pam_securetty.so
auth sufficient /lib/security/pam_winbind.so
auth sufficient /lib/security/pam_unix.so use_first_pass envfile=/etc/default/locale
auth required /lib/security/pam_nologin.so
account sufficient /lib/security/pam_winbind.so
session required /lib/security/pam_mkhomedir.so skel=/etc/skel
umask=0022
auth requisite pam_nologin.so
auth    required        pam_env.so readenv=1
auth    required   ­;     pam_env.so readenv=1 envfile=/etc/default/locale
;@include common-auth
;@include common-account
session required pam_limits.so
;@include common-session
session optional /lib/security/pam_console.so
;@include common-password
Ahora debemos editar el archivo  /etc/nsswitch.conf para decirle que utilice tambien winbind:
# nano /etc/nsswitch.conf
y lo dejaremos como aparece aquí:
#/etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference’ and `info’ packages installed, try:
# `info libc “Name Service Switch”‘ for information about this file.
passwd:         files winbind
group:          files winbind
shadow:         files winbind
hosts:          files dns winbind
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis
Perfecto. Ya tenemos todo configurado. Ahora ajustaremos la hora del sistema para que no nos falle con el servidor, el cual asumimos que lo tenemos en hora:
# ntpdate hora.rediris.es
Crearemos los tickets Kerberos con el siguiente comando, necesitaremos el password del administrador del dominio:
# kinit administrador@DOMINIO.LOCAL
Solo si da problemas al recibir los tickets Kerberos volveremos a intentarlo con el nombre del dominio en minusculas:
# kinit administrador@dominio.local
Reiniciemos Samba y Windbind y comprobemos la configuración:
# /etc/init.d/samba restart
# /etc/init.d/winbind restart
# testparm
Uniremos la máquina al dominio con el siguiente comando:
# net ads join -S 192.168.1.1  -U administrador
Si les diese algún problema, prueben con el nombre del servidor Active Directory, en nuestro ejemplo PDC:
# net ads join -S pdc.dominio.local  -U administrador
Ahora solo nos queda comprobar que hemos hecho todo bien:
# net rpc testjoin
Si todo es correcto, nos mostrará un mensaje como este:
Join to ‘DOMINIO’ is OK
Ahora lo siguiente:
# net ads info­
Nos mostrará:
LDAP server: 192.168.1.1
LDAP server name: pdc.dominio.local
Realm: DOMINIO.LOCAL
Bind Path: dc=DOMINIO,dc=LOCAL
LDAP port: 389
Server time: jue, 2 jul 2009 14:36:04 CEST
KDC server: 192.168.1.1
Server time offset: 0
Ahora:
# net rpc info -U juanmi
Enter juanmi’s password:
Domain Name: DOMINIO
Domain SID: S-1-5-21-224523388-1220989662-682023330
Sequence number: 7529
Num users: 169
Num domain groups: 0
Num local groups: 12
# wbinfo -u
Nos dará los usuarios del dominio
# wbinfo -g
Nos dará los grupos del dominio
# getent passwd
Nos dará más información de los usuarios del dominio
# getent group
Nos dará más información de los grupos del dominio
Ahora solo nos queda reiniciar el equipo y comprobar que una vez metido el usuario y la contraseña en GDM podemos volver a lanzar los comandos de comprobación de arriba:
 # net rpc testjoin
# net ads info
# net rpc info -U juanmi
# wbinfo -u
# wbinfo -g
# getent passwd
# getent group
Ya podrán entrar en nuestro equipo los usuarios del dominio sin que se les pida password.

Happy Hacking!!!

martes, 23 de abril de 2013

Picasa en Ubuntu

Picasa es un programa de manipulación de imágenes propiedad de Google desde el 2004. Anteriormente pertenecía a la empresa Lifescape.

Picasa permite organizar, editar, e incluso publicar las fotos, pues posee un sitio web. Al ser parte de Google, con el hecho de tener una cuenta de correo, podemos usar el sitio gratuitamente.

Google liberó el programa como Software Libre.

Sin embargo, una de las cosas que quedan en el aire es, que no existe una instalación para GNU/Linux como tal. Sin embargo, esto no significa que no lo podamos instalar.

Instalando Picassa en Ubuntu 12.04


32 bits


Lo primero que haremos será abrir una terminal. En ella escribiremos:

# sudo apt-get install wine winetricks

Una vez que termine el proceso, descargaremos picasa:

# cd ~/ && wget http://dl.google.com/picasa/picasa39-setup.exe

Ahora lo instalaremos escribiendo:

# wine ~/picasa39-setup.exe

Por último configuraremos el horrible IE6 para las librerías que necesita picassa.

# WINEARCH=win32 WINEPREFIX=~/.wine sh winetricks -q ie6

¡Listo! Ya tenemos nuestro picassa ejecutándose en nuestra distro de 32 bits.

64 bits



Abriremos una terminal y escribiremos:

# sudo apt-get install wine winetricks

Una vez que termine el proceso, descargaremos picasa:

# cd ~/ && wget http://dl.google.com/picasa/picasa39-setup.exe

Configuraremos el IE6 para 64 bits

WINEARCH=win32 winecfg

Ahora lo instalaremos escribiendo:

# wine ~/picasa39-setup.exe

Por último configuraremos el horrible IE6 para las librerías que necesita picassa.

# WINEARCH=win32 winetricks -q ie6

Happy Hacking!!!

lunes, 15 de abril de 2013

Instalar un servidor LAMP en pocos pasos con Ubuntu

Normalmente cuando queremos instalar un servidor LAMP (Linux, Apache, MySQL, Php) ya sea para que hagamos pruebas o simplemente para instalar un servidor web. Cuando esto pasa generalmente tenemos que realizar varios pasos para llegar a la instalación y configuración completa del servidor.

Usualmente primero deberíamos instalar nuestro sistema GNU/Linux servidor. Para efectos de este post y como todos saben, personalmente utilizo Ubuntu, por tal motivo supondremos que ya tenemos instalado nuestro sistema. Además, recordemos como ya lo indiqué en un post anterior, en un servidor la instalación es mínima y por lo general, cuando decidimos instalar un servidor, en los pasos previos se establece que programas queremos incluir. Para este post supondremos que instalamos Ubuntu 12.04 LTS Desktop Edition, la cual es usada para equipos de uso normal.

Una vez instalado el sistema, si queremos instalar el resto de los componentes tendremos que hacerlo mediante la consola e instalar los paquetes en su orden correspondiente:


  • Apache (sudo apt-get install apache2)
  • MySQL (sudo apt-get install mysql-server mysql-client)
  • Php (sudo apt-get install php5 libapache2-mod-php5 php5-mysql)
  • Apache Tomcat (sudo apt-get install tomcat7)

Aunque es un proceso relativamente rápido, mediante el uso de dos comandos podemos realizar la instalación de una manera más rápida y sobre todo transparente.

En la consola escribiremos:

# sudo apt-get install tasksel

y luego ejecutaremos el comando:

# sudo tasksel

Con esto aparecerá un nuevo programa en pantalla que nos permitirá seleccionar los programas de servidor que queremos instalar.


Seleccionaremos la opción LAMP server y más abajo la opción Tomcat server.

Movilizaremos el cursor con la tecla TAB y luego enter en OK.

A continuación nos pedirá que ingresemos la contraseña que tendrá el usuario root de mysql.


¡Y listo!

Ahora crearemos un pequeño archivo que nos permitirá visualizar si nuestro PHP funciona correctamente. En la consola escribiremos:

# sudo nano /var/www/info.php

Y escribiremos lo siguiente en el archivo:

<¿ php
phpinfo();
?>



Guardaremos el archivo (ctrl+x) y listo.

Ahora, para verificar que nuestro servidor esté funcionando, abriremos nuestro navegador preferido y escribiremos http://localhost

Si todo está correcto veremos una pantalla como esta:


Para verificar que nuestro servidor Tomcat funcione escribiremos en el navegador:

http://localhost:8080

Happy Hacking!!!

viernes, 12 de abril de 2013

GNU/Linux para equipos más viejitos

¿Tienes un equipo viejito? Y por viejito me refiero a una 386 o 486 e incluso hasta un pentium II. Aún puedes darle vida como un servidorcito, o mini consola de juegos, y sin necesidad de recurrir al sistema de la ventanita.

¿Y cómo podemos hacer eso? Pues ya lo sabemos. Utilizando GNU/Linux.

Hay gente que me ha preguntado si es posible instalar un Ubuntu sobre una 386. La respuesta es categórica: NO. ¿Por qué? Pues porque Ubuntu, aún en sus primeras versiones requiere de ciertas características que un 386 no tiene, empezando por el juego completo de instrucciones de procesador. Pero aún así, podemos hacer uso de otras distribuciones para ello.

¿Y cuál sería la ventaja de hacer esto? Pues simplemente experimentar, pues es bien sabido que los equipos modernos son 1000 veces más poderosos que esos, pero aún así, podemos usar una 386 como un servidor de archivos, o web. Para procesar páginas, no aplicaciones, no se requiere mucho poder.

En este post hablaremos de algunas distribuciones sumamente ligeras y funcionales para esos equipos viejitos.

Puppy Linux




Puppy Linux es una distribución compacta. Consiste en un autoejecutable con un gestor de archivos y ventanas para llevar a cabo la mayoría de las tareas de una computadora. Esta distribución es más recomendada para equipos 486.

Puede descargarse desde el sitio oficial del proyecto.

SliTaz 




Se trata de una distro extremadamente ligera, que ocupa en su instalación menos de 35 MB. Utiliza el escritorio LXDE. Pueden descargarla desde este enlace.

Damn Small Linux




DSL es una distribución de GNU/Linux que en tan solo 50MB. DSL nació como un experimento: ¿cuántas aplicaciones de escritorio cabrían en un CD autoarrancable de 50MB? En un principio era sólo una herramienta/divertimento personal, pero con el tiempo creció hasta convertirse en un proyecto comunitario con cientos de horas de desarrollo en detalles como un sistema local/remoto de instalación de aplicaciones completamente automatizado o un sistema de copia y restauración de seguridad muy versátil que puede emplearse con cualquier medio escribible, sea disco duro, disquete o un dispositivo USB. Puede descargarse desde el sitio oficial.



Happy Hacking!!!

miércoles, 10 de abril de 2013

Recopilación de comandos Debian GNU/Linux


La siguiente es una recopilación de comandos para Debian y sus derivados. Ha sido extraida del sitio www.esdebian.org, por lo que no les extrañe que pudieran haber términos muy españoles.


¡¡Ozú, majo!!


TRABAJO CON FICHEROS




Varios


mc
Explorador de archivos que incluye su propio editor,mcedit.
mcedit
Editor de texto incluído en mc.
ls
Lista los ficheros de un directorio concreto.
  1.    ls -l
      
    Lista también las propiedades y atributos.
  2.    ls -la
      
    Lista ficheros incluidos los ocultos de sistema.
  3.    ls -la | more
      
    Lista los ficheros de un directorio de forma paginada.
  4. ls -lh
    Lista ficheros especificando la unidad de tamaño (Kilobyte, Megabyte, Gigabyte).
  5. ls -l | grep ^d
    Lista sólo los directorios
    1. ls -d */
      Este último comando también lista solamente directorios: sin concatenar comandos, de una forma más sencilla y respetando el color definido que se tiene en Bash para los directorios.
cat -n fichero
Muestra el contenido de un fichero.(-n lo numera)
pr -t fichero
Muestra el contenido de un fichero de manera formateada.Ver imprimiendo.
cat fichero | less
cat fichero | lmore
more fichero
less fichero
Muestra el contenido de un fichero de forma paginada.
zcat fichero
zmore fichero
zless fichero
Muestra el contenido de un fichero comprimido (.gz)
echo cadena
echo nos muestra en pantalla,el texto que le siga.
grep \'cadena\' archivo
Muestra las líneas del archivo que contienen la cadena.
stat fichero
Muestra el estado de un fichero.
  1.   stat -f fichero
     
    Muestra el estado del sistema de ficheros.
file fichero
Muestra de qué tipo es un fichero.
tail archivo
Muestra las últimas líneas de un archivo, 10 por defecto.
  1.   tail -n 12 archivo
     
    Muestra las 12 últimas líneas del archivo.
  2.   tail -f archivo
     
    Muestra las últimas líneas del archivo, actualizándolo a medida que se van añadiendo. Útil para controlar logs.
head archivo
Muestra las primeras líneas de un archivo, 10 por defecto. Admite opción -n igual que el comando tail.
find /usr -name lilo -print
Busca todos los ficheros con nombre lilo en /usr.
find /home/paco -name *.jpg -print
     ----------  ----------  -----  
          |           |         |
          V           V          `---->muestra la ruta completa del fichero encontrado
ruta  patrón de búsqueda
Busca todas las imágenes .jpg en /home/paco.
find -maxdepth 1 -regex ".*/[^./]*" -type f
Lista ficheros sin punto en el directoria actual.
whereis ejecutable
Busca ejecutables(ejemplo: whereis find)
type comando
Muestra la ubicación del comando indicado.
Si es un comando interno del shell mostrará algo así como:comando is a shell builtin.
pwd
Visualiza el directorio actual.
history
Muestra el listado de comandos usados por el usuario (~/.bash_history)
fc -l
Muestra el listado de los últimos comandos ejecutados.
eject cdrom0
Abre la bandeja del cdrom.
  1.   eject -t cdrom0
     
    Cierra la bandeja del cdrom.
cd nom_directorio
Cambia de directorio
  1.   cd ..
     
    Vuelves al anterior.
  2.   cd .mozilla
     
    Entras al de mozilla.(por la puerta grande)
  3.   cd ./.mozilla
     
    Entras al de mozilla (indicando la ruta relativa)
  4.   cd /home/paco/.mozilla
     
    Entras al de mozilla.(indicando la ruta completa)
cp -dpR fichero1 ruta_fichero2
Realiza una copia del fichero1 a ruta_fichero2,cambiándole el nombre.
cp -dpR fichero1 /directorio
Copia fichero1 a directorio,conservando fichero1 el nombre.
  1.   -R
     
    Copia un directorio recursivamente,salvo los ficheros especiales.
  2.   -p
     
    Copia preservando permisos,propietario,grupos y fechas.
  3.   -d
     
    Conserva los enlaces simbólicos como tales y preserva las relaciones de los duros.
  4.   -a
     
    Lo mismo que -dpR .
mv ruta_fichero1 ruta_fichero2
Mueve y/o renombra ficheros o directorios.
mkdir nom_directorio
Crea un directorio.
rmdir nom_directorio
Elimina un directorio(tiene que estar vacío).
rm archivo
Elimina archivos .
  1.   rm -r directorio
     
    Borra los ficheros de un directorio recursivamente.Quietorrrrrrr...
  2.   rm *.jpg
     
    Borra todos los ficheros .jpg del directorio actual.
ln ruta_fichero ruta_enlace
Crea un enlace duro (con el mismo inodo,es decir mismo fichero con distintos nombres)
ln -s ruta_directorio ruta_enlace
Crea un enlace simbólico (con diferente inodo,es decir se crea un nuevo fichero que apunta al \"apuntado\",permitiendo enlazar con directorios y con ficheros de otro sistema de archivos)
diff [opciones] fichero1 fichero2
Compara ficheros.
  1.   diff -w fichero1 fichero2
     
    Descarta espacio en blanco cuando compara líneas.
  2.   diff -q fichero1 fichero2
     
    Informa sólo de si los ficheros difieren,no de los detalles de las diferencias.
  3.   diff -y fichero1 fichero2
     
    Muestra la salida a dos columnas.
join [opciones] fichero1 fichero2
Muestra las líneas coincidentes entre fichero1 y fichero2.
wc fichero
Muestra el nº de palabras,líneas y caracteres de un archivo.
wc -c fichero
Muestra el tamaño en bytes de un fichero.
touch [-am][-t] fichero
Cambia las fechas de acceso (-a) y/o modificación (-m) de un archivo.
  1.   touch -am fichero
     
    A la fecha actual.Si no existiese el fichero,se crearía.
  2.   touch -am -t 0604031433.30 fich
                   AAMMDDhhmm.ss ------- Si no se especifican los segundos,tomaría 0 como valor.
     
    A la fecha especificada.Si no existiese el fichero,se crearía.
  3.   touch fichero
     
    Usado sin opciones crearía un fichero con la fecha actual.
split -b 1445640 mozart.ogg mozart
    ----------            -------
            |                   V               
    |   nombre elegido para las partes,por defecto x
            V
  tamaño en bytes de cada parte
Partir un archivo
cat mozart.* > mozart.ogg
Unir las distintas partes de un fichero cortado con split.
chown [-R] usuario fichero
Cambia el propietario de un fichero o directorio.
chgrp [-R] grupo fichero
Cambia el grupo de un fichero o directorio.
chmod [-R][ugo][+/- rwxs] fichero
Cambia los permisos de acceso de un fichero
+: da permisos -: quita permisos
u: propietario R: recursivo
g: grupo r: lectura ejemplo: chmod +x fichero, es lo mismo que: chmod a+x fichero
o: otros w: escritura explicación: a es la opción por defecto.
a: todos x: ejecución
s: los atributos suid y sgid,otorgan a un \"fichero\" los permisos de su dueño o grupo respectivamente,cada vez que se ejecute,sea quien sea el que lo ejecute.
Ejemplo: chmod +s /usr/bin/cdrecord
Cómo afectan los permisos a los directorios:
r permite ver su contenido(no el de sus ficheros)
w permite añadir o eliminar ficheros (no modificarlos)
x permite acceder al directorio.
Método absoluto de determinar los permisos: chmod 760 fichero
explicación:          dueño     grupo      otros
------------          -----     -----      -----
asci                  r w x     r w -      - - -
binario               1 1 1     1 1 0      0 0 0
octal                   7         6          0
paso de asci          r w x     r w -      - - -    activar=1
a binario             1 1 1     1 1 0      0 0 0   desactivar=0
paso de               1 1 1     1 1 0      0 0 0   r activado=4
binario               4+2+1     4+2+0      0+0+0   w activado=2
a octal                 7         6          0     x activado=1

umask nnn
Establece qué permisos serán deshabilitados para los archivos nuevos.
umask
Muestra la configuración actual de umask(normalmente 022)
umask 000
Deshabilita ninguno,es decir los activa todos.
Atención,que la cosa manda huevos:
umask 0 2 2 = chmod 7 5 5
umask 0 0 0 = chmod 7 7 7 |
umask --- -w- -w- = chmod rwx r-x r-x
umask --- --- --- = chmod rwx r-x r-x
Una manera rápida de averiguar los permisos partiendo de umask es aplicando la siguiente resta:
777-022=755 para el primer caso y 777-000=777 para el segundo.
Cuando umask es 022,los permisos normales de un directorio son 755 (rwx r-x r-x) producto de la
resta 777-022.Sin embargo los de un fichero son 644 (rw- r-- r--).Ésto es así porque se considera que lo normal para un fichero es que no sea ejecutable de manera que la resta para averiguar los permisos de un fichero sería 666-022=644
Si escribo en una consola umask 000 y a continuación \"mkdir nuevodirectorio\",éste tendrá todos los pemisos:
rwx rwx rwx (777) pero ¿y los ficheros que creemos dentro de dicho directorio? pues éstos
tendrán los permisos :
rw- rw- rw- (666) resultado de la resta 666-000=666
¿Les queda claro?... yo tamp
Para que la máscara de permisos permanezca de una sesión a otra tienes que ponerla en el
.bash_profile de tu home.


Imprimiendo


lpr fichero
Añade un documento a la cola de impresión.
lpr -P "nombre_impresora" fichero
Se especifica la impresora a la que queremos mandar el fichero a imprimir
lpr -#3 fichero
Realiza 3 copias del fichero.
lpr -P "hp" -o page-set=odd fichero
Imprime sólo las páginas impares del fichero que hemos mandado a la impresora "hp"
lpr -o page-ranges=7-49 fichero
Imprime el intervalo de páginas 7-49 del documento
lpr fichero
Añade un documento a la cola de impresión.
lpq
Muestra los documentos en cola.
lprm
Cancela la impresión del documento activo.
lprm 3
Cancela la impresión del trabajo nº 3.
pr +2 l70 -w 80 -h \"Comandos\" fichero
Preprocesador de impresión para formatear un archivo de texto.
-l70
Establece la longitud de la página de 70 lineas (66 por defecto).
-w 80
Establece el ancho de linea en 80 caracteres()72 por defecto).
-h \"Comandos\"
Establece \"Comandos\" como cabecera de cada página.
+2
Imprime a partir de la página 2.
-t
No imprimiría cabeceras ni pies de página.
pr l70 -d comandos.txt | lpr
Una vez formateado el documento lo manda a la cola.


Nano


nano fichero
Leer,crear,editar un fichero de texto.
M = Esc/Alt | | Ctrl + g ----------- Invocar el menú de ayuda.
Ctrl + x ----------- Salir de nano.
Ctrl + o ----------- Escribir el fichero actual a disco.
Ctrl + r ----------- Insertar otro fichero en el actual.
Ctrl + w ----------- Buscar un texto en el editor.
Ctrl + y ----------- Moverse a la página anterior.
Ctrl + v ----------- Moverse a la página siguiente.
Ctrl + k ----------- Cortar la línea actual y guardarla en el cutbuffer.
Ctrl + u ----------- Pegar el cutbuffer en la línea actual.
Ctrl + l ----------- Redibujar la pantalla actual.
Ctrl + j ----------- Justificar el párrafo actual.
Ctrl + m ----------- Insertar un retorno de carro en la posición del cursor.
Ctrl + _ ----------- Ir a un número de línea en concreto.
M + g -------------- Ir a un número de línea en concreto.
M + i -------------- Auto indentar habilitar/deshabilitar.
M + x -------------- Modo ayuda habilitar/deshabilitar.
M + p -------------- Modo Pico habilitar/deshabilitar.
M + m -------------- Soporte para ratón habilitar/deshabilitar.
M + r -------------- Reemplazar texto en el editor.
M + e -------------- Expresiones regulares habilitar/deshabilitar.
M + b -------------- Respaldar ficheros habilitar/deshabilitar.
M + s -------------- Desplazamiento suave habilitar/deshabilitar.
M + h -------------- Tecla \'smart home\' habilitar/deshabilitar.
M + y -------------- Coloreado de sintaxis habilitar/deshabilitar.
M + p -------------- Mostrar blancos habilitar/deshabilitar.


Formatos


[w3m,lynx,links,links2,elinks] fichero.html
Visualizan ficheros html.
tidy fichero.html
Analiza el código de un documento html.
tidy -m fichero.html
Corrige,modificándolo,el código del fichero html.
tidy -m -asxml fichero.html
Convierte un html a xml.
tidy -m -asxhtml fichero.html
Convierte un html a xhtml.
tidy -m -ashtml fichero.xhtml
Convierte un xhtml a html.
pstotext fichero.ps | less
Visualiza ficheros ps.
pstotext fichero.pdf | less
Visualiza ficheros pdf.
pdftops fichero.pdf fichero.ps
Convierte un fichero pdf a ps.
pdftotext -layout fich.pdf fich.txt
Convierte un fichero pdf a texto.
pdftotext -layout -htmlmeta fich.pdf fich.html
Convierte un fichero pdf a html.
htmldoc fich1.html fich2.html -f unidos.html
Une varios ficheros html en uno solo.
htmldoc --webpage fich1.html fich2.html -f suma.pdf
Convierte o une varios html en un pdf.
htmldoc --webpage fich1.html fich2.html -f suma.ps
Convierte o une varios html en un ps.
links2 fichero.html -> guardar con formato
Convierte un fichero html a texto.
antiword fichero.doc | less
Visualiza un fichero doc.
antiword -p folio fichero.doc > fichero.ps
Convierte un fichero doc a ps con tamaño folio.
antiword -t -w 30 fichero.doc > fichero.txt
Convierte un fichero doc a texto.
-p también puede ser a3,a4,a5,b4,etc
-w anchura de la linea en caracteres
Notas:
pdftotext y pdftops vienen en el paquete xpdf-utils.
tidy se guía por el estándar de la W3C.
la opción -layout hace que el documento de texto conserve lo mejor posible la disposición fisica del documento pdf:columnas,saltos de linea,etc
links2 convierte un html a texto,conservando totalmente la disposición física del documento html.


Empaquetado y compresión


7z a fichero.7z fichero
Comprimir.
7z e fichero_comprimido
Descomprimir.
7z x fichero_comprimido -o ruta_de_destino
Extraer donde indicamos.
7z l fichero_comprimido
Ver contenido.
7z t fichero_comprimido
Chequea el contenido.
Notas sobre 7zip
Comprime en formato 7z, zip, gzip, bzip2 y tar.
Si es un directorio lo hace recursivamente sin emplear la opción -r
Con -t{tipo de fichero} tras las opción \"a\" elegimos el formato de compresión:
7z a -tgzip fichero.gz fichero
Con -p protegemos con una contraseña el fichero:
7z a -tgzip -p fichero.gz fichero
Para comprimir más de un archivo gz o bz2 antes hay que empaquetarlos en formato tar:
1º)
7z a -ttar prueba.tar *.txt
2º)
7z a -tgzip prueba.tgz prueba.tar
El formato 7z no guarda el dueño o grupo de un fichero por lo que | | no es recomendable para copias de seguridad.
Es capaz de descomprimir zip,rar,gz,bz2,tar,cab,arj,cpio,deb,rpm aunque para rar necesita del paquete 7zip-rar
zip -r fichero.zip fichero ;ejemplo: zip -r sinatra.zip ./sinatra/
Comprimir zip.
unzip archivo.zip
Descomprimir zip.
unzip -v archivo.zip
Ver contenido zip.
unrar e -r archivo.rar (e extrae en el directorio actual)
Descomprimir rar.
unrar x -r archivo.rar directorio de destino (x extrae donde se indique)
Descomprimir rar.
unrar v archivo.rar
Ver contenido rar.
gzip -r fichero ; ejemplo: gzip -r ./sinatra
Comprimir gz.
gzip -d fichero.gz
Descomprimir gz.
gzip -c fichero.gz
Ver contenido gz.
bzip2 fichero ; ejemplo: bzip2 ./sinatra/*.ogg
Comprimir bz2.
bzip2 -d fichero.bz2
Descomprimir bz2.
bzip2 -c fichero.bz2
NOTA:
r equivale en todos los casos a recursivo
Mientras que zip comprime y empaqueta,gzip ó bzip2 sólo comprimen ficheros,no directorios,para eso existe tar.
Ficheros tar
tar -vcf archivo.tar /fichero1 /fichero2 ...(fichero puede ser directorio)
Empaquetar.
tar -vxf archivo.tar
Desempaquetar.
tar -vtf archivo.tar
Ver contenido.
Para comprimir varios ficheros y empaquetarlos en un solo archivo hay que combinar el tar y el gzip o el bzip2 de la siguiente manera:
Ficheros tar.gz (tgz)
tar -zvcf archivo.tgz directorio
Empaquetar y comprimir.
tar -zvxf archivo.tgz
Desempaquetar y descomprimir.
tar -zvtf archivo.tgz
Ver contenido.
Ficheros tar.bz2 (tbz2)
tar -jvcf archivo.tbz2 directorio
Empaquetar y comprimir.
tar -jvxf archivo.tbz2
Desempaquetar y descomprimir.
tar -jvtf archivo.tbz2
Ver contenido.
Opciones de tar:
-c : crea un nuevo archivo.
-f : cuando se usa con la opción -c,usa el nombre del fichero especificado para la creación del fichero tar
cuando se usa con la opción -x,retira del archivo el fichero especificado.
-t : muestra la lista de los ficheros que se encuentran en el fichero tar
-v : muestra el proceso de archivo de los ficheros.
-x : extrae los ficheros de un archivo.
-z : comprime el fichero tar con gzip.
-j : comprime el fichero tar con bzip2.


Comodines


(~) Sustituye el directorio home de manera que:
~/comandos.txt equivale a /home/paco/comandos.txt (si estamos en nuestro propio directorio)
~pepe/comandos.txt equivale a /home/pepe/comandos.txt (pepe es otro usuario)
(?) Sustituye un solo caracter.Ejemplos:
ls p?pe
mostraría todos los ficheros cuyos 1º 3º y 4º caracteres fuesen p,p y e
ls ?epe
mostraría todos los ficheros de 4 caracteres y acabados en epe
(*) Sustituye cualquier sucesión de caracteres.Ejemplos:
ls .ba*
muestra todos los directorios o ficheros que comiencen con .ba
ls .*
muestra todos los archivos ocultos.
rm -r *
otra manera de desinstalar el sistema operativo.
rm *.jpg
borra todas las imágenes jpg
oggdec *.ogg
pasa de ogg a wav todos los ogg del directorio en el que estamos.
(;) Puesto entre dos comandos hace que tras el primero se ejecute el segundo.Ejemplos:
nano nuevo.txt ; cat nuevo.txt
nos abrirá el editor nano para que escribamos lo que queramos en un nuevo archivo que se llamará nuevo.txt y tras guardar y salir del editor,cat nos mostrará el contenido de lo que acabamos de crear.
sleep 5m ; xmms canción.mp3
tras 5 minutos se iniciará el xmms (ver más abajo)


Alias


Es el mote que se le pone a un comando,de manera que la próxima vez que queramos ejecutarlo
basta con llamarlo por su mote.Escribiendo alias sin parámetos nos aparecen la lista de alias
que tenemos.
Ejemplos:
  • Si ejecuto:
    alias rm=\'mv --target-directory=/home/paco/.papelera_rm\'
    le he puesto el mote rm a mv --target-directory=/home/paco/.papelera_rm
    Así la próxima vez que borre algo con rm, irá a parar al directorio .papelera_rm
    Pero si lo escribo así: \\rm loquesea el alias será ignorado.
  • Otro:
    alias cdrip=\'cdda2wav -B -D /dev/hdd -s -x\'
    cada vez que escriba en una consola cdrip me ripeará el CD que tenga en /dev/hdd
    Para que los alias permanezcan de una sesión a otra hay que ponerlos en el archivo /home/.bashrc
    nota1:el mote y el comando al que sustituye bien pegaditos al signo igual.
    nota2:el comando entre comillas simples.


Conceptos de entrada -salida (I/O)(E/S)


stdin
entrada estandar para datos,el teclado (0)
stdout
salida estandar para los programas,la pantalla (1)
stderr
salida estandar para los mensajes de error,la pantalla (2)
Redirecciones,un redireccionador redirige la salida de un comando a un fichero
(<)
comando < fichero
(>)
Su sintaxix suele ser:
comando > fichero
(>>)
comando >> fichero
Ejemplos:
dpkg --get-selections > programas_instalados.txt
En vez de mostrar la salida por pantalla, nos la vuelca al fichero programas_instalados.txt
Si ese fichero ya existía ha sido sobreescrito su contenido,pero si usamos >> no borrará nada
y añadira su salida al final del fichero.Otro ejemplo con echo:
echo \"fin de la lista de programas instalados\" >> programas_instalados.txt
en vez de mostrar en pantalla el texto,lo añade al final del fichero programas_instalados.txt
Para despistar los de Unix se han inventado el mismo caracter pero al revés:
cat < programas_instalados.txt
en donde programas_instalados hace,no de salida sino de entrada para cat el cual lo muestra
en pantalla ,ya que la salida natural de cat es la estandar,stdout o pantalla
Si queremos que la salida de error no aparezca en pantalla sino que vaya a un archivo de texto:
comando 2> fichero.txt ejemplo: xmms 2> error_xmms.txt
Tuberías,Una tubería hace que la salida de un programa sea la entrada de otro.
(|) Su sintaxis suele ser:
comando | comando
Ejemplos:
cat programas_instalados.txt | grep mozilla
Aquí le hemos cambiado la salida natural a cat y se la hemos mandado a grep para que busque la
palabra mozilla dentro del fichero programas_instalados.txt
pr l70 -d comandos.txt | lpr Una vez formateado el documento (pr) lo manda a la cola (lpr)


Renombrando


mp3rename opciones *.mp3
Renombra ficheros mp3 basándose en las etiquetas incluidas en los mp3 (id3tags)
Opciones:
-i  Sólo muestra los id3 de los ficheros.
-p  pone un cero al track cuando es menor que 10.
-s  Se usa para configurar las opciones por defecto,las cuales quedarian definidas en el fichero ~/.mp3rename
    &t  título
    &b  album
    &a  artista Hay que usarlas entrecomilladas para que no sean interpretadas por el shell
    &y  año
    &k  pista
Ejemplos:
  1. mp3rename -s \'&a_&t\'
    establecería artista_título como predeterminadas de manera que
  2. mp3rename *.mp3
    renombrará los mp3 como: \"artista_título.mp3\"
rename
Script de Perl que sirve para renombrar ficheros usando expresiones de Perl
rename \'y/A-Z/a-z/\' *.zip
Cambiamos todas las mayúsculas a minúsculas(en este caso en el nombre de los .zip)
rename \'y/ /_/\' *.jpg
Renombramos el espacio en blanco por _ (en este caso en el nombre de los .jpg)
rename \'s/expresión //\' *.mp3
Eliminamos una expresion en el nombre de todos los .mp3 del directorio actual.
rename \'s/M.Oldfield//\' *.mp3
quitaría \"M.Oldfield\" del nombre en todos los mp3 |
mrename \'ruta_fich.\' prefijo opción
Añade un prefijo al nombre de los ficheros.
Opciones:
-c  Copia los ficheros con un nuevo nombre.
-m  Los renombra.
Ejemplo:
  1. cd/ruta a los ficheros
    debe ejecutarse en el directorio en donde se encuentren.
  2. mrename \'*.jpg\' boda -m
    añadiría boda a los nombres de los jpg
mmv \";*.original\" \"#1#2.nuevo\"
Comando para cambiar el sufijo del nombre de los archivos.En su sintaxis #1 sustituye a la primera expresión regular(;) y #2 a la segunda(*).Aunque con este comando el(;) representa cualquier subdirectorio y es la forma de darle recursividad a la acción.
Ejemplos:
  1. mmv \"*.cbz\" \"#1.zip\"
    Renombraría todos los cbz a zip,conservandose el nombre que precede a .cbz
  2. mmv \";*.cbz\" \"#1#2.zip\"
    Renombraría todos los cbz a zip en el directorio actual y sus subdirectorios


Mtools


Colección de herramientas que permite acceder y manipular ficheros de MS-DOS sin necesidad de un montaje previo. El uso de comodines refiriéndose a archivos del disquete requiere que los nombres se entrecomillen para que no sean interpretados por el shell sino por herramientas de mtools.Más información:\"info mtools\"
minfo unidad:
Muestra información sobre el sistema de archivos MS-DOS de una unidad (a:)
mformat a:
Formatea un disquete,donde \"a:\" es \"dev/fd0\"
mbadblocks a:
Se emplea tras formatear para buscar errores.
mcd [a:]
Informa del directorio MS-DOS en curso o bién cambiamos a uno.
mdir -a a:
Muestra el contenido de un directorio MS-DOS.
mcopy
Copia de ficheros MS-DOS a/o desde Unix.
mcopy \"a:directorio/*\"
copiaría el contenido de \"a:directorio/*\" al directorio en curso.
mcopy \"a:directorio/*\" ~/disquete
copiaría el contenido de \"a:directorio/*\" al directorio \"disquete\".
mcopy *.txt a:bill
copiaría al directorio \"bill\" del disquete todos los .txt.
mmd a:nuevo_directorio
Crea un directorio MS-DOS
mdel \"a:bill/*.txt\"
Elimina un fichero MS-DOS.
mrd a:bill
Elimina un directorio MS-DOS
mdeltree a:bill
Elimina recursivamente un directorio MS-DOS
mren \"a:direct1/*.txt\" a:direct2
Mueve o renombra ficheros MS-DOS
mmove a:directorio1 a:directorio2
Mueve o renombra ficheros o subdirectorios MS-DOS
Comandos relacionados:
mkfs.msdos /dev/fd0
Formatea en formato msdos un disquete.
fdformat /dev/fd0
Formatea en formato msdos un disquete y después verifica el formateo.


GRÁFICOS


glxinfo
Información sobre la biblioteca gráfica OpenGL y su extensión GLX para X-Window
direct rendering: YES = Salida de glxinfo que nos indica si tenemos activada la aceleración 3D.
showrgb
lista los colores reconocidos por el sistema y su valor RGB.
bsdgames
Colección de juegos para consola.
sl
Tren pasando.
apt-get moo
La supervaca del apt ----------->
cowsay muuuuu
Una vaca hablando en su idioma
cowthink -p ¿¿muuuuu??
Una vaca pensando. *
cowsay -f tux hola
Tux saludando.Ver /usr/share/cowsay/cows.
         (__)
         (oo)
/------ \\/
/ | ||
/\\---/\\
banner [texto]
Muestra un cartel en pantalla.
figlet [opciones] [texto]
Derivado del anterior pero más versatil. También se puede usar de forma interactiva.
-w valor ------------------------- Indicamos la anchura del texto,el valor por defecto es 80
-t ------------------------------- La salida se mostrará en su máxima anchura.
-c ------------------------------- La salida se mostrará centrada.
-f tipo -------------------------- Indicamos la tipografía de la salida.Ver /usr/share/figlet/fichero.flf
small,shadow,mini,etc. Podemos indicar la ruta donde buscará las fuentes: figlet -f ~/fuentes/konto
Ejemplo: #figlet -f small texto
  _           _
| |_ _____ _| |_ ___
| _/ -_) \\ / _/ _ \\
  \\__\\___/_\\_\\\\__\\___/
xwd -root -screen > pantalla.xwd
Capturar la pantalla.
sleep 5 ; xwd -root -screen > pantalla.xwd
Capturar la pantallas tras 5 segundos.
xwd > ventana.xwd
Capturar una ventana.
import -window root pantalla.ps (también jpg,png,gif,etc)
Capturar la pantalla en cualquier formato.
sleep 5s ; import -window root pantalla.png
Capturar la pantalla tras 5 segundos.
import -window - ventana.jpg
Capturar una ventana en cualquier formato.
xwud -in pantalla.xwd
Ver imágenes en formato xwd.
display imagen.xwd
Visualizar imágenes (incluídas las xwd).
animate remero.gif (también admite delay)
Visualizar gif animados.
ascii/color
cacaview imagen.jpg (también png,gif,etc)
ascii
asciiview imagen.jpg (también png,gif,etc)
Visualizar imágenes en consola.
identify imagen.gif
Ver las propiedades de una imagen.
pdfimages fichero.pdf nombre_para_las_imágenes: pdfimages Xmen.pdf xmen
Extraer las imágenes de un pdf
convert fichero.pdf nombre_y_formato_imágenes:convert fichero.pdf imagen.png
Extraer las imágenes de un pdf
convert *.jpg catálogo.pdf
Crear un catálogo pdf con imágenes.
display \"vid:*.jpg\"
Crear un índice gráfico con miniaturas.
convert imágen_color.jpg -monochrome imágen_b/n.jpg
Convertir una imagen a blanco y negro.
convert imagen_original.ppm imagen_nueva.jpg
Cambiar el formato de UNA imagen.
convert -sample 100x50 imagen_original.jpg imagen_nueva.jpg
Cambiar las dimensiones de UNA imagen.
mogrify -format jpg *.ppm (convierte a .jpg todas las imágenes .ppm)
Cambiar el formato de VARIAS imágenes.
mogrify -format png -sample 20%x20% *.jpg
Crear miniaturas de VARIAS imágenes.
Miniaturiza nuestras imágenes jpg cambiándoles el formato.
ATENCIÓN porque de no cambiárselo nos eliminaría las originales
convert -delay 15 imag1.jpg imag2.jpg imag3.jpg remero.gif
Crear un gif animado con varios jpg.
-delay 15
Pausa entre imágenes (centésimas de segundo).
convert remero.gif -adjoin remeros.jpg
Extraer los fotogramas de un gif animado.
Añadir texto a una imagen :
                                                     columna_     _fila                    
                                                               |   |
convert -font courier -fill yellow -pointsize 25 -draw \'text 100,250 remeros\' imagen.jpg imagen_con_txt.jpg
         -----         -----         ------------  ------------------ -------
           |             |                |        posición del texto    |
   V             V                V                              v
         fuente   color de fuente  tamaño de la fuente                |texto
                                                                      |si éste tuviese más de una palabra
                                                                      |habría que ponerlo entre dobles comillas
Notas:
xwd viene en el paquete xbase-clients.
pdfimages viene en el paquete xpdf-utils.
las cacas viene en el paquete caca-utils.
asciiview viene en el paquete aview
aafire viene en el paquete libaa-bin
convert,animate,identify,mogrify import y display vienen en el paquete imagemagick
libaa es una libreria que nos permite ver las imágenes,incluso las animadas,mediante caracteres ascii.
libcaca permite lo mismo que libaa pero en color-


MULTIMEDIA


Adaptado para un kernel 2.4.26 con emulación SCSI con la nomenclatura :
#cdrecord -scanbus:
0,0,0 0) \'_NEC \' \'DVD_RW ND-2500A \'       grabadora      /dev/sr0
0,1,0 1) \'HL-DT-ST\' \'DVD-ROM GDR8162B\'    lector         /dev/sr1
Nota:
Salvo cdrecord y dvdrecord los demás se pueden usar en un kernel sin emulación SCSI.
Para usar cdrecord y dvdrecord con un kernel 2.6 ,sin emulación SCSI, podemos probar a realizar un scanbus sobre nuestro dispositivo grabador para ver si lo detecta:
# cdrecord -scanbus dev=/dev/hdc
en cuyo caso lo podremos usar sin más,sustituyendo la nomenclatura propia de cdrecord
dev=0,0,0 por dev=/dev/hdc (ver nota 1 más abajo)


Imágenes


mkisofs -R -J -T -o imagen1.iso fichero1
Crea una imagen de un fichero del disco duro.
dd if=/dev/cdrom of=imagen.iso
Crea una imagen del cdrom y la vuelca en el fichero imagen.iso
cat /dev/cdrom > debian.iso
nrg2iso imagen.nrg imagen.iso
Convierte una imagen nrg a iso
bin2iso imagen.cue
Convierte una imagen bin/cue a iso
ccd2iso imagen.img imagen.iso
Convierte una imagen img/ccd/sub/cue a iso
mdf2iso imagen.mdf imagen.iso
Convierte una imagen mdf/mds a iso
mount -t iso9660 -o loop imagen.iso p.montaje
Monta una imagen.
umount p.montaje
Desmontar una imagen.
md5sum archivo.iso > archivo.iso.txt
Generar la suma control MD5 de un archivo.
md5sum -w -c archivo.iso.txt
Verificar la suma control MD5 de un archivo.
archivo.iso y archivo.iso.txt deben estar en el mismo directorio.


Grabación de CD


cdrecord -v dev=0,0,0 fs=16M speed=30 imagen.iso
Grabar un CD de datos/imagen
cdrecord -v dev=0,0,0 fs=16M speed=30 -eject -isosize /dev/sr1
Copiar un CD de datos/imagen.
wodim -v dev=/dev/cdrw isoimage.iso
Copiar una imagen de disco a CD. La ruta puede variar según el caso. Se recomienda migrar desde cdrecord a su fork, wodim.
cdrecord -v dev=0,0,0 fs=16M speed=30 -pad -audio *.wav
Grabar un CD de audio (cda)
cdrdao copy -v 2 --device 0,0,0 --source-device 0,1,0 --reload \\
--eject --on-the-fly --fast-toc --paranoia-mode 0
Copiar un CD audio (cda)
cdrecord -v dev=0,0,0 fs=16M speed=30 -pad -audio *.wav -data imagen.iso
Grabar CD mixto.
1ª sesión                 cdrecord -multi imagen1.iso (ver nota 1)
dónde acabó la sesión     cdrecord -msinfo nos da un nº que usaremos en el siguiente paso.
creamos nueva imagen      mkisofs -R -J -T -C nº -M /dev/sr0 -o imagen2.iso fichero2
2ª sesión                 cdrecord -multi imagen2.iso
Grabar CD multisesión
cdrecord -v blank=fast (ver cdrecord blank=help)
Borrar un CD±RW.
cdrecord -v -eject speed=8 blank=all dev=1,1,0
Borrar un CD±RW por completo, y no sólo la tabla de particiones (tardará más que en el caso anterior). Le pedimos que nos muestre los detalles con -v (por ejemplo, el progreso del borrado) y con -eject indicamos que el CD será expulsado al finalizar el proceso
wodim -v dev=/dev/cdrw -blank=all
Borrar un CDRW por completo.


Grabación de DVD


growisofs -Z /dev/sr0 -R -J archivo (growisofs llama a mkisofs)
Grabar un DVD de datos/imagen.
growisofs -M /dev/sr0 -R -J archivo (-M añade más datos al dvd)
Grabar DVD multisesión.
growisofs -dvd-compat -Z /dev/sr0=imagen.iso
Grabar una imagen ya creada.
dvdrecord -v dev=0,0,0 blank=fast (ver dvdrecord blank=help)
Borrar un DVD±RW.
dvdbackup -M -i/dev/sr0 -o/home/paco/copia_dvd/
vobcopy -i /dev/sr0 -m -o /home/paco/copia_dvd/
Ripear un video DVD.
Notas:
1.Se pueden establecer valores predeterminados para dev,el dispositivo de grabación;
fs,el tamaño del bufer(nunca menor que el de la grabadora) y speed,la velocidad de
grabación,indicándolo en el fichero /etc/default/cdrecord y simplificando de esta
manera la sintaxis.
2.growisofs viene en el paquete dvd+rw-tools.
3.dvdrecord viene en el paquete dvdrtools.


Ripeo de un CD


cdda2wav -B -H -D /dev/sr1 -s -x
extrae disco completo en archivos wav separados.
cdda2wav -H -D /dev/sr1 -s -x -t 5
extrae el track nº 5
cdparanoia -B -d /dev/sr1
extrae disco completo en archivos wav separados.
cdparanoia 5 -d /dev/sr1
extrae el track nº 5
cdparanoia -- "1-"
extrae el disco completo desde el track nº 1 en un solo archivo wav
abcde -d /dev/sr1 -N -x -o mp3
extrae disco completo en archivos mp3 separados.
abcde -d /dev/sr1 -N -x -o mpc
extrae disco completo en archivos mpc separados.
abcde -d /dev/sr1 -N -x -o ogg
extrae disco completo en archivos ogg separados.
abcde -d /dev/sr1 -N -x -o ogg tracks 1-3 5
extrae las tres primeras canciones y la quinta.
-d indica el dispositivo
-N actua con las opciones por defecto,sin preguntar
-x expulsa el cd al acabar
-o tipo de archivo resultante
abcde -1 -M -o flac
extrae el CD en un solo archivo flac con su correspondiente cuesheet
Nota:
abcde conserva los id3 de los temas al pasarlos al disco duro,es decir artista,título,etc.Requiere de oggenc,lame,cdparanoia o cdda2wav,id3v2 y cd-discid y opcionalmente normalize.


Conversiones


lame -h -m j tema.wav
Pasar de wav a mp3 (-b bitrate -h mayor calidad; -m j join stereo)
lame -h -m j --nogap *.wav
Pasar lote de wav a mp3
oggenc -b 128 -q 5 tema.wav   (-b bitrate ;-q calidad (valores entre 0 y 10)
oggenc *.wav                  (convierte todos los wav en un solo fichero ogg)
oggenc -a -l -t *.wav         (convierte todos los wav en sus respectivos ogg)
Pasar de wav a ogg
oggdec tema.ogg
Pasar de ogg a wav (oggdec *.ogg para convertir un lote)
lame -h --decode tema.mp3 tema.wav
Pasar de mp3 a wav
mplayer -ao pcm fichero.asf
Pasar de asf/wma a wav


Otros


soxmix tema1.ogg tema2.ogg mezcla.ogg (también mp3,wav,au,etc)
Unir varios ficheros de audio.
normalize-audio *.wav
normalize-mp3 *.mp3
normalize-ogg *.ogg
Ajustar el volumen de uno o varios ficheros de audio.
Nota:
oggdec y oggenc vienen en el paquete vorbis-tools
Las conversiones entre formatos comprimidos las he descartado pues hay una pérdida notoria de calidad.


Reproducción


aafire
Fuego animado.
cacafire
Fuego animado a color.
cacademo
Demostración de arte ascii a color.
cacaball
cacamoin
cacaplas
Variados gráficos animados a color.
bb
Impresionante demostración audiovisual de arte ascii.
aatv
Programa para ver la tele mediante código ascii.
xaos -driver aa
Indicamos a xaos que use las librerias aalib para visualizar fractales.
aaxine video.wmv
mplayer -vo aa video.avi             (en ascii)
mplayer -vo caca video.mpg           (en ascii con color)  
mplayer video.avi                    (también mpg,wmv,etc)
mplayer -vcd 1                       (para ver un vcd)
mplayer -dvd-device /dev/hdd dvd://1 (para ver un dvd)
Ver vídeo en consola.
play tema.ogg         (digital)
mocp                  (digital con ncurses)                                
tcd                   (cd con ncurses)
cdplay -d /dev/hdd    (cd)
Escuchar audio.
mplayer -cache 100 mms://...                                              (protocolo mms)
mplayer -cache 100 -playlist http://ruta_del_archivo.asx                  (protocolo mms)
mlayer http://... ;ejemplo:mplayer http://147.156.27.128:8004             (shoutcast-icecast)
somaplayer http://... ;ejemplo:somaplayer http://147.156.27.128:8004      (shoutcast-icecast)
Ecuchar la radio.
mimms -t 20 -o radio3_uned.asf mms://...              mms (asf/wma)
-t tiempo de grabación en mnts.
-o nombre que queremos para la grabación.
streamripper http://... -l 3600                       shoutcast(mp3/ogg)
-l tiempo de grabación en sgs.
Grabar emisiones.
Cómo conseguir la dirección mms:
Una vez en la web de la radio que nos gusta,por ejemplo radio3,nos vamos al enlace que nos indican para el comienzo del streaming y copiamos su ruta o bién nos bajamos dicho enlace,que es un fichero asx que contiene las direcciones mms,lo abrimos con un editor de texto y las buscamos.
Pero si el enlace es código javascript al aparecer la ventana emergente, miramos su código fuente y buscamos (Ctrl+f) por asx o mms y ahí estarán.
Cómo conseguir direcciones shoutcast-icecast:
aquí: http://www.shoutcast.com/ y aquí: http://www.icecast.org
Notas:
Con -vo le indicamos al mplayer el driver de salida de video,en este caso aa o caca para verlo en ascii.
Con \"mplayer -vo help\" podemos ver los drivers de salida de video disponibles.
Si tenemos un enlace de nuestro dispositivo a /dev/dvd, podemos simplificar la sintaxises,ya que es el sitio por defecto en el que mira el mplayer.
aaxine viene en el paquete xine-ui de sid y lee los mismos formatos de video que xine.
play y soxmix vienen en el paquete sox.
cdplay viene en el paquete cdtool.
mocp viene en el paquete moc.
somaplayer y mplayer pueden igualmente reproducir audio digital y audio cd.


SISTEMA




Varios


man comando
man --help
info comando
xman
Muestra información sobre el comando.
help comando
Muestra información sobre un comando interno del shell(bash).
apropos palabra_clave
Busca dentro de las descripciones de man la palabra clave.
apropos -e palabra_clave
Busca la palabra exacta.
finger
Muestra los usuarios conectados en tiempo real al sistema. Necesita instalarse como paquete aparte (finger).
last
Muestra los últimos usuarios que se conectaron al sistema y las fechas y horas de conexión (Útil para analizar intrusiones)
cal -my
Muestra el calendario.
uptime
Muestra la hora,tiempo de funcionamiento,nº usuarios conectados y la carga media.
tzconfig/tzselect
Programas interactivos que permiten selecionar la zona horaria.
grep UTC /etc/default/rcS
Comprobamos si el reloj hardware mantiene la hora local o universal (UTC)
date
Muestra la fecha y hora del sistema,en formato local.
date -u
Muestra la fecha y hora en formato UTC(Tiempo Universal Coordinado).
hwclock --show
Muestra el reloj harware (también llamado reloj de la BIOS y reloj CMOS).
hwclock -systohc
Pone el reloj harware a la hora del sistema.
ntpdate servidor NTP
Ajusta directamente la hora del sistema sincronizándola con la de un servidor NTP.
ntpd
Demonio que ajusta el reloj de forma gradual sincronizándolo con servidores NTP.


IMPORTANTE:

Es probable que el uso de algunos de estos comandos dependa de la instalación de algun paquete. Si este es el caso GNU/Linux les indicará que paquete es, para su instalación.


Happy Hacking!!!