Usar la versión oficial de Debian
¿Cómo crear un USB con la live ISO?
Distribución de los discos duros
Instalar aplicaciones manualmente
Aplicaciones al inicio (Crontab)
Configurar cuenta online NextCloud
Incluir usuario en el grupo sudo (*)
e) Scrip de instalación de Debian
.- DropBox (Comprobar)
.- Sinc_NextCloud (Comprobar)
.- Comprobar la maquina VM VirtualBox XP-programacion
Portátil Thosiba:
F12 -> Boot Menu
F2 -> Bios Setup
IMPORTANTE: Depués de actualizar / Reinstalar, no realizar una sincronización
hasta haber finalizalizado de configurar correctamente el equipo.
Si la hacemos antes de la cuenta, el sincronizador eliminará
arhivos/carpetas que no encuentre en la nueva instalación.
Con el script de instalación guardar la información necesaria en un USB.
Para realizar la instalación hay dos opciones:
.- Usar la versión oficial de Debian.
.- Usar una versión no oficial con los repositorios non-free incluidos.
En esta ocasión se empleará la versión non-free, con ello se instalarán.
Durante la instalación se informará del los paquete privativos que no se en-
cuentran, habrá que tomar nota para instalarlos posteriormente.
En el caso del Asus son los de la tarjeta wifi, y también se pueden obtener
con el siguiente comando:
lspci | grep Wireless
Dos opciones: buscar los paquete o bien activar los repositorios non-free y
contrib e instalarlos desde synaptic.
En synaptic instalar los paquetes:
firmware-ipw2x00
firmware-intelwimax
firmware-iwlwifi
Desde el teminal:
sudo apt-get install firmware-ipw2x00 &&
sudo apt-get install firmware-intelwimax &&
sudo apt-get install firmware-iwlwifi
link=https://geekland.eu/instalar-drivers-tarjeta-de-red-wifi-debian/
.- Desde el Terminal:
sudo dd if=xxxx of=xxxxx
sudo dd if=/home/Escritorio/kaos.iso of=/dev/sdX
¡¡¡ OJO !!! : TENER CUIDADO CON EL DESTINO
.- Con Fedora Media Writer (flatpak) / Raspberry Pi Imager
Durante la recopilación de información se guarda de forma automática la info-
de los discos duros generadas por los comandos siguientes un archivo.
lsblk -f -m
df -h
Archivo: ./discos/info_discos.txt
También se hace una copia de la información proporcionada por GParted de los
discos:
.- Disco SSD 250 GB: según imágen disco_250GB.png
.- Disco HHD 500 GB: según imágen disco_500GB.png
Emplear de flatpak ha incrementado el uso del raíz (/) por lo que se va incre-
mentar el espacio disponible pasa a 60 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:
.- Actualizar el sistema operativo.
.- Instalar aplicaciones
..- Paquete
..- Flatpak
..- AppImage
.- Configuraciones.
.- 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 (+)
.- DropBox:
Dos opciones:
a) Instalación normal:
Instalar desde página DropBox.
link=https://www.dropbox.com/install-linux
Descargar paquete e instalar con Sotfware
Ejecutar la apliación dropbox instalada, que será la que realice la con-
figuración.
b) Instalar como un paquete de flatpak
Desde el centro de software o desde la termial.
flatpak instal com.dropbox.Client
.- Instalar Autofirma:
Ver "SO - Guía instalación Firma digital"
.- Configurar FireFox
Dos opciones:
..- Clonar la configuración anterior.
Se hace desde el script
..- Realizar una configuración completa.
Ver guía sobre la instalación e información adicional.
.- Configurar extensiones:
Dash to dock
Time ++ (Lista de tareas sincronizadas con el movil)
Ubicación archivo de tareas: /home/juanp/Dropbox/Tareas
Las extensiones se instalan desde FireFox instalando la extensión pro-
puesta en https://extensions.gnome.org : Integración con GNOME Shell
.- Activar el cortafuegos: gufw
Se hace desde el script
link=https://geekland.eu/configurar-el-firewall-gufw/
.- Configurar escritorio
..- Configurar el tema: Retoques - Apariencia
.- Nautilus preferencias
Abrir elementos con una sola pulsación
Archivos ejecutables: Preguntar qué hacer
Listas: Tipo detallado tras el tamaño
.- Configurar Editor
Según imagen de configuración guardadas.
.- Configurar Contraseñas - SeaHorse
Copiar los archivos guardados en gnupg en home/.gnupg
.- Configurar Transmission
..- Lista de bloqueo:
http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz
link=https://www.iblocklist.com/lists
..- Modo de cifrado: Requerir cifrado
.- 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.
(Ver información adicional - impresoras)
.- Configurar cuentas online
..- NextCloud: El script realiza parte de la configuración.
.- Configurar y restaurar Evolution
Incluir en crontab (sudo crontab -e):
@reboot bash /home/juanp/script/manto/t_limpiar.sh
@reboot bash /home/juanp/script/manto/t_sync_home.sh
@reboot bash /home/juanp/script/manto/t_sync_home_wd.sh
@reboot bash /home/juanp/script/manto/t_compress_importan.sh
@reboot bash /home/juanp/script/manto/t_sync_nextcloud.sh
Conviene hacer una copia de crontab antes de formatear.
IMPORTANTE: Depués de actualizar / Reinstalar : No realizar una sincroniza-
ción hasta haber finalizalizado 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
Con esta cuenta se hacen dos cosas:
..- Configurar el acceso mediante "Cuentas OnLine"
URL servidor: https://shared02.opsone-cloud.ch
Usuario y clave de acceso en Keeypass
..- Configurar una copia de seguridad de su contenido -archivos- en
una carpeta local. De los contactos y el calendarios no se hace
copia de seguridad.
...- Instalar davfs para el acceso con el protocolo WebDAV a la
cuenta de nextcloud e incluir al usuario en grupo de usuarios
autorizados a usarlo.
sudo apt install davfs2
sudo usermod -a -G davfs2 juanp
(Lo hace el script de instalación)
...- Copiar el archivo de configuracion para conectar la cuenta de
nextcloud
cp -r /media/juanp/6BC8-7F1A/datos/nextcloud/davfs2/secrets /home/juanp/.davfs2
chown juanp:juanp $HOME/.davfs2/secrets
chmod 600 $HOME/.davfs2/secrets
Este archivo secreto debe ser legible y escribible sólo por el
propietario (modo 0600). Los dos últimos comnados convierten a
juanp en el propietario y le asigan los premisos adecuados.
...- Configurar un cron que ejecute al inicio de sesión
bash /home/juanp/script/manto/t_sync_nextcloud.sh
Para realizar la sincronización es necesario montar la cuenta
y para ello se incluirá una linea en el fstab que crea el pun-
to de montaje pero sin montarlo; será en el scrip de sincro-
nización donde se monte, se haga la copia y por último se
desmonte.
Información adicional sobre nextcloud
Información adicional sobre davfs2
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
...- nextcloud_jp NextCloud
....- nc_opsone shared02.opsone-cloud.ch
.....- /mnt/nextcloud_jp/nc_opsone
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 &&
sudo mkdir /mnt/nextcloud_jp &&
sudo mkdir /mnt/nextcloud_jp/nc_opsone &&
sudo chown -R juanp:juanp /mnt/nextcloud_jp &&
sudo chmod -R 770 /mnt/nextcloud_jp
.- 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.
En la actualidad son las líneas necesarias para montar el HDD, algunas car-
petas del NAS WD y el servidor nextcloud en shared02.opsone-cloud:
# /mnt/hdd disco duro mecanico was on /dev/sdb6
UUID=2a048ea0-e204-4f50-b532-3cb27fd291ee /mnt/hdd ext4 defaults 0 2
# 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
# NextCloud opsone
https://shared02.opsone-cloud.ch/remote.php/dav/files/favoritos.jp@gmail.com/ /mnt/NextCloud davfs user,rw,noauto 0 0
Editar fstab:
sudo nano /etc/fstab
Para probar si se hace bien usar:
sudo umount -a
sudo mount -a
Cerrar y abrir sesion.
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.
link=http://www.samsung.com/es/support/model/ML-1865/SEE
(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 MG2950:
Descomprimir los controladores
Ejecutar el instalador
sudo sh install.sh
De ser necesario instalar manualmente el paquete libcupsimage2
sudo apt-get install libcupsimage2
Se puede acceder a http://localhost:631/admin buscar y configurar las
impresoras.
..- 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
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'
link=https://www.zeppelinux.es/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 termial 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/)
...- Dash to dock /
...- Time ++ / Todo.txt
(Lista de tareas sincronizadas con el movil)
Ubicación: /home/juanp/dropbox/tareas
..- 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 verió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.
Tras configurar el fstab.
Editar el archivo de configuración de las carpetas personales:
nano ~/.config/user-dirs.dirs
Sustituir:
#XDG_MUSIC_DIR="$HOME/Música"
#XDG_PICTURES_DIR="$HOME/Imágenes"
#XDG_VIDEOS_DIR="$HOME/Vídeos"
#XDG_DOWNLOAD_DIR="$HOME/Descargas"
Por:
XDG_MUSIC_DIR="/mnt/hdd/home_juanp/Música"
XDG_PICTURES_DIR="/mnt/hdd/home_juanp/Imágenes"
XDG_VIDEOS_DIR="/mnt/hdd/home_juanp/Vídeos"
XDG_DOWNLOAD_DIR="/mnt/hdd/home_juanp/Descargas"
Crear los accesos directos en /home/juanp; eliminar antes -si existen- las
carpetas homóninmas.
ln -s /mnt/hdd/home_juanp/programacion /home/juanp &&
ln -s /mnt/hdd/home_juanp/biblioteca_calibre /home/juanp &&
ln -s /mnt/hdd/home_juanp/Vídeos /home/juanp &&
ln -s /mnt/hdd/home_juanp/Imágenes /home/juanp &&
ln -s /mnt/hdd/home_juanp/Descargas /home/juanp &&
ln -s /mnt/hdd/home_juanp/Música /home/juanp
Reiniciar para que tenga efecto las modificaciones si es necesario.
#!/bin/bash
# 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á automatizadao y otra parte requiere que la infor-
# mación la cree el usuario.
# Variables globales de gestión interna (no configuración)
# Número de errores que se han producidido
# Controla si ha llegado a su fin el script; se usa en info_status_error
# Archivo log de errores
# Funciones auxiliares
# 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.
# !OJO¡: El asterisco en "$l_origen"* debe estar fuera de las comillas.
# Comprimir un arhivo 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.
# 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.
# Salida del script
# Esta funcion es la que se invocará al salir del script.
# Configuración
# Lugar donde se realizará la copia de seguridad de HOME
# Directorio de las apliaciones AppImage
# Carpeta en la que se realizará la copia de la información.
# Carpeta $HOME - Para pruebas de se puede poner otra carpeta
# Paquetes de software
# Paquetes para la firma digital
# Necesario para la impresora
# Paquetes de software
# Procedimientos y funciones
# Copia de seguridad $HOME
# Instalación controladores impresora Samsung ML1865W
# Comprobar si existe el archivo con los controladores
# Comprobar que están instalados los paquetes necesarios
# Instalación controladores de la impresora
# 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
# ..- 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
# Cuenta nextcloud
# Comprobar que están instalados los paquetes necesarios
# Crear copia de seguridad de fstab
# Crear la extructura de directorios y asignarles los permisos correctos.
# WD
# NextCloud
# Añadir las lineas al fstab
echo "# Disco WD - /juanp"
echo "# Disco WD - /marisa"
echo "# Disco WD - /multimedia"
echo "# Disco WD - /invitado"
echo "# NextCloud opsone"
# Asignando propietario y permisos a /etc/fstab
# Copiar el archivo de credenciales a /root y asignarle los permisos y propietarios
# adecuados.
# Configurar cuenta nextcloud
# Configurar firma digital
# Configurar FireFox
# backup configuracion original de FireFox
# Instalar aplicaciones AppImage
# Instalar software flatpak
# Configurar flatpak
# Requiere la instación previa de los paquetes:
# .- flatpak
# .- gnome-software-plugin-flatpak
# Instalar paquetes de software
# Actualizar el Sistema Operativo
# Actualizar las listas de paquetes de los repositorios
# Instalar las versiones más recientes de todos los paquetes
# Eliminar paquetes innecesarios."
# Copia de información automática
# Copia de archivos
# - Copiar este script
# - Copiar /etc/fstab
# - Copiar /root/.credenciales
# - Copiar "$HOME"/.bash_history
# - Copia /.config/user-dirs.dirs
# - Copia "$HOME"/.davfs2/secrets
# Información de configuracion para conectar la cuenta de nextcloud
# Copia de directorios
# -Información de Shotwell
# Datos Shotwell $HOME/.local/share/shotwell/
# Cache Shotwell $HOME/.cache/shotwell/thumbs
# - Directorio /.config/autostart
# - Directorio de los archivos de contraseñas de KeePassXC"
# - Directorio de las contraseñas /home/juanp/.gnupg
# - Directorio de /home/juanp/.local/share/applications
# - Directorio aplicaciones AppImage: Tutanota
# Directorios con comprimidos TAR
# - Directorio de los iconos que se están usando
# - Directorio de Scripts
# Directorio de pagina web personal incluidas las guias
# Información de FireFox ./.mozilla
# Guardar la verisión instalada de FireFox
# Información general
# Información de los discos duros proporcionada por lsblk -f -m y df -h
# Información de Crontab
# Copia de información manual
# Información de FireFox
# Información de Evolution
# Información de Firma electrónica
echo " ...- Los módulos criptográficos PKCS#11"
# Información controladores impresoras
# Información de distribución discos duros
# Información de la configuración del editor GEdit
# Información Instalación de VirtualBox
# Restaurar información copiada
# Restaurar archivos
# Archivo "$HOME"/.bash_history
# Restaurar directorios
# Información de Shotwell
# Datos Shotwell $HOME/.local/share/shotwell/
# Cache Shotwell $HOME/.cache/shotwell/thumbs
# Directorio /.config/autostart
# Directorio de los archivos de contraseñas de KeePassXC"
# Directorio de las contraseñas /home/juanp/.gnupg
# Directorio de /home/juanp/.local/share/applications
# Directorios con comprimidos TAR
# Directorio de los iconos que se están usando
# Directorio de Scripts
# Directorio de pagina web personal incluidas las guias
# Menú script
# Tareas posteriores a la instalación
# Actualizar el Sistema operativo
# Activar el cortafuegos
# Instalar los paquetes de software
# Restaura información
# Configurar flatpak
# Instalar el software de flatpak
# Instalar aplicaciones AppImage
# Configurar FireFox
# Configurar la Firma Digital
# Configurar fstab
# Instalar impresora
# Finalizar
# Tareas previas a la instalación
# Comprobar si existe el directorio donde se realizará la copia
# Tareas previas
# Finalizar
# Menú inicial de script
# INICIO DEL SCRIPT
# Comprobar si el usuario está incluido en grupo sudo
# Presentar menu inicial
Creado con VSCodium
#!/bin/bash
# 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á automatizadao y otra parte requiere que la infor-
# mación la cree el usuario.
g_app_version="3.02"
g_app_fecha="22/01/23"
# Variables globales de gestión interna (no configuración)
# Número de errores que se han producidido
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 [ ! -z "$2" ]; then
echo $2
fi
read -p "$1 (Y/N) " 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 arhivo 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"
trap _trap_exit EXIT
# Configuración
# Lugar donde se realizará la copia de seguridad de HOME
g_destino_backup_home="/mnt/wd/juanp/backup_home_seguridad"
# Directorio de las apliaciones AppImage
g_folder_appimage="$HOME/AppImage"
# Carpeta en la que se realizará la copia de la información.
g_folder_copy="/home/juanp/Linux/instalaciones/20230106_debian_11_2023"
# Carpeta $HOME - Para pruebas de se puede poner otra carpeta
g_folder_home="/home/juanp/Linux/instalaciones/provi"
# Paquetes de software
declare -a g_aPackages
g_aPackages[1]="cifs-utils"
g_aPackages[2]="keepassxc"
g_aPackages[3]="synaptic"
g_aPackages[4]="cups"
g_aPackages[5]="gufw"
g_aPackages[6]="rsync"
g_aPackages[7]="exiftool"
g_aPackages[8]="clamtk"
g_aPackages[9]="imagemagick"
g_aPackages[10]="megatools"
g_aPackages[11]="gparted"
g_aPackages[12]="flatpak"
g_aPackages[13]="gnome-software-plugin-flatpak"
g_aPackages[14]="davfs2"
# Paquetes para la firma digital
g_aPackages[15]="pcsc-tools"
g_aPackages[16]="pcscd"
g_aPackages[17]="pinentry-gtk2"
g_aPackages[18]="libccid"
# Necesario para la impresora
g_aPackages[19]="libcupsimage2"
g_aPackages[20]="telegram-desktop"
# Paquetes de software
declare -a g_aFlatpak
g_aFlatpak[1]="org.gimp.GIMP"
g_aFlatpak[2]="com.vscodium.codium"
g_aFlatpak[3]="com.calibre_ebook.calibre "
g_aFlatpak[4]="org.videolan.VLC "
g_aFlatpak[5]="org.darktable.Darktable"
g_aFlatpak[6]="org.telegram"
# 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
echo "A continaución se va a iniciar la instalación del controlador"
echo "Hay que aceptar:"
echo " .- El acuerdo de licencia (aparece tras el apartado 10)"
echo " Pulsar flecha abajo para avanzar en los términos de la licencia"
echo " .- La configuración del firewall"
echo ""
if ! sudo bash "$HOME"/Documentos/impresoras/ml/uld/install.sh; then
_error "No se ha instalado correctamente los controladores"
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
# ..- 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="$(dirname "$0")/backup"
local l_file_tmp
local l_nextcloud
echo "-------------------------------------------------------------------------------"
echo "Configuración /etc/fstab"
echo ""
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 extructura de directorios y asignarles los permisos correctos.
echo "Creando estructura de directorios en /mnt y asignando premisos"
echo " .- /mnt/wd"
if [[ "$l_nextcloud" -eq 1 ]]; then
echo " .- /mnt/nextcloud_jp"
fi
# WD
_mkdir "/mnt/wd" 0
_mkdir "/mnt/wd/juanp" 0
_mkdir "/mnt/wd/multimedia" 0
_mkdir "/mnt/wd/marisa" 0
_mkdir "/mnt/wd/invitado" 0
echo "Asginando propietario y premisos 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
_fin_copia
# NextCloud
if [[ "$l_nextcloud" -eq 1 ]]; then
_mkdir "/mnt/nextcloud_jp" 0
_mkdir "/mnt/nextcloud_jp/nc_opsone" 0
echo "Asginando propietario y premisos 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 adcional en SO - Guía instalación Firma digital"
echo ""
if _yes_no "¿Instalar y configurar la firma digital?" ""; then
_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 ./firma_electronica/libpkcs11-dnie_1.6.8_amd64.deb; 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 ./firma_electronica/AutoFirma_1_7_1.deb; then
_error "No se ha instalado correctamente AutoFirma"
else
_fin_copia
fi
else
echo "AutoFirma ya estaba instalada"
_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 -p "Pulsa un tecla para continuar ..."
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"
echo ""
if ! flatpak install -y "$1"; then
echo ""
_error " en la instalción: flatpak install -y $1"
echo ""
exit 1
fi
function _install_packages_flatpak(){
local -n l_array=$1
local l_i
for l_i in "${l_array[@]}" ; do
_install_flatpak "$l_i"
done
function _list_packages_flatpak(){
local -n l_array=$1
local l_i
for l_i in "${l_array[@]}" ; do
echo "$l_i"
done
function _instalar_paquetes_flatpak() {
echo "-------------------------------------------------------------------------------"
echo "Los paquete de software a instalar son los siguientes:"
echo ""
_list_packages_flatpak g_aFlatpak
echo ""
if _yes_no "¿Instalar paquetes de software de flatpak?" ""; then
_install_packages_flatpak g_aFlatpak
fi
# Configurar flatpak
# Requiere la instació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 install "$1"; then
echo ""
_error " en la instalción: apt install $1"
echo ""
exit 1
fi
function _install_packages(){
local -n l_array=$1
local l_i
for l_i in "${l_array[@]}" ; do
_install_pk "$l_i"
done
function _list_packages(){
local -n l_array=$1
local l_i
for l_i in "${l_array[@]}" ; do
echo "$l_i"
done
function _instalar_paquetes_software(){
echo "-------------------------------------------------------------------------------"
echo "Los paquete de software a instalar son los siguientes:"
echo ""
_list_packages g_aPackages
echo ""
if _yes_no "¿Instalar paquetes de software?" ""; then
_install_packages g_aPackages
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
# 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"
# - Directorio de Scripts
l_destino="$g_folder_copy/script/scripts.tar.gz"
l_origen="$HOME/script"
_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 " ..- Backup marcadores de FireFox"
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 " ...- PIXMA MG2950"
echo " https://www.canon.es/support/consumer_products/products/fax__multifunctionals/inkjet/pixma_mg_series/pixma_mg2950.html?type=drivers&language=es&os=linux%20(64-bit)"
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
l_file="./datos/files/.bash_history"
l_destino="$g_folder_home"
_copy_file "$l_file" "$l_destino" 0
# Restaurar directorios
# Información de Shotwell
if _yes_no "¿Restaurara 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
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"
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
if _yes_no "¿Restaurar las contraseñas de SeaHorser ./gnupg?" ""; then
l_origen="./datos/gnupg"
l_destino="$g_folder_home/.gnupg"
_copy_full_folder "$l_origen" "$l_destino"
fi
# Directorio de /home/juanp/.local/share/applications
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
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
if _yes_no "¿Restaurar los scripts?" ""; then
l_origen="./script/scripts.tar.gz"
l_destino="$g_folder_home/script"
_tar_descomprimir "$l_origen" "$l_destino"
echo ""
echo "export PATH=\$PATH:\$HOME/script/.myscript"
} >> "$g_folder_home"/.bashrc
fi
# Directorio de pagina web personal incluidas las guias
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 " versión: $g_app_version ($g_app_fecha)"
echo ""
echo " La copia de la información del SO se realizará en:"
echo ""
echo " >> $g_folder_home"
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
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 flatpak
_config_flatpak
# Instalar el software de flatpak
_instalar_paquetes_flatpak
# Instalar aplicaciones AppImage
_instalar_apps_appimage
# Configurar FireFox
_configurar_firefox
# Configurar la Firma Digital
_configurar_firma_digital
# Configurar fstab
_config_fstab
# Instalar impresora
_instalar_impresora_ML1865
# Finalizar
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 " versión: $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 " versión: $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 -p " Selecciona opción [1/2] " 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
# 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
_error " Usuario $USER no está incluido en el grupo sudo"
echo ""
echo "Para incluir a $USER en el grupo sudo (administardores) ejecutar:"
echo " su [enter]"
echo " sudo usermod -aG sudo $USER"
echo " sudo shutdown -r now"
exit 1
fi
# Presentar menu inicial
_menu_inicial