web-dev-qa-db-ja.com

UNIXシェルスクリプトを介してpg_hba.confファイルに複数のIPアドレスを挿入する方法

私のPostgresqlのpg_hba.confファイルにいくつかのIPアドレスを書き込んで、それらのIPからマシンへのリモートアクセスを許可する必要があります。

単一のIPアドレスに対してそれを行うためのシェルスクリプトに次のコードがあります

#!/bin/bash

######## PostgreSQL Child Server Host or IP Address
serverhost=$1

######## PostgreSQL Child Server pg_hba.conf File Path
pghbapath=$2

######## Shell Script Command to write the data at the end of the    pg_hba.conf file
sed -i "$ a Host    all all     $serverhost/32  md5" $pghbapath

上記のbashスクリプトを実行するコマンドの例は次のとおりです。

./reset_ip.sh 192.168.10.27 /root/Desktop/BashScripts/pg_hba.conf

上記は問題なく動作しますが、たくさんのIPアドレスを持っています。それで、異なるIPアドレスに対して毎回手動でコマンドを実行する代わりに、一度に複数のIPアドレスを取得してそれらをpg_hba.confファイルに一度に書き込むことができるコマンドはありますか?

編集-Luukの回答に感謝します。試してみましたが、うまくいきました。ここで、すべてのアドレスを保持するテキストファイルを用意する代わりに、コマンドライン自体に複数のIPアドレスをコンマで区切って記述したいとします。

./reset_ip.sh 192.168.10.27,192.168.10.28,192.168.10.29,192.168.10.30 /root/Desktop/BashScripts/pg_hba.conf

出来ますか?基本的に私が欲しいのは、コマンドプロンプトを介して単一の変数に複数の値を渡すことができるようにすることです。

2
suvrat

すべてのアドレス(1行に1つ)を保持するファイルがある場合は、次のことができます。

cat ipaddresses.txt | while read line; 
do 
  ./reset_ip.sh $line /root/Desktop/BashScripts/pg_hba.conf; 
done

または、gawkを使用:

gawk '{ system("./reset_ip.sh $1 /root/Desktop/BashScripts/pg_hba.conf") }' ipaddresses.txt 
2
Luuk