2014-07-09 3 views
0

다음 명령은 포트 1234에 연결된 IP 주소와 각 IP 주소의 연결 수를 알려줍니다.Nodej를 사용하여 포트에 연결된 IP 수 찾기

netstat -plan|grep :1234|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1 

1 0.0.0.0 
1 107.123.93.244 
1 107.123.141.5 
1 107.123.228.217 
1 108.123.198.185 
1 109.123.142.131 

우리가 어떻게 Node.js를에서 같은 정보를 수집 할 수 있습니다 결과?

+0

Node.js는 관리 도구를 대체하지 않으므로 이미 사용 가능한 것을 사용하지 않는 이유는 무엇입니까? 주장하시는 분은 https://www.npmjs.org/package/netstat를 방문하십시오. 또한 "netstat가 설치되어 있어야합니다. 이것은 netstat 대신 사용할 수 있으며 래퍼 만 사용할 수 있습니다. 대부분의 유닉스 계열 시스템에서는 기본적으로 net-tools 패키지에서 제공해야합니다." – alandarev

+0

@alandarev 10 개의 서로 다른 포트에 연결된 IP 주소를 표시하는 편리한 페이지를 원할 것입니다. 따라서 노드가 웹 페이지에 표시하면 유닉스 명령을 10 번 실행하고 데이터를 이해하는 것보다 낫습니다. 명령의 출력을 캡처하여 객체/배열로 저장할 수 있습니까? – Nyxynyx

답변

0

노드의 child_process module을 통해 명령을 실행할 수 있습니다. 예를 들어, spawn function을 사용하면 함께 명령 할 수 있습니다 (한 명령의 출력을 다른 명령 입력에 파이프하는 것을 의미). 당신이있는 거 명령은 파이프의 꽤 많이 가지고 있지만, 문서에서 예제로, 여기에서 실행할 수있는 방법은 ps ax | grep ssh : 다음 질문으로

var spawn = require('child_process').spawn, 
    ps = spawn('ps', ['ax']), 
    grep = spawn('grep', ['ssh']); 

ps.stdout.on('data', function (data) { 
    grep.stdin.write(data); 
}); 

ps.stderr.on('data', function (data) { 
    console.log('ps stderr: ' + data); 
}); 

ps.on('close', function (code) { 
    if (code !== 0) { 
    console.log('ps process exited with code ' + code); 
    } 
    grep.stdin.end(); 
}); 

grep.stdout.on('data', function (data) { 
    console.log('' + data); 
}); 

grep.stderr.on('data', function (data) { 
    console.log('grep stderr: ' + data); 
}); 

grep.on('close', function (code) { 
    if (code !== 0) { 
    console.log('grep process exited with code ' + code); 
    } 
}); 

:

수의 출력 명령을 캡처하여 객체/배열에 저장합니까?

당신이 당신의 마지막 명령의 데이터를 얻을

은 (당신이 보낼 것이기 때문에 다음 명령의 stdin은 각 명령의 stdout), 텍스트의 개별 라인을 잡아 문자열을 구문 분석 할 수 있습니다. 예를 들면 다음과 같습니다.

문자열 명령을 함께 사용할 수있는 방법에 대한 아이디어를 제공하고 명령이 완료되면 결과를 구문 분석 할 수 있기를 바랍니다. 그게 도움이 되니?

관련 문제