Use: To notify whomever that your IP address has changed if you have a non-static IP address and run a web server, game server, etc. Utilizes nested functions.
Source:
import os, os.path, string, time
import smtplib, socket
import win32api
# GLOBALS --------------------------------------------
(head,tail) = os.path.split(win32api.GetSystemDirectory()) # Get the win path.
(ldrive,os_root) = os.path.split(head) # Now get the local drive.
# The path will generally, if not always be c:\
# Path_log = ldrive+'\yourdir\IPy_Notify.log'
# will specify a dir of your choice - dir must be created.
Path_dat = ldrive+'IPy_Notify.dat' # Program requires this file to run properly.
Path_log = ldrive+'IPy_Notify.log'
Name = win32api.GetComputerName() # Get actual machine name.
#Add your server name, mail server, and email addresses receiving notification.
MailServer = 'smtp.yourprovider.com'
Address = ['yourmail@yourprovider.com']
#Address = ['yourmail@yourprovider.com','yourfriend@something.com']
# Multiple Addresses - uncomment will override above.
Frm_add = 'yourmail@yourprovider.com'
# From must be a valid e-mail address or the mail function will fail.
# If your ISP requires authentication, leave blank if unsure and test.
User = ''
Pass = ''
# Functions ------------------------------------------
def mail(to='',frm='',subj='',body='',server=''):
try:
message='From: %s\r\nTo: %s\r\nSubject: %s\r\n%s'%(frm,to,subj,body)
mail=smtplib.SMTP(server)
mail.sendmail(frm,to,message)
mail.close()
except:
try:
# Logon to the server... If needed
message='From: %s\r\nTo: %s\r\nSubject: %s\r\n%s'%(frm,to,subj,body)
mail=smtplib.SMTP(server)
mail.login(User,Pass)
mail.sendmail(frm,to,message)
mail.close()
except:
print 'ERROR: Unable to send notification! - '+time.ctime()
open(Path_log,'a').write(time.ctime()+' \nERROR: Unable to send notification!')
def start():
def getIP(name, path):
print 'IPy Notify by C. Nichols, 2002.\n'
ip = socket.gethostbyname(name)
print 'Current ip: '+str(ip)
open(path,'w').write(ip) #Save the current IP address.
out(name,Path_dat)
def out(name, path, stat=1):
while stat:
cur_ip = open(path,'r').readline()
new_ip = str(socket.gethostbyname(name))
if cur_ip==new_ip:
print 'Sleeping...'
time.sleep(15) # Sleep in seconds - adjust polling interval to your taste.
print 'Polling: '+new_ip+', '+time.ctime()
else:
print 'IP address has changed: '+new_ip
open(Path_log,'a').write(time.ctime()+'\nINFO: IP address has changed: '+new_ip)
print 'sending notification...'
for add in Address:
mail(to=add,frm=Frm_add,subj='Message from '+name,body='New IP address: '+new_ip+' assigned to '+name, server=MailServer)
getIP(name,Path_dat)
stat=0
getIP(Name,Path_dat)
# Run ------------------------------------------------
# Make sure this is started via the command line or
# by a .cmd file in startup - The command window can
# be hidden from a cmd file if you hate it like I do.
# Download Python @ www.python.org or PythonWin
# (active python) from www.activestate.com.
/> try:
open(Path_log,'a').write(time.ctime()+' START: IP Polling\n------------------------------------------\n')
start()
except:
open(Path_log,'a').write(time.ctime()+' \nERROR: IPy Notify failed!')
실용적인 디지털 포렌식 기법과 법률 이슈 정리. Linux, UNIX, Python, 임베디드 장치 개발 등의 강좌 수록. Blockchain, FinTech, IoT 등 최신 IT 트렌드와 관련된 취미 자료를 수집하고, 보안 인식 문화 개선을 위한 정보보호 관련 자료와 일상생활 팁들을 소개.
Reentrancy Attack: 블록체인 스마트 컨트랙트의 치명적인 취약점
블록체인 기술이 전 세계적으로 주목받으면서 스마트 컨트랙트(Smart Contract)의 사용이 급격히 증가하고 있습니다. 하지만 그만큼 보안 취약점도 함께 늘어나고 있는데, 그 중에서도 Reentrancy Attack(재진입 공격)은 매우 치명적이고...
-
뉴스출처 : http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&oid=023&aid=0002991158&sid1=001 내 배우자가 바람을 피우는 것이 확실할까. 심증...
-
PHPSCHOOL ( http://www.phpschool.com ) 국내 1위의 PHP 개발자 커뮤니티 사이트이다. PHP Builder ( http://www.phpbuilder.com ) PHP 최고 사이트라고 해도 과언이 아니며, 새로운 P...