Bash에 데이터 그리드 표시

Bash에 데이터 그리드 표시

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

관련 정보