2013-02-16 4 views
-3

최근 인터뷰에서 내가 할 수없는 질문을했습니다. 누구든지 이것에 대한 해결책을 얻었습니까? C에서Linux 컴퓨터에서 연결된 모든 IP 가져 오기

Grab all connected IP´s on the Linux machine 
check every connected IP if TCP port 1706 is open 

if its open > execute command. CURL ‘http:// some address ’ 
Else do nothing. 
program will check this every 60 minits 



Plattform Linux Ubuntu Server 12. X64/x32 

WAP ++

감사합니다!

+0

반드시 일부 부분을 수행 할 수 있습니다. 질문이 뭐야? –

+0

이 질문은 위에 언급 한 것입니다. – user1845209

답변

1

bash 스크립트를 만드십시오.

LOGIC :

사용 netstat -natp (다음을 grep으로, 포트를 얻을 수 awk/sed를 통해 필터링) 그런 결과가 비어 있는지 확인하기 위해 간단한 테스트를 사용합니다. 있었다면 curl을 실행하십시오.

cron 작업에 넣습니다. 정말 간단한 물건.

는 편집 :

netstat 컴퓨터에 당신에게 모든 연결을 표시하는 유틸리티입니다. netstat -natp은 컴퓨터에 tcp 소켓이있는 프로그램 목록을 보여줍니다.

sedawk은 텍스트 서식 지정에 사용됩니다. 이를 사용하여 특정 열을 나열 할 수 있습니다.

grep은 입력을 검색하여 지정된 문자열을 찾습니다.

bash는 기본 논리를 허용하며 문자열이 비어 있는지 확인하는 데 사용할 수 있습니다.

cron은 특정 시간에 명령이 실행되도록 예약하는 Linux 프로세스입니다.

편집 # 2 :

당신은 /proc/net/tcp를 폴링하지만 netstat 멋지게 그과 형식을 수행하기 때문에, 왜 귀찮게 수 있을까?

+0

죄송합니다. 이해하지 못했습니다. 너 pls 정교한 수 있을까요? – user1845209

+0

, 더 철저하게 설명하기 위해 업데이트했습니다. – cyphar

+0

그 덕분에 .. :) – user1845209

0

리눅스에서는 /proc/net의 파일을 찾아 분석합니다.

는 예를 들어, TCP 연결은, 당신은 다음 라인을 나눌 수있는이

sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode              
    0: 00000000:0007 00000000:0000 0A 00000000:00000000 00:00000000 00000000  0  0 38148735 1 0000000000000000 100 0 0 10 -1     
    1: 00000000:1F48 00000000:0000 0A 00000000:00000000 00:00000000 00000000 116  0 38923158 1 0000000000000000 100 0 0 10 -1     
    2: 00000000:0CEA 00000000:0000 0A 00000000:00000000 00:00000000 00000000 120  0 12364094 1 0000000000000000 100 0 0 10 -1     
    3: 0100007F:13AD 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1000  0 26454267 1 0000000000000000 100 0 0 10 -1     
    4: 0100007F:008F 00000000:0000 0A 00000000:00000000 00:00000000 00000000  0  0 5570 1 0000000000000000 100 0 0 10 -1      
    5: 00000000:0050 00000000:0000 0A 00000000:00000000 00:00000000 00000000  0  0 27328173 1 0000000000000000 100 0 0 10 -1     
    6: 0100007F:1913 00000000:0000 0A 00000000:00000000 00:00000000 00000000 116  0 38923868 1 0000000000000000 100 0 0 10 -1     
    7: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000  0  0 18983193 1 0000000000000000 100 0 0 10 -1     
    8: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000  0  0 38681424 1 0000000000000000 100 0 0 10 -1     

같은 것을 보여 열린 연결을보고 그에 따라 행동 할 것이다 /proc/net/tcp

head /proc/net/tcp 

에 나열되어 있습니다. 더 많은 것을 위해 netstat의 근원을보십시오.