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
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
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
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\]]#'
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