NMS using ucd snmp
글쓴이: flatony / 작성시간: 금, 2003/05/02 - 6:29오후
ucd snmp api / command를 이용해서 일정 주기마다
등록된 agent에 폴링해서 MIB값을 가져오는 엔진을 만들생각입니다.
그런데 처음부터 막히네요
제작 환경은 linux 7.3 gcc 3.1.1 이구요 language는 C 로 구현할 거구요
등록된 agent의 ip를 확인한후 ping을 날려서 장비가 살아있는지
죽어있는지 확인한다음에 snmp 명령을 사용해서 MIB값을 가져와야할것같은데
프로그램 내부에서 ping명령을 사용해서 값을 가져온후에 내부에서
time이 3000ms 이상이거나 timeout이면 장비가 죽었다 판단하고
제대로 온다면 살아있다고 판단하게 하려고 하는데
system()함수를 썼더니 컴파일한후 쉘상태에서 실행되더라구요
결과값을 내부에서 받아서 time부분의 결과를 처리해야하는데,,,
음,,,,좀 장황하죠 ^^;;;
암튼,,,,쉘상태에서 쓰이는 프로그램을 제가 만드는 프로그램내에서 실행시킨후
값을 파싱하는 방법이 있는지 궁금합니다...
당최 어떻게 해야하는지 실마리 조차 풀수가 없으니 답답하기 그지없습니다.
고수님들께서 도움을 주시면 감사하겠습니다. ^^
Forums:
외부프로그램을 써야만한다면....1. system 을 쓰지 마
외부프로그램을 써야만한다면....
1.
system 을 쓰지 마시고,
pipe, fork, dup2, exec 순서로 자프로세스의 표준 출력을 pipe로 받아 볼 수 있는 방법.
2.
system 을 쓸 때, 모든 출력을 특정 파일로 redirect 한 뒤 그 file을 읽는 방ㅂ법.
쉬운것으로 하셔요..
3. ping source를 가져다가 쓰는 것도.. 좋은 방법일지도 ..
---
http://coolengineer.com
참고.....
저의 경우에는 router에 ping을 날리고 살아있는 것들에 대해서만 snmp와 cli 명령으로 데이타를 수집하는 프로그램을 개발한 적이 있는데...
(물론 CLI command는 router에 telnet으로 들어가서....)
ping 프로그램을 만들어 썼습니다. 가능하면 만들어 보심이...
ping 프로그램 설명은 stevens 아저씨의 unp 1권 Raw Socket chapter를 보시면 될거 같구요... 물론 다른 곳에도 많겠지만...
나를 죽이지 않는 모든 것은 나를 강하게 할 뿐이다.
허접하지만... 제가 짠 핑프로브입니다.
저도 같은 프로젝트하는데 ^^
몇군데 문제점이 있습니다.
일단 여러개 가져다가 고쳐쓰다보니 signal도 의미가 없어지고 -_-;
pthread_detach(p_thread[1]) 가 쓰레드 죽이는건줄 알았는데... 죽던말던 신경 안쓴다는거라네요.
즉 p_thread[1]은 계속 receive에서 블록되있습니다.
지금까지는 문제가 없어서... 제가 갑자기 UI로 옮겨가서 놔둔상태이지만, 발표회때 문제생기면 ㅡㅡㅋ
모두모두 감사합니다 ^^*
덕분에 조금 실마리가 풀린거 같습니다.......
지금은 ping source 분석중이구요,,,
snmpget, snmpwalk, snmpd, snmp_api.h 분석을 마쳤구요,,,,
궁금한거 있음 또 올릴게염 ^.,^
모두모두 즐프하세여~~~~~
글고 cjy1126님 함께해여,,,ㅋㅋㅋ ^_____^;;;
hi!! nice to meet you!
thanks~!
제가 보기에도. 핑을 직접 짜서 사용하시는것이 맞다고 봅니다.
ping정도는 직접 작성하시는것이 작성하는 프로그램이 제대로 돌아가는
첫번째 요건이라고 봅니다.
님께서 질문하신 방법의 젤 쉬운 방법이야.
위 예제에서 printf 부분만 수정하셔도 될듯 하지만,
popen을 모르시는 분들이 의외로 계시는군요. ^^;
P.S. cjy1126, flatony 두분혹시 같이 프로젝트 하시는거 아니에요? :)
댓글 달기