brainage.egloos.com

포토로그



내 PC IP주소를 자동으로 기록해 집밖에서 보는법2 by 천하귀남

내 PC IP주소를 자동으로 기록해 집밖에서 보는법

지난번에 사용했던 방법은 PC자체가 바로 인터넷과 연결되 있거나 DMZ같은 공유기에 부여된 아이피를 끌어올수 있는경우에 한정됩니다. 네트웍 상황에 따라 내부 IP만 써야하는 경우도 있는데 이럴 때 공유기에 부여된 IP는 따로 알아 기록하는 방법이 있습니다.

http://www.findip.kr/ 와 같이 웹상에서 내 IP를 알려주는 웹페이지들이 있는데 이걸 읽어 기록하면 됩니다.

하지만 이걸 어떻게 기록할까요? 이런건 어느정도 프로그래밍 지식이 필요하긴 합니다. 여기에 프로그램을 만들어낼 언어툴도 있어야 합니다.

다행하게도 윈도우OS에는 WHS(Windows Script Host)라고 하는 스크립트 엔진이 내장되 배치파일처럼 .vbs확장자를 가진 베이직 코드를 실행시킬수 있습니다. VB.NET이나 ASP를 하는 분이라면 자유롭게 프로그래밍 하실수 있습니다.

그래서 간단하게 웹페이지를 읽어 날자.HTM으로 저장하는 파일을 하나 만들었습니다.
Const ForReading = 1          ' 읽기 모드
Const ForWriting = 2 ' 쓰기 모드
Const ForAppending = 3 ' 추가 모드

Const TristateUseDefault = -2 ' 시스템 기본값으로 파일 열기
Const TristateTrue = -1 ' Unicode로 파일 열기
Const TristateFalse = 0 ' ASCII로 파일 열기

Dim fs ' 파일시스템 개체
Dim f ' TextStream 개체

Dim strUrl '읽으려는 경로
strUrl = "http://www.findip.kr/"

Dim strFileNema '파일명(연-월-일.txt 생성)
strFileNema = date & ".html"

Dim strText

Dim objArgs
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
WScript.Echo objArgs(I) '외부인수 받아서 출력
Next

Set objWinHttp = WScript.CreateObject("WinHttp.WinHttpRequest.5.1")
objWinHttp.Open "GET", strUrl, false
objWinHttp.Send()
strText = fnStreamBinaryToString(objWinHttp.ResponseBody, "UTF-8")

set objWinHttp = nothing

'불러온 HTML을 파일로 기록
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(strFileNema, ForWriting, True, TristateTrue)
f.Write strText
f.close

Function fnStreamBinaryToString(Binary, CharSet)
Const adTypeText = 2
Const adTypeBinary = 1
'//Create Stream object
Dim BinaryStream 'As New Stream

'Set BinaryStream = Server.CreateObject("ADODB.Stream")
Set BinaryStream = WScript.CreateObject("ADODB.Stream")
'//Specify stream type - we want To save text/string data.
BinaryStream.Type = adTypeBinary
'//Open the stream And write text/string data To the object
BinaryStream.Open
BinaryStream.Write Binary
'//Change stream type To binary
BinaryStream.Position = 0
BinaryStream.Type = adTypeText
'//Specify charset For the source text (unicode) data.
If Len(CharSet) > 0 Then
BinaryStream.CharSet = CharSet
Else
BinaryStream.CharSet = "us-ascii"
End If
'//Open the stream And get binary data from the object
fnStreamBinaryToString = BinaryStream.ReadText
End Function


위처럼 작성된 VBS를 커맨드 명령창을 열어

CScript /NOlogo tt.vbs

실행시키면 해당 웹 페이지를 같은 폴더안에 저장시켜 놓습니다. (VBS자체는 탐색기에서 마우스 클릭으로 실행가능)
이제 이 스크립트를 자동실행기능을 이용해 하루에 한번씩 자동실행하게 한다면 매일 해당 컴퓨터의 외부 IP를 기록해 놓을수 있습니다.
지난번처럼 비트싱크나 드롭박스 등으로 해당 폴더를 공유하면 기록된 내용을 외부에서 확인 가능합니다.

이런 외부 IP를 기록하는 방법의 장점은 공유기 아래에서 여러대의 내부IP 장치들을 서버로 만들어 외부에서 접근 가능하게 할 수 있습니다. (물론 공유기에 포트포워딩 설정은 필요) 제 경우 이걸 이용해 남는 구형 스마트폰에 FTP서버를 설치하고 외부에서 접근할까 합니다. 또 인터넷 실드가 장착된 아두이노도 동시에 접근이 가능할겁니다. 아두이노를 이용해 PC본체를 켜는 장치를 만들어 사용하면 PC서버를 필요할때만 켤수 있을겁니다. http://brainage.egloos.com/5740968

모든걸 처음부터 상세히 쓰지는 못해 죄송합니다만 그래도 혹여 검색들으로 걸려 보게 된다면 좋은 결과가 있으시길 바랍니다. ^^

덧글

  • JOSH 2013/11/16 12:36 # 답글

    저같은 경우는 집pc를 irc서버에 붙여놓고 나갑니다…
    집pc가 있는채널로 들어가 핑때리면 주소가 나오지요.
  • 천하귀남 2013/11/17 17:44 #

    PC가 켜져 있어야 되는것 아닌가요? 저것도 일단 실행할때는 PC가 당연히 켜져 있어야 합니다만 저장을 드롭박스로 할경우 PC가 꺼져 있어도 밖에서 볼수 있습니다.
  • agkdc 2013/11/16 14:12 # 삭제 답글

    import urllib2, re, BeautifulSoup
    data = BeautifulSoup.BeautifulSoup(urllib2.urlopen("http://www.findip.kr").read()).find('h1')
    output_file = open('myip.txt')
    output_file.write(re.search('d+.d+.d+.d+',data).group(0))
    output_file.close()

    파이썬 짱짱맨!
  • agkdc 2013/11/16 14:12 # 삭제

    역슬래시d+인데 역슬래시가 안 써지네요
  • 천하귀남 2013/11/17 17:45 #

    파이선은 참 간단해서 좋군요 ^^
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

구글 애널리틱스

통계 위젯 (화이트)

7771011
5746
5653533

이 이글루를 링크한 사람 (화이트)

405

당부드리는 말

블로그 사진을 포함한 전체가 아닌 일부의 내용은 얼마든지 사용하셔도 상관없습니다.

상대방을 존중하는 생각이 있다면 욕설과 과도한 비아냥은 자제를 부탁드립니다. 정도가 심하거나 비로그인의 글은 임의 삭제 가능함을 알려드립니다.

A타입 클린 캠페인 위젯

방문자

Map