[Shell Script] JSON parsing using Nodejs

Shell Script에서 Nodejs를 이용하여 JSON 값 가져오기


의도

쉘 스크립트를 이용해 프로그램 설치시 방화벽에 자동으로 포트를 추가하려고 하니 설정 정보는 JSON 파일로 되어 있어 쉘 스크립트만으로 파싱하기는 어려움이 있습니다.

다행히 프로그램이 nodejs 기반으로 돌아가는 어플리케이션이라 쉘 스크립트에서 nodejs 를 이용하여 파싱하고 값을 가져오는 처리를 하였습니다.

※ 다른 방법도 많이 있습니다. awkpython 을 이용하여 값을 가져오는 방법도 있으니 구글링해보시길 바랍니다.

입력, 실행 파일


[JSON file]

// default.json
{
    "http": {
        "port": 9080
    },
    "websocket": {
        "port": 9070
    },
    "peerjs": {
        "path": "/peerjs",
        "port": 9000,
    }
}

[Shell script file]

// test.sh

# http 포트 정보 가져오기 
HTTP_PORT=$(node -pe 'JSON.parse(process.argv[1]).http.port' "$(cat default.json)")

# peerjs 포트 정보 가져오기
PEERJS_PORT=$(node -pe 'JSON.parse(process.argv[1]).peerjs.port' "$(cat default.json)")

# websocket 포트 정보 가져오기
WEBSOCKET_PORT=$(node -pe 'JSON.parse(process.argv[1]).websocket.port' "$(cat default.json)")

echo "HTTP port is $HTTP_PORT"
echo "PEERJS port is $PEERJS_PORT"
echo "WEBSOCKET port is $WEBSOCKET_PORT"

# Output
# HTTP port is 9080
# PEERJS port is 9000
# WEBSOCKET port is 9070

실행


// 스크립트에 실행 권한을 추가 
> chmod u+x test.sh

// 스크립트 실행
> ./test.sh

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중