sergio_educacionit

user_home-bakcup-v3.sh

Aug 16th, 2025
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.51 KB | None | 0 0
  1. # '$1' variable posicional que recibe el script
  2.  
  3. input_user=$1
  4.  
  5. located_user=$(cat /etc/passwd | cut -d ':' -f 1 | grep -w $input_user)
  6.  
  7.  
  8.  
  9. func_ts() {
  10.  
  11.     # devuelve timestamp en formato epoch:
  12.     # _1755358729
  13.    
  14.     echo "$(date +%s)"
  15.  
  16. }
  17.  
  18.  
  19. func_log() {
  20.    
  21.     # '$1' variable posicional que recibe la funcion
  22.     # '$2' variable posicional que recibe la funcion
  23.  
  24.     # 'local' declara la variable de manera local a la funcion
  25.     # no entra en conflicto con variables que se llamen igual
  26.     # que esten declaradas fuera
  27.    
  28.     local timestamp="$1"
  29.     local error="$2"
  30.  
  31.  
  32.     echo "$timestamp - $error" >> salida.log
  33.  
  34. }
  35.  
  36.  
  37. # errores
  38. priv_err="El usuario $USER ($UID) ejecuto el programa sin privilegios."
  39. user_err="El usuario no se encuentra en el sistema"
  40.  
  41.  
  42.  
  43.  
  44.  
  45. # '$UID' devueleve la 'uid' del usuario que ejeucta el script.
  46. # '0' es la 'uid' del usuario 'root'.
  47.  
  48. if [ $UID -ne 0 ]; then
  49.  
  50.     # salida por terminal bajo el canal 'stderr'
  51.  
  52.     echo $priv_err >&2
  53.  
  54.     # Guardar en log
  55.     # func_log 1755359541 "Mensaje de error"
  56.    
  57.     func_log $(func_ts) "$priv_err"
  58.  
  59.     exit 1
  60. fi
  61.  
  62.  
  63.  
  64.  
  65.  
  66. if  [ "$input_user" == "$located_user" ];then
  67.  
  68.     read -p "El usuario '$input_user' existe en el sistema, desea crear backup? " ans
  69.    
  70.  
  71. else
  72.     echo $user_err >&2
  73.     func_log $(func_ts) "$user_err"
  74.     exit 1
  75.  
  76. fi
  77.  
  78.  
  79.  
  80. if [ "y"  == "$ans" ] || [ "Y" == "$ans" ] ; then
  81.  
  82.     tar vczf /home/${input_user}.tar.gz /home/${input_user}
  83. else
  84.     echo "No se hace nada, se sale."
  85.     exit 1
  86. fi
  87.  
  88.  
  89. echo "
  90. Ficheros archivados:
  91. "
  92. ls -1 /home/*.gz
  93.  
Advertisement
Add Comment
Please, Sign In to add comment