Skip to content

Instantly share code, notes, and snippets.

Created July 11, 2011 17:06
Show Gist options
  • Save kamermans/1076290 to your computer and use it in GitHub Desktop.
Save kamermans/1076290 to your computer and use it in GitHub Desktop.
Show status of all fail2ban jails at once
JAILS=`fail2ban-client status | grep "Jail list" | sed -E 's/^[^:]+:[ \t]+//' | sed 's/,//g'`
for JAIL in $JAILS
fail2ban-client status $JAIL
Copy link

Thanks! can't believe there isn't a fail2ban-client status --all command!

Copy link

Excellent! It was -e for me on Centos 6.

Copy link

xrobin commented Jan 19, 2017

On a SLES box I had to use lowercase -e as well, and escape the + signs in the regex

JAILS=`fail2ban-client status | grep "Jail list" | sed -e 's/^[^:]\+:[ \t]\+//' | sed 's/,//g'`

Copy link

caic commented Jan 31, 2017

Thank you! It works on Ubuntu 16.04.

Copy link

Thank you! Also confirming works on Ubuntu 16.04

Copy link

maravedi commented Mar 8, 2017

This is perfect 👍

Copy link

Copy link

shlublu commented Jul 6, 2017

It has been said already, but many thanks (Ubuntu 16.04)! :)

Copy link

kofran commented Aug 16, 2017

Thanks so much

Copy link

Why make it easy if you can do hard? :-)

fail2ban-client status|awk -F: '/Jail list:/ { split($2,jail,",") ; for (i in jail) { gsub(/[\t ]/,"",jail[i]); system("fail2ban-client status "jail[i]); }; }'

Copy link

Shorter version:
fail2ban-client status | sed -n 's/,//g;s/.*Jail list://p' | xargs -n1 fail2ban-client status

Copy link

Fieel commented Jan 17, 2018

Nice! Will use this script in my server, ty again <3

Copy link

VA2PE commented Feb 9, 2018

Thanks, works well on CentOS 7.

Copy link

vkostyuk commented Aug 8, 2018

Nice. Needs sudo, so sudo sh -c "fail2ban-client status | sed -n 's/,//g;s/.*Jail list://p' | xargs -n1 fail2ban-client status"

Copy link

1# sudo apt-get remove fail2ban : remove the packet
2# sudo rm -rf fail2ban : delete fail2ban folder
3# re install again

Copy link

doesn't ipset list do this?

Copy link

@stefan1959 I don't know, although this post was over 5 years ago, so things have probably changed!

Copy link


Copy link

Wepted commented Dec 21, 2020

thank you

Copy link

stueja commented Feb 15, 2021

Thank you!

Copy link

deybin7 commented Mar 19, 2021

Thank you pal!

Copy link

Thanks man!

Copy link

lls-hcr commented May 21, 2021

Very handy, thank you

Copy link


Copy link

Ravinou commented Jan 14, 2022

Thanks !

Copy link

biesior commented Sep 23, 2022


Copy link

Verify Github on Galxe. gid:hqaGx3KAt8heyLH9WYEKkm

Copy link

jmsfnch commented Oct 14, 2022

Ta very much!

Copy link


Copy link

CDSoft commented Dec 27, 2023


Since fail2ban banned lists all jails with their banned IP as a list of Python dictionaries, Python can also be used to get the list of jails:

$ fail2ban-client banned
[{'sshd': []}, {'apache-auth': []}, {'apache-badbots': []}, {'apache-noscript': ['AAA.BBB.CCC.DDD', 'AAA.BBB.CCC.DDD']}, {'apache-overflows': []}, {'apache-nohome': []}, {'apache-botsearch': []}, {'apache-fakegooglebot': []}, {'apache-modsecurity': []}, {'apache-shellshock': []}, {'php-url-fopen': []}, {'apache-pass': []}]
$ JAILS=$(python -c "print(' '.join(k for d in $(fail2ban-client banned) for k in d))")
$ echo $JAILS
sshd apache-auth apache-badbots apache-noscript apache-overflows apache-nohome apache-botsearch apache-fakegooglebot apache-modsecurity apache-shellshock php-url-fopen apache-pass

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment