Skip to main content
added 792 characters in body; edited tags
Source Link

.ldap-config has local env/cluster settings (there are several clusters w/different server names/quantities), but the only lines used here are, ex;

MASTER=dc1-server1
REPLICAS="dc1-server2 dc2-server1 dc2-server2 dc3...  "

.ldap-config has local env/cluster settings (there are several clusters w/different server names/quantities), but the only lines used here are, ex;

MASTER=dc1-server1
REPLICAS="dc1-server2 dc2-server1 dc2-server2 dc3...  "
added 792 characters in body; edited tags
Source Link

example output from 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

example output from 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
added 786 characters in body
Source Link

would like to get an opinion on how best to do this in bash, thank you

for x number of servers, each has it's own list of replication agreements and their status.. it's easy to run a few commands and get this data, ex;

get servers, output;

dc1-server1 dc1-server2 dc2-server1 dc2-server2 dc3...

for dc1-server1, get agreements, output;

dc2-server1
dc3-server1
dc4-server1

for dc1-server1, get agreement status codes, output;

0
0
18

so output would be several columns based on the 'get servers' list with each 'replica: status' under each server, for that server

this may get munged, but something like;

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  ...

something vaguely like this (tho this doesn't work);

#!/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

would like to get an opinion on how best to do this in bash, thank you

for x number of servers, each has it's own list of replication agreements and their status.. it's easy to run a few commands and get this data, ex;

get servers, output;

dc1-server1 dc1-server2 dc2-server1 dc2-server2 dc3...

for dc1-server1, get agreements, output;

dc2-server1
dc3-server1
dc4-server1

for dc1-server1, get agreement status codes, output;

0
0
18

so output would be several columns based on the 'get servers' list with each 'replica: status' under each server, for that server

this may get munged, but something like;

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  ...

would like to get an opinion on how best to do this in bash, thank you

for x number of servers, each has it's own list of replication agreements and their status.. it's easy to run a few commands and get this data, ex;

get servers, output;

dc1-server1 dc1-server2 dc2-server1 dc2-server2 dc3...

for dc1-server1, get agreements, output;

dc2-server1
dc3-server1
dc4-server1

for dc1-server1, get agreement status codes, output;

0
0
18

so output would be several columns based on the 'get servers' list with each 'replica: status' under each server, for that server

this may get munged, but something like;

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  ...

something vaguely like this (tho this doesn't work);

#!/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
Source Link
Loading