내 PC IP주소를 자동으로 기록해 집밖에서 보는법
위처럼 작성된 VBS를 커맨드 명령창을 열어
CScript /NOlogo tt.vbs
실행시키면 해당 웹 페이지를 같은 폴더안에 저장시켜 놓습니다. (VBS자체는 탐색기에서 마우스 클릭으로 실행가능)
이제 이 스크립트를 자동실행기능을 이용해 하루에 한번씩 자동실행하게 한다면 매일 해당 컴퓨터의 외부 IP를 기록해 놓을수 있습니다.
지난번처럼 비트싱크나 드롭박스 등으로 해당 폴더를 공유하면 기록된 내용을 외부에서 확인 가능합니다.
이런 외부 IP를 기록하는 방법의 장점은 공유기 아래에서 여러대의 내부IP 장치들을 서버로 만들어 외부에서 접근 가능하게 할 수 있습니다. (물론 공유기에 포트포워딩 설정은 필요) 제 경우 이걸 이용해 남는 구형 스마트폰에 FTP서버를 설치하고 외부에서 접근할까 합니다. 또 인터넷 실드가 장착된 아두이노도 동시에 접근이 가능할겁니다. 아두이노를 이용해 PC본체를 켜는 장치를 만들어 사용하면 PC서버를 필요할때만 켤수 있을겁니다. http://brainage.egloos.com/5740968
모든걸 처음부터 상세히 쓰지는 못해 죄송합니다만 그래도 혹여 검색들으로 걸려 보게 된다면 좋은 결과가 있으시길 바랍니다. ^^
지난번에 사용했던 방법은 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
모든걸 처음부터 상세히 쓰지는 못해 죄송합니다만 그래도 혹여 검색들으로 걸려 보게 된다면 좋은 결과가 있으시길 바랍니다. ^^
덧글
집pc가 있는채널로 들어가 핑때리면 주소가 나오지요.
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()
파이썬 짱짱맨!