• 목록
  • 아래로
  • 위로
라이선스 MIT

안녕하세요?


이 스크립트는 ping 테스트를 하고 그 결과를 "시행시간 - ping 결과값"으로 로그 파일로 저장합니다.


저의 미니 홈서버(스틱 PC)에서 윈도우 스케줄러에 넣고 가볍게 돌리려는 목적으로 작성되었습니다.

(일본 VPS들의 일주일간 오전/오후/야간 시간대의 ping을 알아보기 위해 만들었습니다)



스포어 회원님들께서는 대부분 개발자이실텐데 


개발자가 아닌 저의 부족한 실력으로 짠 스크립트가 부끄럽네요 ㅠㅠ


실례를 무릅쓰고 간단히 설명을 드리면 


우선 cmd 창에서 ping 명령어를 실행하고 


이를 오토핫키로 불러와서 "ms"라는 문자열이 있는지 정규식으로 확인하여 ping loss 여부를 판단하고 


ping 테스트 결과값을 날짜 및 시간과 함께 로그파일에 저장하고 윈도우 메세지 박스로 알려줍니다.


물론 오토핫키 자체의 명령어만으로도 스크립트를 짤 수도 있겠지만


제가 실력이 부족하여 빠른 개발을 위해 cmd에서 ping 테스트를 한 것을 불러오는 방식을 선택했습니다.


URL := "studyforus.com"   ;스포어의 ping을 체크해보겠습니다.
timeout = 1000   ;ping 테스트에서 타임아웃값은 1000으로 잡았습니다.
 
Runwait, %comspec% /c ping -w %timeout% %url% > ping.log,,hide   ;cmd에서 ping 명령어를 실행합니다.
fileread, strvar, ping.log   ;ping을 실행한 결과를 열어서 변수로 불러옵니다.
filedelete, ping.log   ;임시생성한 파일을 삭제합니다.
 
if RegExMatch(strvar, " = (\d+)ms$", testdata)   ;=와 ms 사이의 마지막 정수값(평균)을 찾습니다.
    result := "average " testdata1 "ms"
else
    result := "No response"   ;4번 모두 ping loss된 경우의 처리를 해줍니다.
 
formattime, curtime,, yyyy/MM/dd HH:mm:ss   ;현재 날짜와 시간을 불러옵니다.
fileappend, %curtime% - %result% `n, pinghist.log   ;로그 파일로 결과를 저장합니다.
msgbox, %result%   ;메세지박스로 출력합니다.


오토핫키에서는 관리자 권한과 관련된 부분을 건드리지 않더라도


위와 같은 스크립트만으로도 원하는 결과를 얻을 수 있었습니다.


제가 생각하는 이 스크립트의 가장 큰 단점은


일본 VPS가 저녁시간대에 4번 테스트 중에 1번 정도 ping loss 되는 경우가 가끔 있는데 


그러한 경우까지 로그 파일에 반영하지 못한다는 점입니다.


그럼 스포어 회원님들께서도 뜻깊은 한가위 되시기를 기원합니다.


항상 감사드립니다.



네모님 네모 포함 1명이 추천

추천인 1

작성자
이니스프리 95 Lv. (74%) 733430/737280EXP

ཇོ་མོ་གླང་མ

댓글 2

이니스프리 작성자
profile image
ping loss 되는 경우를 체크하여 파일에 기록하기 위하여 다음과 같이 수정하였습니다.

"TTL"이란 문자열이 cmd에서 ping을 수행한 결과에 몇 번 반복되는지를 카운트하는 방식을 택했습니다.

결과값은 4번 ping 시도에서 몇 번 성공하였는지의 방식으로 출력됩니다.

영문 윈도우와 한글 윈도우 모두에서 잘 작동하는 것을 확인했습니다.

부족한 점을 더 보완하게 되면 다시 댓글을 남기겠습니다 ^^


URL := "www.studyforus.com"
timeout = 1000

Runwait, %comspec% /c ping -w %timeout% %url% > ping.log,,hide
fileread, strvar, ping.log
filedelete, ping.log

Loop
{
stringgetpos, temp, strvar, TTL, L%a_index%
if errorlevel
{
count := a_index - 1
break
}
}

if RegExMatch(strvar, " = (\d+)ms$", testdata)
result := "average " testdata1 "ms : " count "/4"
else
result := "No response : 0/4"

formattime, curtime,, yyyy/MM/dd HH:mm:ss
fileappend, %curtime% - %result% `n, pinghist.log
msgbox, %result%
comment menu
2018.09.26. 23:12

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자
profile image
사이트별로 로그 파일명을 변경하는 것이 번거로워서

