lamchau
3/21/2015 - 3:07 AM

add IPs to access PostgreSQL remotely (Short URL: http://git.io/hiFi)

add IPs to access PostgreSQL remotely (Short URL: http://git.io/hiFi)

#!/bin/sh

# prerequisite: sudo su - postgres
CONFIGURATION_FILE="/etc/postgresql/9.4/main/pg_hba.conf"
CURRENT_IP=$(last -i | grep "still logged" | awk '{ print $3 }')
IPV4_REGEX="\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"

if [ ! -f "$CONFIGURATION_FILE" ]; then
  echo "File not found: $CONFIGURATION_FILE"
  exit 1
fi

if [ -z $(echo "$CURRENT_IP" | egrep $IPV4_REGEX) ]; then
  echo "Invalid IP address: $CURRENT_IP"
  exit 1
fi

if grep -Fq "$CURRENT_IP" $CONFIGURATION_FILE; then
  echo "$CURRENT_IP was already exists in $CONFIGURATION_FILE"
else
  echo "Added '$CURRENT_IP' to $CONFIGURATION_FILE"
  echo "host all all $CURRENT_IP/32 trust" >> $CONFIGURATION_FILE
  /etc/init.d/postgresql restart
fi