0) Notas posteriores a la instalación
Sincronización de la hora del sistema
Configurar el script de instalación
Script: Tareas previas a la instalación
Script: Copia de seguridad de HOME
¿Cómo crear un USB con la live ISO?
Distribución de los discos duros
Script: Tareas posteriores a la instalación
Copia de documentación y archivos
Configurar trabajos de mantenimiento y backup de la información
Instalar aplicaciones manualmente
Aplicaciones al inicio (Crontab)
Incluir usuario en el grupo sudo (*)
e) Scrip de instalación de Debian 12
IMPORTANTE: Después de actualizar / Reinstalar, no realizar una sincronización
hasta haber finalizado de configurar correctamente el equipo.
Si la hacemos antes de la cuenta, el sincronizador eliminará
archivos/carpetas que no encuentre en la nueva instalación.
Leer el apartado Notas tras la instalación
Portátil Thosiba:
F12 -> Boot Menú
F2 -> Bios Setup
Portátil HP
ESC -> Menú
Hacer una prueba de instalación en una máquina virtual y ver la forma en la
realiza la distribución del disco duro.
En este apartado se recogen notas a tener en cuenta en futuras instalaciones.
La hora del equipo es la de la BIOS, para tener la certeza de que la hora es
la correcta conviene que sea actualizada desde un servidor.
Para ello se utiliza el NTP (Network Time Protocol) que mantiene la hora del
sistema sincronizada con la hora real.
PENDIENTE DE ESTUDIO
g_app_version="4.05"
g_app_fecha="28/06/23"
g_app_so="Debian 12"
# Carpeta donde se almacenan mis scripts
g_folder_scripts_origen="/home/juanp/script_juanp/myscript"
g_folder_scripts_destino="/script_juanp/myscript"
# Lugar donde se realizará la copia de seguridad de HOME
g_destino_backup_home="/mnt/wd/juanp/backup_home_seguridad"
# Directorio de las aplicaciones AppImage
g_folder_appimage="$HOME/AppImage"
# Carpeta en la que se realizará la copia de la información.
g_folder_copy="/home/juanp/temporal/20230624_debian_12"
# Carpeta $HOME - Para pruebas de se puede poner otra carpeta
g_folder_home="$HOME"
#g_folder_home="/home/juanp/Linux/instalaciones/provi"
# Autofirma
# https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1112
g_libpkcs11_dnie="./firma_electronica/libpkcs11-dnie_1.6.8_amd64.deb"
# https://firmaelectronica.gob.es/Home/Descargas.htm
g_autofirma="./firma_electronica/AutoFirma_1_8_2.deb"
Ejecutar el script de instalación y seleccionar la opción de tareas previas
a la instalación.
Copiar la información guardada en g_folder_copy en un USB que se usará tras
la instalación del SO.
Ejecutar el script de instalación y seleccionar la opción de copia de segu-
ridad de la carpeta personal.
La copia se realizará en en NAS WD, en la ubicación indicada en
g_destino_backup_home
Para realizar la instalación se una imagen live híbrida con gnome.
Imagen ISO híbrida Debian con Gnome"
Con Fedora Media Writer (flatpak) / Raspberry Pi Imager
Iniciar el equipo con el USB Live de Debian, instalar gparted y realizar la
partición del disco adecuada. Para ello tener en cuenta:
.- La recopilación de información se guarda de forma automática la infoma-
ción de los discos duros generadas por los comandos siguientes un archivo.
lsblk -f -m
df -h
Archivo: ./discos/info_discos.txt
.- La proporcionada por GParted.
.- La obtenida durante la prueba de instalación en una máquina virtual
Emplear de flatpak ha incrementado el uso del raíz (/) por lo que se va incre-
mentar el espacio disponible pasa a 80 GB.
En el caso de que no se vaya a modificar el tamaño de /home puede ser recomen-
dable eliminar todas las carpetas ocultas (que tienen información de configu-
ración) y usarla durante la instalación sin formatearla; de esta forma no ha-
bría que hacer la copia del backup de /home.
IMPORTANTE: Hacer una copia en el disco duro portátil del /home
Ejecutar el script de instalación y seleccionar la opción de tareas posterio-
res a la instalación.
.- Revisar configuración Contraseñas - SeaHorse
Comprobar que los permisos de $HOME/.gnupg sean los correctos. El script
debería haberlo hecho.
Si no es así:
chown -R $(whoami) ~/.gnupg/
find ~/.gnupg -type f -exec chmod 600 {} \;
find ~/.gnupg -type d -exec chmod 700 {} \;
.- Configurar escritorio
..- Configurar el tema: Retoques - Apariencia
...- Activar botón minimizar
..- Nautilus preferencias
...- Abrir elementos con una sola pulsación
...- Listas: Tipo detallado tras el tamaño
...- Tabulador 2 - Espacios
..- Configurar extensiones:
...- Dash to dock
...- Todo.txt(Lista de tareas sincronizadas con el movil)
Ubicación archivo de tareas: /home/juanp/Dropbox/Tareas
..- Configurar aplicaciones .desktop
Los archivos se habrán copiado en ~/.local/share/applications/
Hay que revisar en los scripts que el archivo que se ejecute sea
accesible y al igual que el icono.
..- Configurar atajos de teclado
...- Configuración - Teclado
Abrir Terminal - Crtl + T - gnome-terminal
..- Configurar avatar usuario
.- Revisar funcionamiento de rclone.
Sincronizar desde la nube.
.- Revisar configuración de FireFox
.- Revisar configuración del cortafuegos: gufw
.- Configurar Editor
Según imagen de configuración guardadas.
.- Configurar Transmission
Copiar del backup la carpeta $HOME/.config/transmission
.- Firma digital
Ver "guia_instalar_firma_electronica.txt"
Para comprobar el funcionamiento de Autofirma en el navegador:
https://www.sededgsfp.gob.es/es/Paginas/TestAutofirma.aspx
.- Configurar impresoras desde el panel de control.
Hacer la búsqueda con las IP de las impresoras.
Impresora ML-1865W - 00:15:99:81:1B:C2 - 192.168.0.159 (fija)
Impresora HP 4130e - 14:CB:19:F2:4B:52 - 192.168.0.45
(Ver información adicional - impresoras)
.- Comprobar funcionamiento scaner
El scaner HP 4130e no funciona la primera vez, probar de nuevo y ver
si hay varios disponibles.
.- Configurar cuentas online
.- Configurar Wifi
.- Configurar y restaurar Evolution
.- Configurar VsCodium
BashIDE
ShellCheck
Spanish Language
Better Shell Syntax
.- Configurar Shotwell
Comprobar que están copiadas la fotografías, la cache y la base de da-
tos. Lo último debería haberse realizado desde el script de instalación.
Iniciar la aplicación y dejarla que trabaje, tarda un rato.
.- Configurar Calibre
Recuperar la información.
.- Configurar trabajos de copias de seguridad
..- Comprobar funcionamiento backup a WD NAS
inc_rsync.sh: Activar el modo Simulación
..- Configurar Respaldos / Deja-dup
.- Añadir linea(s) a crontab
.- Virtualbox:
..- Descargar el paquete y VM VirtualBox Extension Pack
link=https://www.virtualbox.org/
..- Instalación:
sudo dpkg -i virtualbox-6.1_6.1.32-149290~Debian~bullseye_amd64.deb
Si la instalación no se completa por problemas de dependencia:
sudo apt-get -f install
Y volver a instalar el paquete
Iniciar VirtualBox e instalar VM VirtualBox Extension Pack
Archivo - Herramientas - Extension Pack Manager - Add (+)
.- Instalar Autofirma:
Ver "SO - Guía instalación Firma digital"
Incluir en crontab (sudo crontab -e) las líneas que ha guardado en el USB el
script de instalación.
../datos/crontab/crontab.txt
IMPORTANTE: Después de actualizar / Reinstalar : No realizar una sincroniza-
ción hasta haber finalizado de configurar correctamente el
equipo.
Si la hacemos antes de la cuenta, el sincronizador eliminará ar-
chivos/carpetas que no encuentre en la nueva instalación.
Información:
sudo apt install flatpak;
sudo apt install gnome-software-plugin-flatpak;
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Reiniciar
La configuración se realiza desde el script de instalación.
Lo siguiente es información para hacerlo manualmente.
Archivo: /etc/fstab
Instalar cifs-utils, necesario para montar carpetas del NAS WD:
sudo apt install cifs-utils
.- Crear en /mnt las carpetas donde se montarán las carpetas
..- HDD: Disco duro mecánico
...- /mnt/hdd
..- Remotas
...- NAS-WD
....- juanp NAS-WD: /mnt/wd/juanp
....- multimedia NAS-WD: /mnt/wd/multimedia
....- marisa NAS-WD: /mnt/wd/marisa
El conjunto de comandos necesarios sería el siguiente:
sudo mkdir /mnt/hdd &&
sudo chown juanp:juanp /mnt/hdd &&
sudo chmod 770 /mnt/hdd &&
sudo mkdir /mnt/wd &&
sudo mkdir /mnt/wd/juanp &&
sudo mkdir /mnt/wd/multimedia &&
sudo mkdir /mnt/wd/marisa &&
sudo chown -R juanp:juanp /mnt/wd &&
sudo chmod -R 770 /mnt/wd
.- En /etc/fstab incluir las líneas necesaria para montar estas carpetas
Crear una copia de seguridad del fstab
cp /etc/fstab /home/juanp/Documentos/fstab_org
Copiar el archivo que contiene las credenciales para acceder al NAS WD guar-
dado previamente:
sudo cp .credenciales /root
Obtener el UUID del HDD que se va a montar en /mn/hdd, para obtener el UUID
de los discos del sistema se usa:
sudo blkid
Abrir la copia del fstab que se ha guardado y copiar lo necesario al fstab
del sistema. Son las líneas necesarias para montar algunas carpetas del NAS WD.
# Disco WD - /juanp
//192.168.0.158/juanp /mnt/wd/juanp cifs credentials=/root/.credenciales,gid=juanp,uid=juanp,iocharset=utf8,rw
# Disco WD - /multimedia
//192.168.0.158/Multimedia /mnt/wd/multimedia cifs credentials=/root/.credenciales,gid=juanp,uid=juanp,iocharset=utf8,rw
# Disco WD - /marisa
//192.168.0.158/marisa /mnt/wd/marisa cifs credentials=/root/.credenciales,gid=juanp,uid=juanp,iocharset=utf8,rw
Editar fstab:
sudo nano /etc/fstab
Para probar si se hace bien usar:
sudo umount -a
sudo mount -a
Cerrar y abrir sesión.
Instalar, si no se ha hecho ya, CUPS (sudo apt-get install cups)
Necesita reiniciar.
Buscar las impresoras desde el menú de impresoras.
Una vez instalada seleccionar en configuración - Detalles de impresora
los controladores adecuados.
Si no se encuentra instalar los controladores descargados.
..- Instalación de la impresora ML1865W:
Descargar samsung Controlador para impresora.
(Los últimos usados están en : /home/juanp/Documentos/Imp_ML1865W))
Descomprimir (OJO: en un disco con sistema de archivos linux, no
FAT32, FAT 16 o NTFS, porque entonces los script no tiene permisos
de ejecución y fallan)
sudo sh install.sh
Acuerdo de licencia: Yes (Aparce tras el apartado 10)
Yes to configure firwall
Encender impresora
Menú impresora -> Añadir impresora
..- Instalación de la impresora/scaner HP 4130e
Para configurar la conexión con el rotuer usar la aplicación de android
HP Smart
MAC impresora: 14:CB:19:F2:4B:52
sudo su
sudo usermod -a -G sudo juanp
groups juanp
El último comando se emplea para comprobar que está incluido.
(*) Command not found (Orden no encontrada ) con «su» en Debian 10 ‘buster'
En función del tipo de instalación que se realice nos podemos encontrar en
dos situaciones distintas.
Al hacerla con el instalador normal, crea un usuario normal y luego el root
para el que pide la contraseña. En este caso hay que incluir al usuario en
el grupo sudo (0-1).
Cuando se hace con un live CD y se realiza desde el nuevo SO iniciado con
el live CD, crea un usuario y lo incluye en el grupo sudo, pero no solicita
contraseña para el root. Al no tener la certeza de cómo configura al root,
se le pone contraseña al usuario root (0-2).
() Incluir usuario en el grupo sudo:
Iniciar sesión en el terminal con: su - (ojo con guión *)
su -
Ejecutar:
usermod -a -G sudo juanp
Reiniciar
Ver los grupos de un usuario:
cat /etc/group | grep juanp | cut -d: -f1
groups juanp
Ver los grupos
cut -d : -f 1 /etc/group
Añadir usuario al grupo sudo
usermod -a -G sudo juanp
* El guión tiene dos efectos:
1) cambia del directorio actual al directorio de inicio del nuevo
usuario (por ejemplo, a / root en el caso del usuario root)
iniciando sesión como ese usuario
2) cambia las variables ambientales a las del nuevo usuario según
lo dicte su ~ / .bashrc. Es decir, si el primer argumento para
su es un guión, el directorio y el entorno actuales cambiarán a
lo que se esperaría si el nuevo usuario hubiera iniciado sesión
en una nueva sesión (en lugar de simplemente asumir una sesión
existente).
() Poner contraseña al usuario root (su)
Entrar como root (superusuario)
sudo su
Se nos pedirá la contraseña de usuario, que es la misma que usamos pa-
ra iniciar sesión en el equipo.
De esta forma estaremos conectados como root.
Si queremos podemos dar una contraseña al usuario root utilizando:
sudo passwd root
Salimos del superusuario con el comando:
exit
Configuración Nueva
.- Si se hubiera iniciado previamente, eliminar la configuración local.
/home/juan/.mozilla
.- Desconectar la red.
.- Iniciar FireFox
.- about:config
..- privacy.trackingprotection.enabled (Rastreo)
(Esta habría que verlo)
..- browser.privatebrowsing.autostart (Privada)
.- Buscador: DuckDuckGo
..- Preferencias - Search - Default Search Engine
.- Cerrar Firefox - Concectar red - Iniciar FireFox
.- Cambiar Idioma:
..- Preferencias - Language
..- Preferencias - Buscador
.- Activar el Modo solo-HTTPS en todas las ventanas (sustituye a HTTPS
Everywhere)
.- Activar DoH (DNS sobre HTTPS)
Ajuste - Configuración de red - Activa DNS sobre HTTPS
Proveedor - Predeterminado (Cloudflare)
.- Activar ESNI
network.dns.echconfig.enabled -> true
network.dns.use_https_rr_as_altsvc -> true
.- Reiniciar
.- Extensiones
..- Integración con GNOME Shell (https://extensions.gnome.org/)
..- NoScript
..- Disconnect
.- Cargar marcadores
.- Configurar página de incio
file:///home/juanp/Documentos/personalpage/main.html
Importar perfiles
Este procedimiento se ha comprobado para realizarlo entre la misma versión
del navegador.
.- Copiar los perfiles previamente guardados en la carpeta:
/home/juanp/.mozilla
cp -r "$HOME"/.mozilla/* /destino/...
.- Iniciar FireFox en el nuevo equipo y acceder al gestor de perfiles:
about:profiles
.- Crear tantos perfiles como sea necesario en el equipo destino vincu-
landolos con las correpondientes carpetas de perfiles que se han co-
piado.
#!/bin/bash
# Información:
# Copia en el directorio que se indica en la configuración la información y da-
# tos necesarios para una nueva instalación del Sistema Operativo.
# Este proceso en parte está automatizado y otra parte requiere que la infor-
# mación la cree el usuario.
# Notas:
# .- De los archivos del sistema que se modifiquen, a parte de hacer un
# backup -centralizado y numerado- crear una copia del original en el
# sitio la primera vez que se va a modificar.
# Configuración
# Variables
g_app_version="4.08"
g_app_fecha="06/07/23"
g_app_so="Debian 12"
# Carpeta donde se almacenan mis scripts
g_folder_scripts_origen="/home/juanp/script_juanp/myscript"
g_folder_scripts_destino="/script_juanp/myscript"
# Lugar donde se realizará la copia de seguridad de HOME
g_destino_backup_home="/mnt/wd/juanp/backup_home_seguridad"
# Directorio de las aplicaciones AppImage
g_folder_appimage="$HOME/AppImage"
# Carpeta en la que se realizará la copia de la información.
g_folder_copy="/home/juanp/temporal/20230624_debian_12"
# Carpeta $HOME - Para pruebas de se puede poner otra carpeta
g_folder_home="$HOME"
#g_folder_home="/home/juanp/Linux/instalaciones/provi"
# Autofirma
# https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1112
g_libpkcs11_dnie="./firma_electronica/libpkcs11-dnie_1.6.8_amd64.deb"
# https://firmaelectronica.gob.es/Home/Descargas.htm
g_autofirma="./firma_electronica/AutoFirma_1_8_2.deb"
# Paquetes de software
g_file_packages="$(mktemp tmp.XXXXXXXXX)"
echo "cifs-utils"
echo "keepassxc"
echo "synaptic"
echo "cups"
echo "gufw"
echo "rsync"
echo "exiftool"
echo "clamtk"
echo "imagemagick"
echo "gparted"
echo "flatpak"
echo "gnome-software-plugin-flatpak"
echo "libcupsimage2"
echo "telegram-desktop"
echo "rclone"
} > "$g_file_packages"
# echo "megatools"
# echo "davfs2"
# Paquetes para la firma digital
echo "pcsc-tools"
echo "pcscd"
echo "pinentry-gtk2"
echo "libccid"
} >> "$g_file_packages"
# Paquetes de software Flatpak
g_file_packages_flatpak="$(mktemp tmp.XXXXXXXXX)"
echo "org.gimp.GIMP"
echo "com.vscodium.codium"
echo "com.calibre_ebook.calibre"
echo "org.videolan.VLC"
} > "$g_file_packages_flatpak"
#echo "org.darktable.Darktable"
# Variables globales de gestión interna (no configuración)
# Número de errores que se han producido
g_num_error=0
# Controla si ha llegado a su fin el script; se usa en info_status_error
g_fin_script=0
# Archivo log de errores
g_log_errores=$(mktemp)
# Funciones auxiliares
function _info_status_error() {
if [[ $g_fin_script -eq 0 ]]; then
echo ""
echo "ERROR: Se ha producido un error no recuperable."
echo " El script se ha interrumpido."
echo ""
echo "Errores:"
cat "$g_log_errores"
else
if [[ $g_num_error -gt 0 ]]; then
echo ""
if [[ $g_num_error -eq 1 ]]; then
echo "ATENCIÓN: Se han producido $g_num_error error."
else
echo "ATENCIÓN: Se han producido $g_num_error errores."
fi
echo ""
echo "Errores:"
cat "$g_log_errores"
else
echo ""
echo "OK: No se han producio errores"
echo ""
fi
fi
function _ini_copia(){
echo "------------------------------------------------------------------------"
echo ""
echo "Copiando:"
echo " .- Informacion: $1"
echo " .- Destino : $2"
echo ""
function _fin_copia(){
echo " > OK"
function _crear_folder(){
if [[ ! -d $1 ]]; then
mkdir -p "$1"
if [[ ! $? = 0 ]]; then
_error "No se ha podido crear el directorio $1"
exit 1
fi
fi
function _error(){
echo "Error: $1"
echo "Error: $1" >> "$g_log_errores"
((g_num_error ++))
if ! _yes_no "¿Continuar?" ""; then
exit 1
fi
function _yes_no(){
local l_r=1
while true; do
echo ""
if [[ -n "$2" ]]; then
echo "$2"
fi
read -r -N 1 -p "$1 (Y/N) " yn
echo " -> $yn"
case $yn in
[Yy]* ) l_r=0;break;;
[Nn]* ) l_r=1;break;;
* ) echo "La respuesta ha de ser yes o no.";;
esac
done
return $l_r
function _copy_file() {
local l_file_origen="$1"
local l_destino="$2"
local l_sudo="$3"
if [[ ! ${l_destino: -1} = "/" ]]; then
l_origen="$l_destino"/
fi
if [[ "$l_sudo" -eq 0 ]] && [[ ! -f "$l_file_origen" ]]; then
_error "Error no existe el archivo $l_file_origen"
else
echo "-----------------------------------------------------------------------------------------"
echo "Copiando:"
echo " .- Archivo: $l_file_origen"
echo " .- Destino: $l_destino"
echo ""
_crear_folder "$l_destino"
if [[ "$l_sudo" -eq 0 ]]; then
if ! cp "$l_file_origen" "$l_destino"; then
_error "No se ha podido copiar $l_file_origen en $l_destino"
else
echo " > OK"
fi
else
if ! sudo cp "$l_file_origen" "$l_destino"; then
_error "No se ha podido copiar $l_file_origen en $l_destino"
else
echo " > OK"
fi
fi
fi
function _copy_full_folder(){
# Copia el contenido del origen -no la carpeta en sí misma- en el destino; si
# no existe el destino lo crea.
# Tanto destino como origen deben termina en contrabarra.
local l_origen=$1
local l_destino=$2
if [[ ! ${l_origen: -1} = "/" ]]; then
l_origen="$l_origen"/
fi
if [[ ! ${l_destino: -1} = "/" ]]; then
l_destino="$l_destino"/
fi
echo "-----------------------------------------------------------------------------------------"
echo "Copiando:"
echo " .- Directorio: $l_origen"
echo " .- Destino : $l_destino"
echo ""
if [[ ! -d "$l_origen" ]]; then
_error "No existe el directorio [ $l_origen ]"
else
_crear_folder "$l_destino"
# !OJO¡: El asterisco en "$l_origen"* debe estar fuera de las comillas.
if ! cp -r "$l_origen"* "$l_destino"; then
_error "No se ha podido copiar $origen en $destino"
else
echo " > OK"
fi
fi
function _tar_comprimir(){
# Comprimir un archivo tar .GZ sin usar la ruta absoluta en la compresion
# 1 -> Nombre y path del archivo comprimido que se creara.
# 2 -> Path completo de la carpeta a comprimir.
_crear_folder "$(dirname "$1")"
if [[ ! -d "$2" ]]; then
_error "No existe el directorio $2"
retrun 1
else
echo "-----------------------------------------------------------------------------------------"
echo "Comprimiendo: "
echo " .- Origen : $2"
echo " .- Destino: $1"
if ! tar -czf "$1" -C"$2" .; then
_error "No se ha podido crear el archivo tar"
return 1
else
echo " > OK"
return 0
fi
fi
function _tar_descomprimir(){
# Descomprimir un archvio tar .GZ indicando el directorio de destino
# 1 -> Nombre y path del archivo a descomprimir
# 2 -> Path completo de la carpeta donde se descomprimira.
_crear_folder "$2"
if [[ ! -f "$1" ]]; then
_error "No existe el archivo $2"
retrun 1
else
echo "-----------------------------------------------------------------------------------------"
echo "Descomprimiendo: "
echo " .- Origen : $1"
echo " .- Destino: $2"
_crear_folder "$2"
if ! tar -xzf "$1" -C"$2"; then
_error "No se ha podido descomprimir el archivo tar"
return 1
else
echo " > OK"
return 0
fi
fi
function _check_installed() {
dpkg -s $1 &> /dev/null
if [ $? -eq 0 ]; then
return 0
else
return 1
fi
function _mkdir() {
echo "Creando directorio $1"
if [[ -d "$1" ]]; then
echo "Ya existe el directorio: $1"
else
if [[ "$2" -eq 1 ]]; then
if mkdir "$1"; then
_fin_copia
else
_error "No se ha podido crear el directorio $1"
fi
else
if sudo mkdir "$1"; then
_fin_copia
else
_error "No se ha podido crear el directorio $1"
fi
fi
fi
# Salida del script
# Esta funcion es la que se invocará al salir del script.
function _trap_exit(){
_info_status_error
rm -f "$g_log_errores"
rm -f "$g_file_packages"
rm -f "$g_file_packages_flatpak"
trap _trap_exit EXIT
# Procedimientos y funciones
# Copia de seguridad $HOME
function _backup_home(){
echo "-------------------------------------------------------------------------------"
echo "Backup de $HOME"
echo ""
echo " .- Origen : $HOME"
echo " .- Destino: $g_destino_backup_home"
echo ""
if _yes_no "¿Realizar simulación de la copia?" ""; then
_crear_folder "$g_destino_backup_home"
echo "Simulación: Copia de seguridad de $HOME"
echo "Se almacena la información de la copia en el archivo simul_copia.txt"
if ! rsync -avz --dry-run --exclude .cache "$HOME" "$g_destino_backup_home" > simul_copia.txt; then
_error "La simulación no se ha realizado correctamente."
else
echo ""
echo "Se ha realizado una simulación de la copia de seguridad de home"
fi
fi
if _yes_no "¿Realizar la copia?" ""; then
_crear_folder "$g_destino_backup_home"
echo "Iniciada Copia de seguridad de $HOME"
if ! rsync -avz --exclude .cache "$HOME" "$g_destino_backup_home"; then
_error "La copia no se ha realizado correctamente"
else
echo ""
echo "Finalizada Copia de seguridad de $HOME"
fi
fi
g_fin_script=1
exit 0
# Instalación controladores impresora Samsung ML1865W
function _instalar_impresora_ML1865() {
local file_imp
echo "-------------------------------------------------------------------------------"
echo "Configuración impresora ML1865W"
echo ""
# Comprobar si existe el archivo con los controladores
file_imp=$(find ./impresoras/uld*)
if [[ "$file_imp" = "" ]]; then
_error "No se encuentra el archivo con los controladores en ./impresoras"
fi
if _yes_no "¿Instalar y configurar la impresora ML1865W?" ""; then
# Comprobar que están instalados los paquetes necesarios
if ! _check_installed cups; then
_install_pk "cups"
fi
if ! _check_installed "libcupsimage2"; then
_install_pk "libcupsimage2"
fi
# Instalación controladores de la impresora
echo "Instalación controladores impresora Samsung ML1865W"
if ! _tar_descomprimir "$file_imp" "$HOME"/Documentos/impresoras/ml; then
_error "No ha podido descomprimirse los controladores impresora Samsung ML1865W"
fi
if ! sudo bash "$HOME/Documentos/impresoras/ml/uld/noarch/package_install.sh" "printer-meta"; then
_error "No se ha instalado correctamente los controladores de la impresora Samsung ML1865W"
else
_fin_copia
fi
sudo rm -rf "$HOME"/Documentos/impresoras
fi
# Configurar fstab
# Se estructura siguiente:
# .- NAS-WD
# ..- juanp NAS-WD: /mnt/wd/juanp
# ..- multimedia NAS-WD: /mnt/wd/multimedia
# ..- marisa NAS-WD: /mnt/wd/marisa
# .- NextCloud (NO se configura)
# ..- nextcloud_jp/nc_opsone
# -> shared02.opsone-cloud.ch => /mnt/nextcloud_jp/nc_opsone
# Este punto no se automonta, será montado y usado por el script de
# sincronización /home/juanp/manto/t_sync_nextcloud.sh
function _config_fstab(){
local l_backup=""
local l_file_tmp
#local l_nextcloud
l_backup="$(dirname "$0")/backup"
echo "-------------------------------------------------------------------------------"
echo "Configuración /etc/fstab"
echo ""
if cat /etc/fstab | grep "# Disco WD - /juanp" &> /dev/null;then
echo "El fstab parece que ya contiene las líneas para configurar los discos externos."
if _yes_no "¿Listar el contenido de /etc/fstab?" ""; then
cat /etc/fstab
fi
fi
if _yes_no "¿Configurar /ect/fstab?" ""; then
# Cuenta nextcloud
#l_nextcloud=0
#if _yes_no "¿Configurar la cuenta nextcloud?" ""; then
# l_nextcloud=1
#fi
# Comprobar que están instalados los paquetes necesarios
if ! _check_installed cifs-utils; then
_install_pk "cifs-utils"
fi
# if [[ "$l_nextcloud" -eq 1 ]]; then
# if ! _check_installed "davfs2"; then
# _install_pk "davfs2"
# fi
# fi
# Crear copia de seguridad de fstab
echo "Creando copia de seguridad de fstab"
_crear_folder "$l_backup"
if ! cp /etc/fstab "$l_backup"/fstab.bck; then
_error "No se ha podido crear la copia de seguridad de fstab"
exit 1
else
_fin_copia
fi
# Crear la estructura de directorios y asignarles los permisos correctos.
echo "Creando estructura de directorios en /mnt y asignando permisos"
echo " .- /mnt/wd"
#if [[ "$l_nextcloud" -eq 1 ]]; then
# echo " .- /mnt/nextcloud_jp"
#fi
# WD
if [[ -d "/mnt/wd" ]]; then
echo " .-El directorio /mnt/wd ya existe"
else
_mkdir "/mnt/wd" 0
_mkdir "/mnt/wd/juanp" 0
_mkdir "/mnt/wd/multimedia" 0
_mkdir "/mnt/wd/marisa" 0
_mkdir "/mnt/wd/invitado" 0
fi
if mountpoint -q -- "$/mnt/wd"; then
echo "Asignando propietario y permisos a /mnt/wd"
if ! sudo chown -R "$USER":"$USER" /mnt/wd; then
_error "Asignando propietarios a /mnt/wd"
elif ! sudo chmod -R 770 /mnt/wd; then
_error "Asignando permisos a /mnt/wd"
fi
else
echo " .- /mnt/wd es un punto de montaje"
fi
_fin_copia
# NextCloud
# if [[ "$l_nextcloud" -eq 1 ]]; then
# _mkdir "/mnt/nextcloud_jp" 0
# _mkdir "/mnt/nextcloud_jp/nc_opsone" 0
# echo "Asignando propietario y permisos a /mnt/nextcloud_juanp"
# if ! sudo chown -R "$USER":"$USER" /mnt/nextcloud_jp; then
# _error "Asignando propietarios a /mnt/nextcloud_jp"
# elif ! sudo chmod -R 770 /mnt/nextcloud_jp; then
# _error "Asignando permisos a /mnt/nextcloud_jp"
# fi
# _fin_copia
# fi
# Añadir las lineas al fstab
l_file_tmp=$(mktemp)
cat /etc/fstab > "$l_file_tmp"
echo ""
echo "# Disco WD - /juanp"
echo "//192.168.0.158/juanp /mnt/wd/juanp cifs credentials=/root/.credenciales,gid=juanp,uid=juanp,file_mode=0770,dir_mode=0770,iocharset=utf8,rw 0 0"
echo ""
echo "# Disco WD - /marisa"
echo "//192.168.0.158/marisa /mnt/wd/marisa cifs credentials=/root/.credenciales,gid=juanp,uid=juanp,file_mode=0770,dir_mode=0770,iocharset=utf8,rw 0 0"
echo ""
echo "# Disco WD - /multimedia"
echo "//192.168.0.158/multimedia /mnt/wd/multimedia cifs credentials=/root/.credenciales,gid=juanp,uid=juanp,file_mode=0770,dir_mode=0770,iocharset=utf8,rw 0 0"
echo ""
echo "# Disco WD - /invitado"
echo "//192.168.0.158/invitado /mnt/wd/invitado cifs credentials=/root/.credenciales,gid=juanp,uid=juanp,file_mode=0770,dir_mode=0770,iocharset=utf8,rw 0 0"
# if [[ "$l_nextcloud" -eq 1 ]]; then
# echo ""
# echo "# NextCloud opsone"
# echo "https://shared02.opsone-cloud.ch/remote.php/dav/files/favoritos.jp@gmail.com/ /mnt/nextcloud_jp/nc_opsone davfs user,rw,noauto 0 0"
# fi
} >> "$l_file_tmp"
echo "Copiando nuevo /etc/fstab"
if ! sudo mv "$l_file_tmp" /etc/fstab; then
rm -f "$l_file_tmp"
_error "No se ha podido incluir las lineas en /etc/fstab (1)"
exit 1
else
rm -f "$l_file_tmp"
_fin_copia
fi
# Asignando propietario y permisos a /etc/fstab
echo "Asignando propietario y permisos a /etc/fstab"
if ! sudo chmod 644 /etc/fstab &&
sudo chown root:root /etc/fstab; then
_error "2 No se ha podido incluir las lineas en /etc/fstab"
exit 1
else
echo "Actualizado /etc/fstab"
sudo ls -ls /etc/fstab
_fin_copia
fi
# Copiar el archivo de credenciales a /root y asignarle los permisos y propietarios
# adecuados.
echo "Copiando y asignando properatio de /.credenciales"
if ! sudo cp ./datos/fstab/.credenciales /root/.credenciales &&
sudo chonw root:root /root/.credenciales; then
_error "No se ha podido copiar/configurar el archivo de credenciales"
exit 1
else
echo "Configurado archivo de credenciales"
sudo ls -ls /root/.credenciales
_fin_copia
fi
# Configurar cuenta nextcloud
# if [[ "$l_nextcloud" -eq 1 ]]; then
# _crear_folder "$HOME"/.davfs2
# echo "Copiando y asignando propietario y premisos a secrets"
# if ! cp ./datos/nextcloud/davfs2/secrets "$HOME"/.davfs2 &&
# chown juanp:juanp "$HOME"/.davfs2/secrets &&
# chmod 600 "$HOME"/.davfs2/secrets &&
# sudo usermod -aG davfs2 juanp; then
# _error "Al configurar la cuenta nextcloud"
# else
# _fin_copia
# echo "Incluyendo en croontab la tarea de sincronizacion"
# (crontab -l; echo "@reboot bash $HOME/script/manto/t_sync_nextcloud.sh";) | awk '!x[$0]++' | crontab -
# if [ ! $? -eq 0 ];then
# _error "Al incluir linea en crontab"
# else
# _fin_copia
# fi
# fi
# fi
fi
# Configurar firma digital
function _configurar_firma_digital(){
echo "-------------------------------------------------------------------------------"
echo "Instalación y configuración de la Firma Digital"
echo ""
echo "Leer información adicional en SO - Guía instalación Firma digital"
echo ""
if _yes_no "¿Instalar y configurar la firma digital?" ""; then
if [[ ! -f "$g_libpkcs11_dnie" ]]; then
echo ""
echo "No se encuentra el archivo $g_libpkcs11_dnie"
echo "Este archivo es necesario para configurar la firma digital"
if ! _yes_no "¿Continuar?" ""; then
exit 1
fi
fi
if [[ ! -f "$g_autofirma" ]]; then
echo ""
echo "No se encuentra el archivo $g_autofirma"
echo "Este archivo es necesario para configurar la firma digital"
if ! _yes_no "¿Continuar?" ""; then
exit 1
fi
fi
_install_pk "pcsc-tools"
_install_pk "pcsc-tools"
_install_pk "pcscd"
_install_pk "pinentry-gtk2"
_install_pk "libccid"
if ! _check_installed "libpkcs11-dnie"; then
echo "-------------------------------------------------------------------------------"
echo "Instalando libpkcs11-dnie"
echo ""
if ! sudo dpkg -i "$g_libpkcs11_dnie"; then
_error "Firma electronica - No se ha instalado correctamente el paquete libpkcs11-dnie"
else
_fin_copia
fi
fi
echo "-------------------------------------------------------------------------------"
echo "Instalando / Configurando Java"
echo ""
if ! java -version &> /dev/null; then
_install_pk "default-jre"
_install_pk "libnss3-tools"
else
java -version
echo ""
echo "Es necesario que la versión de java sea la 8 o superior"
if ! _yes_no "¿Continuar?" ""; then
echo "Proceso cancelado"
exit 1
fi
_fin_copia
fi
echo "-------------------------------------------------------------------------------"
echo "Instalando AutoFirma"
echo ""
if ! _check_installed "autofirma"; then
if ! sudo dpkg -i "$g_autofirma"; then
_error "No se ha instalado correctamente AutoFirma"
else
_fin_copia
fi
else
echo "AutoFirma ya estaba instalada"
dpkg -l | grep autofirma
_fin_copia
fi
echo ""
echo "Sera necesario reiniciar el sistema."
echo "Tras ello comprobar el funcionamiento:"
echo " .- Lector: pcsc_scan"
echo " .- Fima digital -> Ver SO - Guía instalación Firma digital"
echo ""
read -n1 -p "Pulsa un tecla para continuar ..."
echo "->"
fi
# Configurar FireFox
function _configurar_firefox() {
local l_origen
local l_destino
l_origen="./firefox/mozilla.tar.gz"
l_destino="$HOME/.mozilla"
echo "-------------------------------------------------------------------------------"
echo "Configuración de FireFox"
echo ""
echo "La versión de FireFox instalada es : $(firefox -v)"
echo "La versión de la configuración guardada es: $(cat ./firefox/versionfirefox.txt)"
echo ""
if _yes_no "¿Restaurar la configuración guardada previamente?" ""; then
# backup configuracion original de FireFox
if [ -d "$HOME"/.mozilla ]; then
echo "Creando copia de la configuración actual de FireFox ..."
if ! mv "$HOME"/.mozilla "$HOME"/.mozilla_backup; then
_error " No se ha podido crear la copia de la configuración original de FireFox"
else
echo "Se ha renombrado $HOME/.mozilla como $HOME/.mozilla_backup"
fi
fi
echo ""
_tar_descomprimir "$l_origen" "$l_destino"
else
echo "Ver archivo de instalación para configurar FireFox"
fi
echo ""
# Instalar aplicaciones AppImage
function _instalar_apps_appimage() {
local l_origen
local l_destino
l_origen="./appimage"
l_destino="$g_folder_appimage"
echo "-------------------------------------------------------------------------------"
echo "Las aplicaciones AppImage a instalar son las siguientes:"
echo ""
ls -1l "$l_origen"
echo ""
echo "Se copiarán en: $l_destino"
echo ""
if _yes_no "¿Instalar las aplicaciones AppImage?" ""; then
_copy_full_folder "$l_origen" "$l_destino"
if ! sudo chmod 770 "$l_destino"/* ;then
_error "No se han podido asignar los premisos adecaudos a laa AppImages de $l_destino"
fi
fi
# Instalar software flatpak
function _install_flatpak(){
echo "-------------------------------------------------------------------------------"
echo "Instalando $1 ..."
if ! flatpak install -y "$1" &> /dev/null; then
echo ""
_error " en la instalación: flatpak install -y $1"
echo ""
exit 1
fi
function _install_packages_flatpak(){
local l_file_packages="$1"
local l_package=""
# local -n l_array=$1
# local l_i
# for l_i in "${l_array[@]}" ; do
# _install_flatpak "$l_i"
# done
while read -r l_package; do
_install_flatpak "$l_package"
done < "$l_file_packages"
function _list_packages_flatpak(){
local l_file_packages="$1"
local l_package=""
# local -n l_array=$1
# local l_i
# for l_i in "${l_array[@]}" ; do
# echo "$l_i"
# done
while read -r l_package; do
echo "$l_package"
done < "$l_file_packages"
function _instalar_paquetes_flatpak() {
echo "-------------------------------------------------------------------------------"
echo "Los paquete de software flatpak a instalar son los siguientes:"
echo ""
_list_packages_flatpak $g_file_packages_flatpak
if _yes_no "¿Instalar paquetes de software de flatpak?" ""; then
_install_packages_flatpak $g_file_packages_flatpak
fi
# Configurar flatpak
# Requiere la instalación previa de los paquetes:
# .- flatpak
# .- gnome-software-plugin-flatpak
function _config_flatpak(){
echo "-------------------------------------------------------------------------------"
echo ""
if _yes_no "¿Configurar flatpak?" ""; then
if ! sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo; then
_error " No se ha configurado flatpak correctamente"
fi
_fin_copia
fi
# Instalar paquetes de software
function _install_pk(){
echo "-------------------------------------------------------------------------------"
echo "Instalando $1"
echo ""
if ! sudo apt -y install "$1"; then
echo ""
_error " en la instalción: apt install $1"
echo ""
exit 1
fi
function _install_packages(){
local l_file_packages="$1"
local l_package=""
# local -n l_array=$1
# local l_i
# for l_i in "${l_array[@]}" ; do
# _install_pk "$l_i"
# done
while read -r l_package; do
_install_pk "$l_package"
done < "$l_file_packages"
function _list_packages(){
local l_file_packages="$1"
local l_package=""
# local -n l_array=$1
# local l_i
# for l_i in "${l_array[@]}" ; do
# echo "$l_i"
# done
while read -r l_package; do
echo "$l_package"
done < "$l_file_packages"
function _instalar_paquetes_software(){
echo "-------------------------------------------------------------------------------"
echo "Los paquete de software a instalar son los siguientes:"
echo ""
_list_packages $g_file_packages
echo ""
if _yes_no "¿Instalar paquetes de software?" ""; then
_install_packages $g_file_packages
fi
# Actualizar el Sistema Operativo
function _update_SO(){
if _yes_no "¿Iniciar la actualización del Sistema Operativo?" ""; then
# Actualizar las listas de paquetes de los repositorios
echo "-------------------------------------------------------------------------------"
echo "Actualizando las listas de paquetes de los repositorios."
echo ""
if ! sudo apt update; then
echo ""
_error " en la ejecución de: apt update"
echo ""
exit 1
else
_fin_copia
fi
# Instalar las versiones más recientes de todos los paquetes
echo "-------------------------------------------------------------------------------"
echo "Instalando las versiones más recientes de todos los paquetes"
echo "actualmente instalados en el sistema"
echo ""
if ! sudo apt upgrade -y; then
echo ""
_error " en la ejecución de: apt upgrade -y"
echo ""
exit 1
else
_fin_copia
fi
# Eliminar paquetes innecesarios."
echo "-------------------------------------------------------------------------------"
echo "Eliminando paquetes innecesarios."
echo ""
if ! sudo apt autoremove; then
echo ""
_error " en la ejecución de: apt autoremove"
echo ""
exit 1
else
_fin_copia
fi
fi
# Copia de información automática
function _copia_automatica_datos(){
local l_origen
local l_destino
local l_file
# Copia de archivos
# - Copiar este script
l_destino="$g_folder_copy"
l_file="$(dirname "$(readlink -f "$0")")/$0"
_copy_file "$l_file" "$l_destino" 0
# - Copiar /etc/fstab
l_destino="$g_folder_copy/datos/fstab"
l_file="/etc/fstab"
_copy_file "$l_file" "$l_destino" 0
# - Copiar /root/.credenciales
l_destino="$g_folder_copy/datos/fstab"
l_file="/root/.credenciales"
_copy_file "$l_file" "$l_destino" 1
# - Copiar "$HOME"/.bash_history
l_destino="$g_folder_copy/datos/files"
l_file="$HOME"/.bash_history
_copy_file "$l_file" "$l_destino" 0
# - Copia /.config/user-dirs.dirs
l_destino="$g_folder_copy/datos/config"
l_file="$HOME"/.config/user-dirs.dirs
_copy_file "$l_file" "$l_destino" 0
# - Copia "$HOME"/.davfs2/secrets
# Información de configuracion para conectar la cuenta de nextcloud
# l_destino="$g_folder_copy/datos/nextcloud/davfs2"
# l_file="$HOME"/.davfs2/secrets
# _copy_file "$l_file" "$l_destino" 0
# - Copiar información de crontab
l_destino="$g_folder_copy/datos/crontab"
l_file="$HOME/crontab.txt"
crontab -l > "$l_file"
_copy_file "$l_file" "$l_destino" 0
rm "$l_file"
# - Copia configuración rclone
l_destino="$g_folder_copy/datos/rclone"
l_file="$HOME"/.config/rclone/rclone.conf
_copy_file "$l_file" "$l_destino" 0
# Copia de directorios
# -Información de Shotwell
# Datos Shotwell $HOME/.local/share/shotwell/
l_destino="$g_folder_copy/datos/shotwell/datos"
l_origen="$HOME/.local/share/shotwell"
_copy_full_folder "$l_origen" "$l_destino"
# Cache Shotwell $HOME/.cache/shotwell/thumbs
l_destino="$g_folder_copy/datos/shotwell/cache/thumbs.tar.gz"
l_origen="$HOME/.cache/shotwell/thumbs"
_tar_comprimir "$l_destino" "$l_origen"
# - Directorio /.config/autostart
l_destino="$g_folder_copy/datos/config/autostart"
l_origen="$HOME/.config/autostart"
_copy_full_folder "$l_origen" "$l_destino"
# - Directorio de los archivos de contraseñas de KeePassXC"
l_destino="$g_folder_copy/datos/keepassxc"
l_origen="$HOME/Documentos/dock_xc"
_copy_full_folder "$l_origen" "$l_destino"
# - Directorio de las contraseñas /home/juanp/.gnupg
l_destino="$g_folder_copy/datos/gnupg"
l_origen="$HOME/.gnupg"
_copy_full_folder "$l_origen" "$l_destino"
# - Directorio de /home/juanp/.local/share/applications
l_destino="$g_folder_copy/datos/applications"
l_origen="$HOME/.local/share/applications"
_copy_full_folder "$l_origen" "$l_destino"
# - Directorio aplicaciones AppImage: Tutanota
l_destino="$g_folder_copy/appimage"
l_origen="$g_folder_appimage"
_copy_full_folder "$l_origen" "$l_destino"
# Directorios con comprimidos TAR
# - Directorio de los iconos que se están usando
l_destino="$g_folder_copy/iconos/iconos.tar.gz"
l_origen="$HOME/.local/share/icons"
_tar_comprimir "$l_destino" "$l_origen"
# - Configuración de Transmission
l_destino="$g_folder_copy/transmission/transmission.tar.gz"
l_origen="$HOME/.config/transmission"
_tar_comprimir "$l_destino" "$l_origen"
# - Directorio de Scripts
l_destino="$g_folder_copy/script/scripts.tar.gz"
l_origen="$g_folder_scripts_origen"
_tar_comprimir "$l_destino" "$l_origen"
# Directorio de pagina web personal incluidas las guias
l_destino="$g_folder_copy/firefox/personalpage.tar.gz"
l_origen="$HOME/Documentos/personalpage"
_tar_comprimir "$l_destino" "$l_origen"
# Información de FireFox ./.mozilla
l_destino="$g_folder_copy/firefox/mozilla.tar.gz"
l_origen="$HOME/.mozilla"
_tar_comprimir "$l_destino" "$l_origen"
# Guardar la verisión instalada de FireFox
l_destino="$g_folder_copy/firefox/versionfirefox.txt"
firefox -v > "$l_destino"
# Información general
# Información de los discos duros proporcionada por lsblk -f -m y df -h
l_destino="$g_folder_copy/discos"
_crear_folder "$l_destino"
_ini_copia "Discos" "$l_destino"
echo "lsblk -f -m"
echo "-----------"
echo ""
if ! lsblk -f -m ;then
_error " al copiar información en $l_destino"
fi
echo ""
echo ""
echo ""
echo "df -h"
echo "-----------"
echo ""
df -h
} > "$l_destino/info_discos.txt"
_fin_copia
# Información de Crontab
l_destino="$g_folder_copy/datos/config/crontab"
_crear_folder "$l_destino"
_ini_copia "Crontab" "$l_destino"
if ! crontab -l > "$l_destino/crontab.txt"; then
_error "No se ha podido copiar la información de Crontal en $l_destino/crontab.txt"
fi
_fin_copia
# Copia de información manual
function _copia_manual_datos(){
# Información de FireFox
l_destino="$g_folder_copy/firefox"
_crear_folder "$l_destino"
_ini_copia "FireFox" "$l_destino"
echo " ..- Hacer un backup de los marcadores de FireFox y copiarlo en $l_destino"
echo ""
if ! _yes_no "¿Continuar?" "";then
exit 1
fi
# Información de Evolution
l_destino="$g_folder_copy/evolution"
_crear_folder "$l_destino"
_ini_copia "Evolution" "$l_destino"
echo " ..- Crear copia de respaldo en $l_destino"
echo " Archivo - Respaldar datos de Evolution"
echo ""
if ! _yes_no "¿Continuar?" "";then
exit 1
fi
# Información de Firma electrónica
l_destino="$g_folder_copy/firma_electronica"
_crear_folder "$l_destino"
_ini_copia "Firma electronica" "$l_destino"
echo " ..- Ver en guías linux: SO - Guía instalación Firma digital (Versión 1.05)"
echo ""
echo " Descargar:"
echo " ...- Los módulos criptográficos PKCS#11"
echo " https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1112"
echo " ...- Ultima versión de la aplicacion autofirma"
echo " https://firmaelectronica.gob.es/Home/Descargas.html"
echo ""
echo " Descomprimir el archivo zip de autofiram y tomar nota del paquete deb que se "
echo " va a instalar."
if ! _yes_no "¿Continuar?" "";then
exit 1
fi
# Información controladores impresoras
l_destino="$g_folder_copy/impresoras"
_crear_folder "$l_destino"
_ini_copia "Impresoras" "$l_destino"
echo " Descargar:"
echo " ...- Samsung ML-1685W"
echo " https://support.hp.com/us-en/drivers/selfservice/samsung-ml-1865-laser-printer-series/19134664"
echo ""
if ! _yes_no "¿Continuar?" "";then
exit 1
fi
# Información de distribución discos duros
l_destino="$g_folder_copy/discos"
_crear_folder "$l_destino"
_ini_copia "Distribución discos duros" "$l_destino"
echo " ..- Copiar captura de pantalla de la distribución de los disco duros con GParted en $l_destino"
echo ""
if ! _yes_no "¿Continuar?" "";then
exit 1
fi
# Información de la configuración del editor GEdit
l_destino="$g_folder_copy/editor"
_crear_folder "$l_destino"
_ini_copia "Configuración del editor GEdit" "$l_destino"
echo " ..- Copiar captura de pantalla de la configuración de GEdit en $l_destino"
echo ""
if ! _yes_no "¿Continuar?" "";then
exit 1
fi
# Información Instalación de VirtualBox
l_destino="$g_folder_copy/virtualbox"
_crear_folder "$l_destino"
_ini_copia "Instalición VirtualBox" "$l_destino"
echo " Descargar:"
echo " ...- VirtualBox y VM VirtualBox Extension Pack"
echo " https://www.virtualbox.org/"
echo ""
if ! _yes_no "¿Continuar?" "";then
exit 1
fi
# Restaurar información copiada
function _restaurar_datos(){
# Restaurar archivos
# Archivo "$HOME"/.bash_history
echo "------------------------------------------------------------------------"
l_file="./datos/files/.bash_history"
l_destino="$g_folder_home"
_copy_file "$l_file" "$l_destino" 0
# Restaurar configuración rclone
echo "------------------------------------------------------------------------"
if _yes_no "¿Restaurar configuración de rclone?" ""; then
l_file="./datos/rclone/rclone.conf"
l_destino="$g_folder_home/.config/rclone"
_copy_file "$l_file" "$l_destino" 0
if ! sudo chown -R "$USER":"$USER" "$l_destino/rclone.conf"; then
_error "Asignando propietarios a $l_destino/rclone.conf"
elif ! sudo chmod -R 600 "$l_destino/rclone.conf"; then
_error "Asignando permisos a $l_destino/rclone.conf"
fi
_crear_folder "$HOME/nextcloud"
_crear_folder "$HOME/dropbox"
fi
# Restaurar directorios
# Información de Shotwell
echo "------------------------------------------------------------------------"
if _yes_no "¿Restaurar información de Shotwell?" ""; then
# Datos Shotwell $HOME/.local/share/shotwell/
l_origen="./datos/shotwell/datos"
l_destino="$g_folder_home/.local/share/shotwell"
_copy_full_folder "$l_origen" "$l_destino"
# Cache Shotwell $HOME/.cache/shotwell/thumbs
l_origen="./datos/shotwell/cache/thumbs.tar.gz"
l_destino="$g_folder_home/.cache/shotwell/thumbs"
_tar_descomprimir "$l_origen" "$l_destino"
fi
# Directorio /.config/autostart
echo "------------------------------------------------------------------------"
if _yes_no "¿Copiar a HOME/.config/autostart?" ""; then
l_origen="./datos/config/autostart"
l_destino="$g_folder_home/.config/autostart"
_copy_full_folder "$l_origen" "$l_destino"
fi
# Directorio de los archivos de contraseñas de KeePassXC"
echo "------------------------------------------------------------------------"
if _yes_no "¿Restaurar archivos de contraseñas KeepassXc?" ""; then
l_origen="./datos/keepassxc"
l_destino="$g_folder_home/Documentos/dock_xc"
_copy_full_folder "$l_origen" "$l_destino"
fi
# Directorio de las contraseñas /home/juanp/.gnupg
echo "------------------------------------------------------------------------"
if _yes_no "¿Restaurar las contraseñas de SeaHorser ./gnupg?" ""; then
echo "------------------------------------------------------------------------"
l_origen="./datos/gnupg"
l_destino="$g_folder_home/.gnupg"
_copy_full_folder "$l_origen" "$l_destino"
# Asignar propietario a la carpeta /.gnupg y a su contenido
# Derechos de acceso correctos de la carpeta .gnupg, subcarpetas y contendio:
if ! chown -R "$USER" "$HOME"/.gnupg/ &&
find "$HOME"/.gnupg -type f -exec chmod 600 {} \; &&
find "$HOME"/.gnupg -type d -exec chmod 700 {} \; ; then
_error "No ha podido asignarse propietario y permisos correctos a $HOME/.gnupg"
fi
fi
# Directorio de /home/juanp/.local/share/applications
echo "------------------------------------------------------------------------"
if _yes_no "¿Restaurar /.local/share/applications?" ""; then
l_origen="./datos/applications"
l_destino="$g_folder_home/.local/share/applications"
_copy_full_folder "$l_origen" "$l_destino"
fi
# Directorios con comprimidos TAR
# Directorio de los iconos que se están usando
echo "------------------------------------------------------------------------"
if _yes_no "¿Restaurar Iconos?" ""; then
l_origen="./iconos/iconos.tar.gz"
l_destino="$g_folder_home/.local/share/icons"
_tar_descomprimir "$l_origen" "$l_destino"
fi
# Directorio de Scripts
echo "------------------------------------------------------------------------"
if _yes_no "¿Restaurar los scripts?" ""; then
l_origen="./script/scripts.tar.gz"
l_destino="$g_folder_home$g_folder_scripts_destino"
_tar_descomprimir "$l_origen" "$l_destino"
if echo "$PATH" | grep $p &> /dev/null;then
echo ""
else
echo ""
echo "export PATH="'$PATH'":$l_destino"
} >> "$g_folder_home"/.bashrc
fi
fi
# Directorio configuración Transsmission
echo "------------------------------------------------------------------------"
if _yes_no "¿Restaurar la configuración de Transmission ?" ""; then
l_origen="./transmission/transmission.tar.gz"
l_destino="$g_folder_home$g_folder_scripts_destino"
_tar_descomprimir "$l_origen" "$l_destino"
fi
# Directorio de pagina web personal incluidas las guias
echo "------------------------------------------------------------------------"
if _yes_no "¿Restaurar la Página Web Personal?" ""; then
l_origen="./firefox/personalpage.tar.gz"
l_destino="$g_folder_home/Documentos/personalpage"
_tar_descomprimir "$l_origen" "$l_destino"
fi
# Menú script
# Tareas posteriores a la instalación
function _tareas_posteriores(){
clear
echo "-----------------------------------------------------------------------------------------"
echo ""
echo " Script de instalación y configuración del Sistema Operativo"
echo " Sistema Operativo: $g_app_so"
echo " Versión script: $g_app_version ($g_app_fecha)"
echo ""
echo "-------------------------------------------------------------------------------"
echo ""
if [[ ! -d "$g_folder_home" ]]; then
echo "Error: No existe el directorio $g_folder_home"
g_fin_script=1
exit 0
fi
if [[ ! "$g_folder_home" = "$HOME" ]]; then
_error "El directorio donde se instalara la información no es $HOME"
fi
if ! _yes_no "¿Iniciar la reatauración de la información en $g_folder_home ?" ""; then
g_fin_script=1
exit 0
fi
# Actualizar el Sistema operativo
_update_SO
# Activar el cortafuegos
echo "------------------------------------------------------------------------"
if _yes_no "¿Activar el corta fuegos?" ""; then
# Comprobar que están instalados los paquetes necesarios
if ! _check_installed ufw; then
_install_pk "ufw"
fi
if ! sudo ufw enable; then
_error " al activar el corta fuegos con el cli [sudo ufw enable]"
else
_fin_copia
fi
fi
# Instalar los paquetes de software
_instalar_paquetes_software
# Restaura información
_restaurar_datos
# Configurar FireFox
_configurar_firefox
# Configurar la Firma Digital
_configurar_firma_digital
# Configurar flatpak
_config_flatpak
# Instalar el software de flatpak
_instalar_paquetes_flatpak
# Instalar aplicaciones AppImage
_instalar_apps_appimage
# Configurar fstab
_config_fstab
# Instalar impresora
_instalar_impresora_ML1865
# Finalizar
echo "-------------------------------------------------------------------------------"
echo "Proceso finalizado correctamente"
echo " "
echo " En ../datos/crontab/crontab.txt se encuentran las líneas a incluir en "
echo " crontrab cuando se hayan copiado todos los documentos al ordendor."
echo ""
echo " ADVERTENCIA: Incluye la línea para ejecutar al inicio la sincronización con el"
echo " NAS WD."
echo " En el PC ha de estar toda la información, si no la sincronizacón"
echo " eliminará toda la que haya en el WD NAS"
g_fin_script=1
exit 0
# Tareas previas a la instalación
function _tareas_previas(){
clear
echo "-------------------------------------------------------------------------------"
echo ""
echo " Script de instalación y configuración del Sistema Operativo"
echo " Sistema Operativo: $g_app_so"
echo " Versión script: $g_app_version ($g_app_fecha)"
echo ""
echo " La copia de la información del SO se realizará en:"
echo " >> $g_folder_copy"
echo "-------------------------------------------------------------------------------"
echo ""
# Comprobar si existe el directorio donde se realizará la copia
if [[ ! -d "$g_folder_copy" ]]; then
echo " El directorio donde se va a realizar la copia no existe."
if _yes_no "¿Se crea el directorio?" ""; then
_crear_folder "$g_folder_copy"
else
echo ""
echo "Error: No existe el directorio $g_folder_copy"
exit 1
fi
fi
# Tareas previas
_copia_automatica_datos
_copia_manual_datos
# Finalizar
g_fin_script=1
exit 0
# Menú inicial de script
function _menu_inicial(){
clear
echo "-----------------------------------------------------------------------------------------"
echo ""
echo " Script de instalación y configuración del Sistema Operativo"
echo " Sistema Operativo: $g_app_so"
echo " Versión script: $g_app_version ($g_app_fecha)"
echo ""
echo " 1.- Tareas previas a la instalación."
echo " 2.- Tareas posteriores a la instalación."
echo " 3.- Crear copia de seguridad de $HOME."
echo ""
read -r -N1 -p " Selecciona opción [1/2/3] " opcion
echo ""
case $opcion in
"1")
echo 1
_tareas_previas
"2")
_tareas_posteriores
"3")
_backup_home
echo "Finalizado"
g_fin_script=1
exit 0
esac
# INICIO DEL SCRIPT
# Comprobaciones previas
# Comprobar si el usuario está incluido en grupo sudo
if cut -d: -f1,4 /etc/group | grep sudo | grep $USER; then
echo "OK: Usuario $USER está incluido el en grupo sudo"
else
echo ""
echo " Usuario $USER no está incluido en el grupo sudo."
echo " Para incluir a $USER en el grupo sudo (administradores) ejecutar:"
echo " su [enter]"
echo " sudo usermod -aG sudo $USER"
echo " sudo shutdown -r now"
echo ""
exit 1
fi
# Presentar menú inicial
_menu_inicial