71 lines
2.0 KiB
Bash
Executable File
71 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -uo pipefail
|
|
#==============================================================#
|
|
# File : pg-pass-add
|
|
# Desc : add pgpass entry to current user
|
|
# Ctime : 2020-12-16
|
|
# Mtime : 2020-12-17
|
|
# Path : /pg/bin/pg-pass-add
|
|
# Deps : sed
|
|
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
|
|
# Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com)
|
|
#==============================================================#
|
|
PROG_NAME="$(basename $0)"
|
|
PROG_DIR="$(cd $(dirname $0) && pwd)"
|
|
|
|
|
|
#--------------------------------------------------------------#
|
|
# Usage #
|
|
#--------------------------------------------------------------#
|
|
function usage() {
|
|
cat <<-'EOF'
|
|
NAME
|
|
pg-pass-add -- add pgpass entry
|
|
|
|
SYNOPSIS
|
|
pg-pass-add <username> <password> [pgpass_path=~/.pgpass]
|
|
|
|
DESCRIPTION
|
|
pg-pass-add will add username:password pair to .pgpass file
|
|
|
|
EXAMPLES
|
|
pg-pass-add dbuser_test Test.User.Password
|
|
|
|
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
|
|
#--------------------------------------------------------------#
|
|
# Name: pgpass_add
|
|
# Arg1: username
|
|
# Arg2: password
|
|
# Arg3: pgpass file, optional
|
|
#--------------------------------------------------------------#
|
|
function pgpass_add() {
|
|
local username=${1}
|
|
local password=${2-'*'}
|
|
local pgpass_path=${3-"${HOME}/.pgpass"}
|
|
local pgpass_temp="${pgpass_path}.tmp"
|
|
|
|
# add new entry to pgpass
|
|
touch ${pgpass_path} "${pgpass_temp}"
|
|
sed "/:${username}:/d" "${pgpass_path}" | sed '/^[[:space:]]*$/d' | sort | uniq > ${pgpass_temp}
|
|
echo '*:*:*:'"${username}:${password}" >> ${pgpass_temp}
|
|
chmod 0600 "${pgpass_path}" "${pgpass_temp}"
|
|
mv -f "${pgpass_temp}" "${pgpass_path}"
|
|
}
|
|
|
|
|
|
#--------------------------------------------------------------#
|
|
# Main #
|
|
#--------------------------------------------------------------#
|
|
if (( $# < 1 )); then
|
|
usage
|
|
fi
|
|
case "$1" in
|
|
-h | --help) usage ;;
|
|
esac
|
|
|
|
pgpass_add "$@" |