SSH 출력을 json 형식으로 변환해야 함

SSH 출력을 json 형식으로 변환해야 함

출력 덩어리를 생성하는 코드 조각이 있습니다.

TIBCO ActiveMatrix BusinessWorks version 6.4.2, hotfix 7, build V103, 2018-07-18 Connecting to the BW Agent using TIBCO ActiveSpaces (Java). Enterprise Edition. Version 2.1.6.011 Connected to BW Agent
Domain: 3APIServices

Name                                               Version  AppSpace                       Profile                        Status          Deployment Status (Running/Total)
AS_CRM_032-CustomerAccount_CRM.application         1.0      AS_CRM_032_AppSpace            PROFILE.substvar               Running         Deployed          (1/1)
a
/home/REBUSCLOUD/kramk/ServiceLive.sh: line 6: /opt1/tibco/tea/2.3/bin/bwadmin: No such file or directory
TIBCO ActiveMatrix BusinessWorks version 6.4.2, hotfix 7, build V103, 2018-07-18
Connecting to the BW Agent using
 TIBCO ActiveSpaces (Java). Enterprise Edition. Version 2.1.6.011
 Connected to BW Agent


Domain: 3APIServices

Name                                               Version  AppSpace                       Profile                        Status          Deployment Status (Running/Total)
AS_DW_021_3APIFailureEvents_DW.application         1.0      AS_DW_021_AppSpace             PROFILE.substvar               Running         Deployed          (1/1)
a
/home/REBUSCLOUD/kramk/ServiceLive.sh: line 6: /opt1/tibco/tea/2.3/bin/bwadmin: No such file or directory
TIBCO ActiveMatrix BusinessWorks version 6.4.2, hotfix 7, build V103, 2018-07-18
Connecting to the BW Agent using
 TIBCO ActiveSpaces (Java). Enterprise Edition. Version 2.1.6.011
 Connected to BW Agent

아래와 같이 출력을 json 형식으로 변환해야 합니다.

{
            "Domain": "3APIservices",
            "Name": "AS_CRM_032-CustomerAccount_CRM.application",
             "Version": "1.0",
            "Appspace": "AS_CRM_032_AppSpace",
         },

누구든지 이 문제를 해결하도록 도와줄 수 있나요?

아래는 제가 사용하는 코드입니다. 이것은 루프에 있으므로 하나씩 출력을 얻습니다. 문제는 다른 곳에서 사용할 수 있도록 json에 넣어야 한다는 것입니다.

for f in ls -d /opt1/tibco/bw/6.4/domains/*/appspaces/*; do
 DomainName="${f%%'/appspaces/'*}"
 DomainName="${DomainName##*/}"
 AppSpaceName="${f##*'/'}"
 Command_To_Execute="/opt1/tibco/bw/6.4/bin/bwadmin --propFile /opt1/tibco/bw/6.4/bin/bwadmin.tra show -domain ${DomainName} -appspace ${AppSpaceName} applications"
 /opt1/tibco/tea/2.3/bin/bwadmin show -domain domains -appspace appspaces applications
 if [ "$DomainName" != 'ls' -a "$DomainName" != "-d" ]
 then
eval "${Command_To_Execute}"
  echo "a"
 else
  ""
 fi
done

답변1

먼저 출력 형식을 지정하고 불필요한 정보를 모두 제거해야 할 것 같습니다. 고정 필드, 키워드 등을 고려하십시오.

그 후에는 사용할 수 있습니다JSON으로 변환합니다. JSON을 인코딩/디코딩하는 데 몇 번 사용했습니다.

https://stedolan.github.io/jq/

관련 정보