다음과 같이 로그 파일명에 사이트 URL을 포함하도록 수정했습니다.

아래의 경우 로그파일은 ping_studyforus.log로 저장됩니다.


URL := "www.studyforus.com"
timeout = 1000

Runwait, %comspec% /c ping -w %timeout% %url% > ping.log,,hide
fileread, strvar, ping.log
filedelete, ping.log

Loop
{
stringgetpos, temp, strvar, TTL, L%a_index%
if errorlevel
{
count := a_index - 1
break
}
}

if RegExMatch(strvar, " = (\d+)ms$", testdata)
result := "average " testdata1 "ms : " count "/4"
else
result := "No response : 0/4"

formattime, curtime,, yyyy/MM/dd HH:mm:ss
filename := "ping_" strsplit(URL, ".")[2] ".log"
fileappend, %curtime% - %result% `n, %filename%
comment menu
2018.10.02. 18:21

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 분류 제목 글쓴이 날짜 조회 수
56 코드 [JS] http를 https로 리디렉션! 3 Hanam09 Hanam09 18.12.30.08:36 519
55 코드 [PHP] 이미지를 원하는 크기(원본비율 유지)로 리사이즈 하여 출력 (원본 이미지는 수정하지 않습니다) 6 이니스프리 이니스프리 18.12.20.18:42 3045
54 코드 [아미나] 네이트 실시간 검색어 순위 위젯 (아미나 캐시 적용) 3 image 이니스프리 이니스프리 18.12.18.19:28 555
53 코드 [아미나] 출석 여부를 나타내는 메인화면 위젯 4 image 이니스프리 이니스프리 18.12.15.13:44 498
52 코드 [PHP] 간단한 캐싱 클래스 3 humit title: 황금 서버 (30일)humit 18.12.06.13:41 460
51 코드 [Python] 텔레그램을 이용한 게시판 새 글 알림봇 7 이니스프리 이니스프리 18.12.02.16:25 1699
50 코드 [아미나] 게시글을 작성하면 ID와 IP로 필터링하여 자동으로 랜덤 댓글을 남기기 (+랜덤 포인트) 7 image 이니스프리 이니스프리 18.11.18.06:20 399
49 코드 [PHP] 그누보드 자동 게시글 작성 - 일본기상협회의 우리나라 날씨를 크롤링한 후 파파고로 번역하여 글 작성 4 image 이니스프리 이니스프리 18.11.15.19:58 396
48 코드 [PHP] 기상청 RSS 시간별 예보 위젯 - cache 적용(?) 9 image 이니스프리 이니스프리 18.10.28.11:21 358
47 코드 [오토핫키] 브라우저를 열어 지난번과 동일한 폴더에 MZK를 다운받고 압축을 네이티브로 해제하는 스크립트 image 이니스프리 이니스프리 18.10.20.10:28 446
46 코드 [PHP] 기상청 중기예보를 캐러셀로 보여주는 위젯 (매우 허접합니다 ㅠㅠ) 10 image 이니스프리 이니스프리 18.09.28.20:39 378
45 코드 [오토핫키] 구글 드라이브의 공유링크를 이미지 호스팅을 위한 다이렉트 링크로 바꿔주는 스크립트 10 image 이니스프리 이니스프리 18.09.25.16:54 1097
코드 [오토핫키] 특정 사이트에 대한 ping 테스트 결과를 실행시간과 함께 로그 파일로 저장하는 스크립트 2 이니스프리 이니스프리 18.09.22.10:59 775
43 코드 [Python] 모 정부기관 사이트 파싱 후 PC 통신처럼 열람하고 싶은 게시글 번호를 입력하면 내용을 보여주는 소스 (허접) 4 이니스프리 이니스프리 18.09.14.23:31 400
42 코드 파이선 셸에서 실행하면...? 3 제르엘 title: 생일 케이크 (1년권)제르엘 18.07.22.23:54 397
41 코드 C언어 삼중자를 이용한 코드 humit title: 황금 서버 (30일)humit 18.07.22.22:49 286
40 코드 폰트를 자동 설치하는 코드 1 네모 네모 18.07.16.07:21 413
39 코드 잘못 쓰면 컴퓨터가 날아가는 코드 29 제르엘 title: 생일 케이크 (1년권)제르엘 18.07.08.22:36 742
38 코드 매우 특이한 버그 9 title: 대한민국 국기gimmepoint 18.06.05.19:56 383
37 내가 만든 merge sort 3 title: 대한민국 국기gimmepoint 18.05.17.21:27 287