私の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
出来ますか?基本的に私が欲しいのは、コマンドプロンプトを介して単一の変数に複数の値を渡すことができるようにすることです。
すべてのアドレス(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