DEV Community

Pavel Polívka
Pavel Polívka

Posted on

4 2

Logging unique IP addresses your Java code communicates with

Recently I needed some utility that would log all unique IP addresses all the Java processes on a server communicated with.

I googled a bit and did not discovered nice and easy solution for this. So I decided to do some bash-fu and wrote the following script.

while true
do
    netstat -nput 2>/dev/null | grep 'java' | tr -s ' ' | cut -f5 -d ' ' | cut -f1 -d ':' | uniq | while read -r ip; do grep -qxF $ip ip.log || echo $ip >> ip.log; done
    sleep 5
done

Let's go over it step by step to explain what it does:

  • while true - this means that when executed it will run until stopped, easy
  • netstat -nputw 2>/dev/null - netstat prints network connections
    • -n - show numerical address instead of trying to resolve host names
    • -p - show PID of the program
    • -u - include UDP connections
    • -t - include TCP connections
  • grep 'java' - only take those lines that have Java in them (PID contains java for Java apps)
  • tr -s ' ' - replaces each sequence of spaces with a single space
  • cut -f5 -d ' ' - takes fifth column (separated by spaces)
  • cut -f1 -d ':' - takes first part (separated by :) - removes port
  • uniq - makes the list unique
  • while read -r ip; do grep -qxF $ip ip.log || echo $ip >> ip.log; done - adds it to a log file if it does not contain it already
    • grep -qxF
      • -q - quiet, do not write anything to standard output
      • -x - select only those matches that exactly match the whole line
      • -F - interpret PATTERNS as fixed strings

Hope this will help you or if you have a better solution please let me know.


You can follow me on Twitter to get more awesome content like this.

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →