sorahx0

Untitled

May 29th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.23 KB | None | 0 0
  1. #!/bin/bash
  2. tput setaf 7 ; tput setab 4 ; tput bold ; printf '%33s%s%-12s\n' "Mudar data de expiração" ; tput sgr0
  3. echo ""
  4. tput bold ; echo "Lista de usuários e datas de expiração:" ; tput sgr0
  5. echo ""
  6. tput setaf 3 ; tput bold
  7. awk -F : '$3 >= 500 { print $1 }' /etc/passwd | grep -v '^nobody' | while read user
  8.   do
  9.     expire="$(chage -l $user | grep -E "Account expires" | cut -d ' ' -f3-)"
  10.     if [[ $expire == "never" ]]
  11.     then
  12.         nunca="Nunca"
  13.         printf '  %-30s%s\n' "$user" "Nunca"
  14.     else
  15.         databr="$(date -d "$expire" +"%Y%m%d")"
  16.         hoje="$(date -d today +"%Y%m%d")"
  17.         if [ $hoje -ge $databr ]
  18.         then
  19.             datanormal="$(date -d"$expire" '+%d/%m/%Y')"
  20.             printf '  %-30s%s' "$user" "$datanormal" ; tput setaf 1 ; tput bold ; echo " (Expirado)" ; tput setaf 3
  21.             echo "exp" > /tmp/exp
  22.         else
  23.             datanormal="$(date -d"$expire" '+%d/%m/%Y')"
  24.             printf '  %-30s%s\n' "$user" "$datanormal"
  25.         fi
  26.     fi
  27.   done
  28. tput sgr0
  29. echo ""
  30. if [ -a /tmp/exp ]
  31. then
  32.     tput setaf 2 ; tput bold ; echo "Para remover todos os usuários expirados use o comando: expcleaner" ; echo "" ; tput sgr0
  33.     rm /tmp/exp
  34. fi
  35. read -p "Nome do usuário para alterar a data de expiração: " usuario
  36. if [[ -z $usuario ]]
  37. then
  38.     echo ""
  39.     tput setaf 7 ; tput setab 4 ; tput bold ; echo "Você digitou um nome de usuário vazio ou inválido!" ; tput sgr0
  40.     echo ""
  41.     exit 1
  42. else
  43.     if [[ `grep -c /$usuario: /etc/passwd` -ne 0 ]]
  44.     then
  45.         read -p "Digite uma nova data de expiração (DIA/MÊS/ANO): " inputdate
  46.         sysdate="$(echo "$inputdate" | awk -v FS=/ -v OFS=- '{print $3,$2,$1}')"
  47.         if (date "+%Y-%m-%d" -d "$sysdate" > /dev/null  2>&1)
  48.         then
  49.             if [[ -z $inputdate ]]
  50.             then
  51.                 echo ""
  52.                 tput setaf 7 ; tput setab 4 ; tput bold ;   echo "Você digitou uma data inválida ou inexistente!" ; echo "Digite uma data válida no formato DIA/MÊS/ANO" ; echo "Por exemplo: 21/04/2018" ; tput sgr0
  53.                 echo ""
  54.                 exit 1 
  55.             else
  56.                 if (echo $inputdate | egrep [^a-zA-Z] &> /dev/null)
  57.                 then
  58.                     today="$(date -d today +"%Y%m%d")"
  59.                     timemachine="$(date -d "$sysdate" +"%Y%m%d")"
  60.                     if [ $today -ge $timemachine ]
  61.                     then
  62.                         echo ""
  63.                         tput setaf 7 ; tput setab 4 ; tput bold ;   echo "Você digitou uma data passada ou o dia atual!" ; echo "Digite uma data futura e válida no formato DIA/MÊS/ANO" ; echo "Por exemplo: 21/04/2018" ; tput sgr0
  64.                         echo ""
  65.                         exit 1
  66.                     else
  67.                         chage -E $sysdate $usuario
  68.                         echo ""
  69.                         tput setaf 7 ; tput setab 1 ; tput bold ; echo "A data de expiração do usuário $usuario foi alterada para: $inputdate" ; tput sgr0
  70.                         echo ""
  71.                         exit 1
  72.                     fi
  73.                 else
  74.                     echo ""
  75.                     tput setaf 7 ; tput setab 4 ; tput bold ;   echo "Você digitou uma data inválida ou inexistente!" ; echo "Digite uma data válida no formato DIA/MÊS/ANO" ; echo "Por exemplo: 21/04/2018" ; tput sgr0
  76.                     echo ""
  77.                     exit 1
  78.                 fi
  79.             fi
  80.         else
  81.             echo ""
  82.             tput setaf 7 ; tput setab 4 ; tput bold ;   echo "Você digitou uma data inválida ou inexistente!" ; echo "Digite uma data válida no formato DIA/MÊS/ANO" ; echo "Por exemplo: 21/04/2018" ; tput sgr0
  83.             echo ""
  84.             exit 1
  85.         fi
  86.     else
  87.         echo " "
  88.         tput setaf 7 ; tput setab 4 ; tput bold ;   echo "O usuário $usuario não existe!" ; tput sgr0
  89.         echo " "
  90.         exit 1
  91.     fi
  92. fi
Add Comment
Please, Sign In to add comment