limitera 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/bin/bash
  2. while true
  3. do
  4. clear
  5. touch /root/user
  6. cat /etc/passwd |grep -v ovpn > /tmp/ussh
  7. for u in `awk -F : '$3 > 900 { print $1 }' /etc/passwd |grep -v "nobody" |grep -vi polkitd |grep -vi systemd-[a-z] |grep -vi systemd-[0-9] |sort`
  8. do
  9. daaab=$(cat /etc/adm-lite/userDIR/$u | grep "limite:" | awk '{print $2}')
  10. echo "$u $daaab" >> /root/user
  11. done
  12. database="/root/user"
  13. echo $$ > /tmp/pids
  14. if [ ! -f "$database" ]
  15. then
  16. echo "não ha usuarios"
  17. exit 1
  18. fi
  19. tput setaf 7 ; tput setab 4 ; tput bold ; printf '%28s%s%-18s\n' "SSH Limiter"
  20. tput setaf 7 ; tput setab 4 ; printf ' %-30s%s\n' "Usuário" "Conexão/Limite " ; echo "" ; tput sgr0
  21. while read usline
  22. do
  23. user="$(echo $usline | cut -d' ' -f1)"
  24. s2ssh="$(echo $usline | cut -d' ' -f2)"
  25. if [ -z "$user" ] ; then
  26. echo "" > /dev/null
  27. else
  28. ps x | grep [[:space:]]$user[[:space:]] | grep -v grep | grep -v pts > /tmp/tmp2
  29. s1ssh="$(cat /tmp/tmp2 | wc -l)"
  30. tput setaf 3 ; tput bold ; printf ' %-35s%s\n' $user $s1ssh/$s2ssh; tput sgr0
  31. if [ "$s1ssh" -gt "$s2ssh" ]; then
  32. tput setaf 7 ; tput setab 1 ; tput bold ; echo " Usuário desconectado por ultrapassar o limite!" ; tput sgr0
  33. while read line
  34. do
  35. tmp="$(echo $line | cut -d' ' -f1)"
  36. kill $tmp
  37. done < /tmp/tmp2
  38. rm /tmp/tmp2
  39. fi
  40. fi
  41. done < "$database"
  42. rm -rf /root/user
  43. sleep 5s
  44. done