Diario BSD
30Oct/09Off

Expect

Con expect podemos realizar un “dialogo programado con procesos interactivos”, es decir, programar scripts que interactúen con determinada respuesta de la consola a la que responderemos con los oportunos comandos. Es muy útil por ejemplo para enviar archivos por sftp de un servidor a otro.

Los instalaremos mediante ports:

# cd /usr/ports/lang/expect
# make install clean

y realizaremos por ejemplo un script para el envío de una copia de BD con la fecha actual desde este servidor a otro con:

#!/usr/local/bin/expect
spawn sftp 192.168.32.16
expect “myfreebsd@192.168.32.16’s password:”
send “myfreebsd\r”
expect “sftp>”
send “cd /home/myfreebsd\r”
expect “sftp>”
send “put *\r”
expect “sftp>”
send “exit\r”
expect eof

29Oct/09Off

Fecha y Hora en la consola y Screen

Si queremos ver en nuestra terminal bash la fecha y la hora en todo momento de una forma limpia, podemos seguir este truco basado en la utilidad GNU "screen".

Hay otros métodos de poder ver la fecha en consola, como es configurarlo en el propio prompt o haciendo uso de algún script, pero realmente no son las mejores soluciones, vamos a ver como hacerlo de forma más óptima, cómoda y rápida mediante la aplicación screen.

En sistemas BSD no se instala la utilidad "screen" por defecto, cosa que en GNU/Linux si suele venir instalada. Procedamos a instalarla de la siguiente forma:

# cd /usr/ports/sysutils/screen/
# make install clean

Fichero de configuración global en FreeBSD: /usr/local/etc/screenrc

En el fichero /usr/local/etc/screenrc "startup_message on" podemos ponerlo en "off" para que no muestre el mensaje de copyright cada vez que screen se ejecute.

Para mostrar la hora debemos añadir la siguiente línea a /usr/local/etc/screenrc:

startup_message off
caption always "%{+b wk}%-21=%D %d/%m/%Y %0c"

Para entrar en screen deberemos teclear:

# screen

y para salir:

# exit

para cambiar entre diferentes sesiones:

C-a número para ir a la consola indicada

C-a “ para mostrar el menú de cambio de consolas

screen o C-a c para crear una nueva consola

C-a d desliga la sesión actual (como enviarla a segundo plano)

screen -r liga la sesión (si es única) a la terminal actual (local o remota). Si hay varias sesiones, mostrará sus identificadores numéricos

screen -r número liga la sesión identificada por “número“.

screen -dr desliga la sesión (si es única) del terminal asociado y la liga al terminal actual (local o remota). Si hay varias sesiones, mostrará sus identificadores numéricos

screen -dr número desliga la sesión especificada por “número” del terminal asociado y la liga al terminal actual

C-a k / exit cierra la consola actual de screen. Si es la última se sale del programa

C-a \ Cierra todas las consolas y se sale de screen

8Oct/09Off

Actualizar el árbol de ports en FreeBSD

Con este pequeño truco podremos actualizar todo nuestro árbol de ports de FreeBSD y así cuando actualicemos con un simple comando tendremos a nuestra disposición los nuevos programas y además las ultimas versiones.

Empezaremos por instalar unos ports.

# cd /usr/ports/net/cvsup-without-gui/
# make install clean
# cd /usr/ports/sysutils/portupgrade/
ó # cd /usr/ports/ports-mgmt/portupgrade/
# make install clean

Con esto quedan instalados los dos programas que necesitamos para hacer la actualización.

Ahora editamos el archivo make.conf que se encuentra en el directorio /etc con el editor nano.

# nano /etc/make.conf

y agregamos al principio del archivo las siguientes lineas.

SUP_UPDATE=yes
SUP=/usr/local/bin/cvsup
SUPFLAGS= -g -L 2
SUPHOST=cvsup.uk.FreeBSD.org
SUPFILE=/usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
DOCSUPFILE=/usr/share/examples/cvsup/doc-supfile

Guardamos, salimos y ya podemos ir al directorio /usr/ports y poner make update y el solito actualizara tu árbol de ports con las ultimas versiones y programas existentes.

# cd /usr/ports
# make update

7Oct/09Off

Cambio de SHELL a usuario root

Se puede obtener el nombre del SHELL por defecto para el usuario root con el siguiente comando:

# echo $SHELL
/bin/csh

Si se desea agregar a BASH como SHELL por defecto para el usuario root:

# chsh -s /usr/local/bin/bash

Creamos el archivo .bashrc

# touch ~/.bashrc

y ponemos los alias necesarios y nuestra configuración de consola.

# nano ~/.bashrc

alias ls='ls -G'
alias df='df -h'
alias hora='ntpdate hora.rediris.es'
export PS1='[`whoami`@\[\033[0;32m\]\h\[\033[0;36m\] \w\[\033[00m\]]#'

5Oct/09Off

Instalación de BASH

Si deseamos tener el entorno bash disponible en nuestro sistema, basta con obtenerlo a través de los ports.

# cd /usr/ports/
# make search name=bash
Port: bash-3.1.17
Path: /usr/ports/shells/bash
Info: The GNU Project's Bourne Again SHell
Maint: obrien@FreeBSD.org
B-deps: gettext-0.14.5_2 libiconv-1.9.2_2
R-deps: gettext-0.14.5_2 libiconv-1.9.2_2
WWW: http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html

e instalamos BASH

# cd /usr/ports/shells/bash
# make install clean