1
私は、複数の構成squidファイルからポートを取り出してjsonファイルに配置する必要があります。squid.confファイルからポートを動的に取り出し、bashを使用してjsonファイルに入れます
echo -n "{ \"data\":" > test.json
echo -n " [" >> test.json
sqcur=0
sqtotal=`ls /etc/squid?.conf | wc -l`
tcp_ports=$(grep "port" /etc/squid?.conf |awk '{print $2}' |sed 's|.*[0-9]*\:||g'|sort|uniq|xargs)
for squidconf in `ls /etc/squid?.conf`; do
let "sqcur+=1" > /dev/null
squidident=`echo $squidconf | sed 's/.*\///' | awk -F '.' '{print $1}'`
if [ $sqcur -lt $sqtotal ]; then
echo -n " { \"{#SQPROC}\": \"/usr/local/squid/bin/squid\", \"{#SQPROC_IDENT}\": \"${squidident}\", \"{#SQPROC_ARGS}\": \"-D -C -F -f ${squidconf}\", \"{#SQPROC_PORT}\": \"${tcp_ports}\", \"{#SQPROC_CONF}\": \"${squidconf}\" }," >> test.json
else
echo -n " { \"{#SQPROC}\": \"/usr/local/squid/bin/squid\", \"{#SQPROC_IDENT}\": \"${squidident}\", \"{#SQPROC_ARGS}\": \"-D -C -F -f ${squidconf}\", \"{#SQPROC_PORT}\": \"${tcp_ports}\", \"{#SQPROC_CONF}\": \"${squidconf}\" }" >> test.json
fi
done
echo -n " ]" >> test.json
echo "}" >> test.json
は、出力が次のようになります:
は、これまでのところ私は、次の方法で、次のことを行うことができました
{
"data": [
{
"{#SQPROC}": "/usr/local/squid/bin/squid",
"{#SQPROC_IDENT}": "squid1",
"{#SQPROC_ARGS}": "-D -C -F -f /etc/squid1.conf",
"{#SQPROC_PORT}": "1111 2222 3333 4444",
"{#SQPROC_CONF}": "/etc/squid1.conf"
},
{
"{#SQPROC}": "/usr/local/squid/bin/squid",
"{#SQPROC_IDENT}": "squid2",
"{#SQPROC_ARGS}": "-D -C -F -f /etc/squid2.conf",
"{#SQPROC_PORT}": "1111 2222 3333 4444",
"{#SQPROC_CONF}": "/etc/squid2.conf"
},
{
"{#SQPROC}": "/usr/local/squid/bin/squid",
"{#SQPROC_IDENT}": "squid3",
"{#SQPROC_ARGS}": "-D -C -F -f /etc/squid3.conf",
"{#SQPROC_PORT}": "1111 2222 3333 4444",
"{#SQPROC_CONF}": "/etc/squid3.conf"
}
]
}
しかし、私は必要とする設定のそれぞれで定義されているポートファイルはjsonファイル内で定義されている設定ファイルだけに関連付けられます。
例:1111と2222はsquid1.confで定義されているので、JSONの出力は、次にする必要があります。
{
"data": [
{
"{#SQPROC}": "/usr/local/squid/bin/squid",
"{#SQPROC_IDENT}": "squid1",
"{#SQPROC_ARGS}": "-D -C -F -f /etc/squid1.conf",
"{#SQPROC_PORT}": "1111 2222",
"{#SQPROC_CONF}": "/etc/squid1.conf"
},
というように設定ファイルの残りの部分。
助けてもらえますか?あなたは、ループ内 をtcp_ports
の定義を移動して、現在の設定ファイルでそれを実行することができます
はどうもありがとう、私はスクリプトの中でそれを逃したそのビット愚か本当に思います。 – user54