fechaVBox.sh
Nombre: fechaVBox.sh
Autor: Flypp
Lenguaje: Bash
Licencia: GPL
Propósito: Modificar la fecha de una máquina virtual en VirtualBox
Código:
#!/bin/bash
#######################################################################################
# Script para asignar una fecha concreta a una máquina virtual de VirtualBox
# Se deben completar todos los campos y asegurarse de que el script es lanzado
# por el mismo usuario al que pertenecen las máquinas virtuales. Por ejemplo:
# Si la máquina virtual pertenece a user y el script se lanza como root, no funcionará
# Programado por Flypp sin restricciones de uso
########################################################################################
# Se define la función que cambiará la fecha de una máquina virtual concreta
function cambiarfecha {
# Preguntar día del mes
read -p "Día del mes:" dia
# Preguntar més
read -p "Mes (número de dos cifras):" nummes
# Traducir el número del mes al nombre en inglés con 3 letras
if [ $nummes = "01" ]; then
mes=jan
elif [ $nummes = "02" ]; then
mes=feb
elif [ $nummes = "03" ]; then
mes=mar
elif [ $nummes = "04" ]; then
mes=apr
elif [ $nummes = "05" ]; then
mes=may
elif [ $nummes = "06" ]; then
mes=jun
elif [ $nummes = "07" ]; then
mes=jul
elif [ $nummes = "08" ]; then
mes=aug
elif [ $nummes = "09" ]; then
mes=sep
elif [ $nummes = "10" ]; then
mes=oct
elif [ $nummes = "11" ]; then
mes=nov
elif [ $nummes = "12" ]; then
mes=dec
fi
# Preguntar el año
read -p "Año (2 o 4 dígitos):" ano
# Preguntar la hora
read -p "Hora (hh:mm[:sg]):" hora
# Hallar la fecha en milisegundos desde el 01 de enero de 1700
let fechaseg=`date -d "$mes $dia $ano $hora" +%s`*1000
# Hallar la fecha actual en milisegundos
let fechaactseg=`date +%s`*1000
# Hallar la diferencia en milisegundos entre la fecha actual y la fecha a fijar
let difseg=$fechaseg-$fechaactseg
# Solicitar nombre de la máquina virtual a la que se le fijará la fecha
read -p "Nombre de la máquina virtual:" maquina
# Asignar a la máquina virtual la fecha actual (del sistema) para que se asigne correctamente la diferencia
VBoxManage modifyvm "$maquina" --biossystemtimeoffset 0 1> /dev/null
# Asignar a la máquina virtual la fecha deseada
VBoxManage modifyvm "$maquina" --biossystemtimeoffset $difseg 1> /dev/null
echo "Hecho!!"
# Finalizar el script
break
}
# Se define la función que asignará a una máquina virtual concreta la fecha del sistema host
function restaurarfecha {
# Preguntar el nombre de la máquina virtual
read -p "Nombre de la máquina virtual:" maquina
# Restaurar la fecha de la máquina virtual
VBoxManage modifyvm "$maquina" --biossystemtimeoffset 0 1> /dev/null
echo "Hecho!!"
# Finalizar el script
break
}
# Preguntar qué acción se va a realizar
echo "¿Qué acción de fecha se va a realizar?"
select opcion in Restaurar Definir Cancelar; do
if [ $opcion = "Restaurar" ]; then
restaurarfecha
elif [ $opcion = "Definir" ]; then
cambiarfecha
else
break
fi
done
Ejemplos de uso: Simplemente hay que lanzar el script. Se solicitarán todos los datos necesarios
Comentarios: Es el primer script que hago, así que es muy provable que necesite un pulido.