view sources/toys/unique-port.sh @ 1196:1cdd44f2bac2

If some clever sysadmin claimed 1024-65535 for local ports, punt.
author Rob Landley <rob@landley.net>
date Thu, 05 Aug 2010 13:10:07 -0500
parents 94b0b4ef1157
children
line wrap: on
line source

unique_port()
{
  # Try to find an unused port number for each running instance of the program.

  START=8192
  RANGE=$[$(awk '{print $1}' /proc/sys/net/ipv4/ip_local_port_range)-$START]
  if [ $RANGE -lt 8 ]
  then
    START=$[$(awk '{print $2}' /proc/sys/net/ipv4/ip_local_port_range)]
    RANGE=$[65535-$START]
    if [ $RANGE -lt 8 ]
    then
      START=16384
      RANGE=32768
    fi
  fi
  echo $[($$%$RANGE)+$START]
}