38 lines · 1.0 KB · Shell
RawDownload
#!/bin/bashset -e # Check if database name is providedif [ $# -eq 0 ]; then    echo "Usage: $0 <database-name>"    doctl databases list    exit 1fi DATABASE_NAME="$1"DATABASE_ID=$(doctl databases list --format ID,Name --no-header | grep "$DATABASE_NAME" | awk '{print $1}') if [ -z "$DATABASE_ID" ]; then    echo "Error: Database '$DATABASE_NAME' not found"    exit 1fiCURRENT_IP=$(curl -s https://api.ipify.org)if [ -z "$CURRENT_IP" ]; then    echo "Error: Failed to get current IP address"    exit 1fi EXISTING_RULE=$(doctl databases firewalls list "$DATABASE_ID" | grep "ip_addr" | grep "$CURRENT_IP") if [ -z "$EXISTING_RULE" ]; then    echo "IP not found in whitelist. Adding $CURRENT_IP to database firewall..."    doctl databases firewalls append "$DATABASE_ID" --rule ip_addr:"$CURRENT_IP"fi CONNECTION_URL=$(doctl databases connection "$DATABASE_ID" --format URI --no-header) if [ -z "$CONNECTION_URL" ]; then    echo "Error: Failed to get database connection details"    exit 1fi psql "$CONNECTION_URL"