40-fail2ban 702 B

123456789101112131415161718
  1. #!/bin/bash
  2. jails=($(fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) print a[i]}'))
  3. out="jail,failed,total,banned,total\n"
  4. for jail in ${jails[@]}; do
  5. status=$(fail2ban-client status ${jail})
  6. failed=$(echo "$status" | grep -ioP '(?<=Currently failed:\t)[[:digit:]]+')
  7. totalfailed=$(echo "$status" | grep -ioP '(?<=Total failed:\t)[[:digit:]]+')
  8. banned=$(echo "$status" | grep -ioP '(?<=Currently banned:\t)[[:digit:]]+')
  9. totalbanned=$(echo "$status" | grep -ioP '(?<=Total banned:\t)[[:digit:]]+')
  10. out+="$jail,$failed,$totalfailed,$banned,$totalbanned\n"
  11. done
  12. printf "\nfail2ban status:\n"
  13. printf $out | column -ts $',' | sed -e 's/^/ /'