Bashでこれを行う最良の方法についてのアドバイスを聞きたいです。ありがとうございます。
x サーバーの場合、各サーバーには独自のレプリケーションプロトコルのリストとその状態があります。たとえば、いくつかのコマンドを簡単に実行してこのデータを取得できます。
サーバーのインポート、出力。
dc1-server1 dc1-server2 dc2-server1 dc2-server2 dc3...
dc1-server1 の場合、プロトコルと出力を取得します。
dc2-server1
dc3-server1
dc4-server1
dc1-server1 の場合、プロトコルステータスコードと出力を取得します。
0
0
18
したがって、そのサーバーの場合、出力は各サーバーの下に各「複製:ステータス」を持つ「サーバーのインポート」リストに基づいて複数の列になります。
これは台無しになるかもしれませんが、次のようになります。
dc1-server1 dc1-server2 dc2-server1
dc2-server1: 0 dc2-server2: 0 dc1-server1: 0 ...
dc3-server1: 0 dc3-server2: 18 dc3-server1: 13 ...
dc4-server1: 18 dc4-server2: 0 dc4-server1: 0 ...
これに似ています(ただし動作しませんが)。
#!/bin/bash
. ~/.ldap-config
DOMAIN=$(domainname)
ROWSTOT=0
for SERVER in $MASTER $REPLICAS ; do
${SERVER}REPLICAS=$(ipa-replica-manage -p $(cat ~/.dsp) list -v $SERVER.$DOMAIN | grep ': replica' | sed 's/: replica//')
ROWS=$(echo "${SERVER}REPLICAS" | wc -l)
[ "$ROWS" -gt "$ROWSTOT" ] && ROWSTOT=$ROWS
${SERVER}STATUS=$(ipa-replica-manage -p $(cat ~/.dsp) list -v $SERVER.$DOMAIN | grep 'status: Error (' | sed -e 's/.*status: Error (//' -e 's/).*//')
done
for (( C=1; C<=$ROWSTOT; C++ )) ; do
for SERVER in $MASTER $REPLICAS ; do
#echo -n "${SERVER}REPLICAS[$C]: ${SERVER}STATUS[$C]"
printf "%-28s" "${SERVER}REPLICAS[$C]: ${SERVER}STATUS[$C]"
done
echo
done
ipa-replica-manageの出力例。
# ipa-replica-manage -p $(cat ~/.dsp) list -v $(hostname)
dc1-server2.domain: replica
last update status: Error (0) Replica acquired successfully: Incremental update succeeded
last update ended: 2021-04-08 12:13:05+00:00
dc4-server2.domain: replica
last update status: Error (0) Replica acquired successfully: Incremental update succeeded
last update ended: 2021-04-08 12:13:05+00:00
dc3-server1.domain: replica
last update status: Error (0) Replica acquired successfully: Incremental update succeeded
last update ended: 2021-04-08 12:13:05+00:00
dc2-server1.domain: replica
last update status: Error (0) Replica acquired successfully: Incremental update succeeded
last update ended: 2021-04-08 12:13:05+00:00
.ldap-configにはローカル環境/クラスタ設定があります(サーバー名/番号が異なる複数のクラスタがあります)、ここで使用されている唯一の行は次のとおりです。
MASTER=dc1-server1
REPLICAS="dc1-server2 dc2-server1 dc2-server2 dc3... "