droplimiter 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. database="/root/usuarios.db"
  3. echo $$ > /tmp/pids
  4. fun_drop () {
  5. port_dropbear=`ps aux | grep dropbear | awk NR==1 | awk '{print $17;}'`
  6. log=/var/log/auth.log
  7. loginsukses='Password auth succeeded'
  8. clear
  9. pids=`ps ax |grep dropbear |grep " $port_dropbear" |awk -F" " '{print $1}'`
  10. for pid in $pids
  11. do
  12. pidlogs=`grep $pid $log |grep "$loginsukses" |awk -F" " '{print $3}'`
  13. i=0
  14. for pidend in $pidlogs
  15. do
  16. let i=i+1
  17. done
  18. if [ $pidend ];then
  19. login=`grep $pid $log |grep "$pidend" |grep "$loginsukses"`
  20. PID=$pid
  21. user=`echo $login |awk -F" " '{print $10}' | sed -r "s/'/ /g"`
  22. waktu=`echo $login |awk -F" " '{print $2"-"$1,$3}'`
  23. while [ ${#waktu} -lt 13 ]; do
  24. waktu=$waktu" "
  25. done
  26. while [ ${#user} -lt 16 ]; do
  27. user=$user" "
  28. done
  29. while [ ${#PID} -lt 8 ]; do
  30. PID=$PID" "
  31. done
  32. echo "$user $PID $waktu"
  33. fi
  34. done
  35. }
  36. if [ ! -f "$database" ]
  37. then
  38. echo "Arquivo /root/usuarios.db não encontrado"
  39. exit 1
  40. fi
  41. while true
  42. do
  43. clear
  44. echo -e "\033[0;34m┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\033[0m"
  45. echo -e "\033[0;34m┃\E[44;1;37m LIMITER DROPBEAR \E[0m\033[0;34m┃"
  46. echo -e "\033[0;34m┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\033[0m"
  47. echo -e "\033[1;37m Ususario Conexao/Limite \E[0m\n"
  48. while read usline
  49. do
  50. user="$(echo $usline | cut -d' ' -f1)"
  51. s2ssh="$(echo $usline | cut -d' ' -f2)"
  52. s3drop="$(fun_drop | grep "$user" | wc -l)"
  53. if [ -z "$user" ] ; then
  54. echo "" > /dev/null
  55. else
  56. fun_drop | grep "$user" | awk '{print $2}' |cut -d' ' -f2 > /tmp/userpid
  57. sed -n '2 p' /tmp/userpid > /tmp/tmp2
  58. rm /tmp/userpid
  59. tput setaf 3 ; tput bold ; printf ' %-35s%s\n' $user $s3drop/$s2ssh; tput sgr0
  60. if [ "$s3drop" -gt "$s2ssh" ]; then
  61. echo -e "\E[41;1;37m Usuário desconectado por ultrapassar o limite! \E[0m"
  62. while read line
  63. do
  64. tmp="$(echo $line | cut -d' ' -f1)"
  65. kill $tmp
  66. done < /tmp/tmp2
  67. rm /tmp/tmp2
  68. fi
  69. fi
  70. done < "$database"
  71. sleep 6
  72. done