mudardata 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #!/bin/bash
  2. echo -e "\033[0;34m┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\033[0m"
  3. echo -e "\033[0;34m┃\E[44;1;37m MUDAR DATA DE EXPIRACAO \E[0m\033[0;34m┃"
  4. echo -e "\033[0;34m┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\033[0m\n"
  5. echo -e "\033[1;33m LISTA DE USUARIOS E DATA DE EXPIRACAO:\033[0m\n"
  6. tput setaf 7 ; tput bold
  7. database="/root/usuarios.db"
  8. list_user=$(awk -F: '$3>=1000 {print $1}' /etc/passwd | grep -v nobody)
  9. i=0
  10. i=0
  11. unset _userPass
  12. while read user; do
  13. i=$(expr $i + 1)
  14. _oP=$i
  15. [[ $i == [1-9] ]] && i=0$i && oP+=" 0$i"
  16. expire="$(chage -l $user | grep -E "Account expires" | cut -d ' ' -f3-)"
  17. if [[ $expire == "never" ]]
  18. then
  19. echo -e "\033[1;31m[\033[1;36m$i\033[1;31m] \033[1;37m- \033[1;32m$user \033[1;33m00/00/0000 S/DATA\033[0m"
  20. else
  21. databr="$(date -d "$expire" +"%Y%m%d")"
  22. hoje="$(date -d today +"%Y%m%d")"
  23. if [ $hoje -ge $databr ]
  24. then
  25. _user=$(echo -e "\033[1;31m[\033[1;36m$i\033[1;31m] \033[1;37m- \033[1;32m$user\033[1;37m")
  26. datanormal="$(echo -e "\033[1;31m$(date -d"$expire" '+%d/%m/%Y')")"
  27. expired=$(echo -e "\033[1;31mVENCEU\033[0m")
  28. printf '%-62s%-20s%s\n' "$_user" "$datanormal" "$expired"
  29. echo "exp" > /tmp/exp
  30. else
  31. _user=$(echo -e "\033[1;31m[\033[1;36m$i\033[1;31m] \033[1;37m- \033[1;32m$user\033[1;37m")
  32. datanormal="$(echo -e "\033[1;33m$(date -d"$expire" '+%d/%m/%Y')")"
  33. ative=$(echo -e "\033[1;32mVALIDO\033[0m")
  34. printf '%-62s%-20s%s\n' "$_user" "$datanormal" "$ative"
  35. fi
  36. fi
  37. _userPass+="\n${_oP}:${user}"
  38. done <<< "${list_user}"
  39. tput sgr0
  40. echo ""
  41. if [ -a /tmp/exp ]
  42. then
  43. rm /tmp/exp
  44. fi
  45. num_user=$(awk -F: '$3>=1000 {print $1}' /etc/passwd | grep -v nobody | wc -l)
  46. echo -ne "\033[1;32mDigite ou selecione um usuario \033[1;33m[\033[1;36m1\033[1;33m-\033[1;36m$num_user\033[1;33m]\033[1;37m: " ; read option
  47. if [[ -z $option ]]
  48. then
  49. echo ""
  50. tput setaf 7 ; tput setab 1 ; tput bold ; echo "Erro, Nome de usuário vazio ou inválido! " ; tput sgr0
  51. exit 1
  52. fi
  53. usuario=$(echo -e "${_userPass}" | grep -E "\b$option\b" | cut -d: -f2)
  54. if [[ -z $usuario ]]
  55. then
  56. echo ""
  57. tput setaf 7 ; tput setab 1 ; tput bold ; echo "Erro, Nome de usuário vazio ou inválido!!! " ; tput sgr0
  58. echo ""
  59. exit 1
  60. else
  61. if [[ `grep -c /$usuario: /etc/passwd` -ne 0 ]]
  62. then
  63. echo ""
  64. echo -e "\033[1;31mEX:\033[1;33m(\033[1;32mDATA: \033[1;37mDIA/MÊS/ANO \033[1;33mOU \033[1;32mDIAS: \033[1;37m30\033[1;33m)"
  65. echo ""
  66. echo -ne "\033[1;32mNova data ou dias para o usuario \033[1;33m$usuario: \033[1;37m"; read inputdate
  67. if [[ "$(echo -e "$inputdate" | grep -c "/")" = "0" ]]; then
  68. udata=$(date "+%d/%m/%Y" -d "+$inputdate days")
  69. sysdate="$(echo "$udata" | awk -v FS=/ -v OFS=- '{print $3,$2,$1}')"
  70. else
  71. udata=$(echo -e "$inputdate")
  72. sysdate="$(echo "$inputdate" | awk -v FS=/ -v OFS=- '{print $3,$2,$1}')"
  73. fi
  74. if (date "+%Y-%m-%d" -d "$sysdate" > /dev/null 2>&1)
  75. then
  76. if [[ -z $inputdate ]]
  77. then
  78. echo ""
  79. tput setaf 7 ; tput setab 1 ; 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 ; tput sgr0
  80. echo ""
  81. exit 1
  82. else
  83. if (echo $inputdate | egrep [^a-zA-Z] &> /dev/null)
  84. then
  85. today="$(date -d today +"%Y%m%d")"
  86. timemachine="$(date -d "$sysdate" +"%Y%m%d")"
  87. if [ $today -ge $timemachine ]
  88. then
  89. echo ""
  90. tput setaf 7 ; tput setab 1 ; 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
  91. echo ""
  92. exit 1
  93. else
  94. chage -E $sysdate $usuario
  95. echo ""
  96. tput setaf 7 ; tput setab 4 ; tput bold ; echo "Sucesso Usuário $usuario nova data: $udata " ; tput sgr0
  97. echo ""
  98. exit 1
  99. fi
  100. else
  101. echo ""
  102. tput setaf 7 ; tput setab 1 ; 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
  103. echo ""
  104. exit 1
  105. fi
  106. fi
  107. else
  108. echo ""
  109. tput setaf 7 ; tput setab 1 ; 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
  110. echo ""
  111. exit 1
  112. fi
  113. else
  114. echo " "
  115. tput setaf 7 ; tput setab 1 ; tput bold ; echo "O usuário $usuario não existe!" ; tput sgr0
  116. echo " "
  117. exit 1
  118. fi
  119. fi