본문 바로가기

IT 이야기/네트워크(Network)

Ping 명령 활용하기 (ping output text file)

728x90
반응형





Ping 명령 좀 더 효율적으로 사용해 보자.


특정 호스트가 살아 있는지 죽었는지 확인하게 위해 Ping 명령을 많이 사용하는데요.
한 가지 단점이 있다면, 실시간으로 확인은 가능하지만 Log 를 남길 수 없다는 단점이 있습니다.

하지만 몇 가지 Dos 함수를 이용해서 Log 를 남길 수 있는 방법에 대해서 설명 드립니다.

단순히 ping 명령을 > 를 이용해서 text file 로 남기면 되지만,
문제는 동일한 Host 에게 적용할 경우 새로운 파일명을 일일이 지정해 주지 않는 이상, 
파일명이 중복되어 기존 파일에 덮여씌여진다는 것입니다.

그래서 고민 끝에 중복되지 않는 절대적인 파일명이 필요했고, 날짜와 시간을 생각해냈습니다.

결론
부터 보자면 아래와 같습니다.

c:\>ping 168.126.63.1 > "%date:~5,5%_%time:~0,2%-%time:~3,2%-%time:~6,2%.txt"


위 명령을 입력하면 현재의 날짜와 시간,초 를 파일명으로 하는 Text 파일을 만듭니다.

2009-10-14  오후 06:11    <DIR>          .
2009-10-14  오후 06:11    <DIR>          ..
2009-10-14  오후 06:11               380
10-14_18-11-41.txt   (10월14일 18시11분41초에 생성됨)

풀이를 해 보자면,

  • ping 168.126.63.1   
    (이건 누구나 다 아는 kt DNS 로 ping 을 쏜 거죠.)
  • >    
    (이건 ping 내용을 output 하라는 거죠.)



그 다음 나오는게 파일명입니다.

  • "%date:~5,5%_%time:~0,2%-%time:~3,2%-%time:~6,2%.txt"

    이건 날짜와 시간을 조합한 건데요.

    하나하나씩
    볼까요..?




먼저, %date%  라는 옵션만 주었을 경우에는 다음과 같이 출력됩니다.

2009-10-15  오전 10:25               380 2009-10-15.txt

그런데 위에서는 단순히 %date% 만 사용한게 아니죠.

%date:~5,5%  라고 적용했습니다.

이건 date 의 6번째 문자부터 5개를 출력하라는 뜻입니다. 왜 5,5 인데 5번째가 아니고 6번째일까요.?

첫 번째 문자가 1이 아니라, 0부터 시작한다는 것을 알 수 있습니다. 2009의  "2" 라는 숫자 앞에 공백이 하나 더 있는지는 모르겠습니다.


어쨌든 2009의 2가 1이 아니라 0이라는 겁니다.


그러므로 %date:~5,5% 는  0,1,2,3,4,5  번째 문자니깐 년도부분 2009- 는 제외한 날짜부분 10-15  이렇게 되는거죠.



뒷부분 time 부분도 동일합니다.

그냥 %time% 만 했을 경우는 이렇습니다.

10:32:56.97
   (10시 32분 56.97초 입니다.)



time 역시 date 와 동일한 방법으로 잘랐습니다. 

그리고 여기서 한 가지
주의할 점은 windows 의 폴더나 파일명에 시간의 구분자인 콜론( : ) 은 사용할 수 없다는 겁니다.


그래서 다음과 같이 해석할 수 있습니다.


"%date:~5,5%_%time:~0,2%-%time:~3,2%-%time:~6,2%.txt"

      10-15     _       10         -        32       -       56        .txt



그리고 파일명의 앞뒤에 큰 따옴표가 있는데, 이 부분은 자세히 어떤 역할을 하는지 모르겠습니다.

그냥 파일명만 사용했을 경우, 작은 따옴표로 묶었을 경우, 큰 따옴표로 묶었을 경우 .. 3가지의 경우

뭔가 차이가 있는 것 같은데, 자세한 내용은 검색을 해봐야 할 것 같네요.


위 내용을 이용해서 좀 더 디테일하게 활용을 해본다면,

mkdir c:\log
                 (log 폴더를 c 드라이브의 루트에 생성합니다.)

ping 168.126.63.1 -n 1000 >> c:\log\%date:~5,5%_%time:~0,2%-%time:~3,2%.txt          
                                      (필요한 host 에게 1000개의 ping 을 쏘아서  log 폴더 아래 "xx월xx일xx시xx분.txt " 라는 파일로 기록합니다.)

뭐.. 별로 Detail 하지는 않네요.ㅎ 


상용 프로그램 중에 괜찮은 Ping 프로그램이 있긴 하지만,

공공기관이나 기업체에서는 사용하기에 제약이 따르고,

Windows 에 기본적으로 내장된 명령을 이용해서 좀 더 효율적으로 사용할 수 있는 방법이 없을까...

라는 고민을 하다 여기저기 정보를 조합해서 해결을 했습니다.


필요한 Host 가 여러개 일 경우, 또는 주기적으로 Ping 이 필요할 경우에 위 명령을 BAT 파일로 만들어서 간단히 실행할 수 있겠네요.

728x90
반응형