태그 보관물: nodejs

[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

[Nodejs] CentOS 설치

1. Download Node binary

https://nodejs.org/en/download/ 링크로 이동하여 바이너리 파일을 다운로드 합니다.

* 아래 링크는 설치 일시 및 노드 버전에 따라 달라질 수 있습니다.

$ wget https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x64.tar.gz

2. 압축 해제 및 압축 해제 파일 이동

2.1 다운로드 파일 압축 해제

$ tar xfz node-v4.2.4-linux-x64.tar.gz

2.2 압축 해제 파일 이동

$ mv node-v4.2.4-linux-x64 /usr/local/node

3. 환경 변수 설정하기

자신의 환경 변수 파일을 수정합니다. (.profile or .bashrc)

[~/.profile]

export NODE_HOME=/usr/local/node
export PATH=$PATH:$NODE_HOME/bin

4. 설치 결과 확인

[coozplz@localhost ~]$ node
> console.log('helloworld')
helloworld
undefined