View difference between Paste ID: xFjcqBF5 and KP6XaVqy
SHOW: | | - or go back to the newest paste.
1
#! /usr/bin/python
2
3
import os
4
import time
5
import urllib2
6
import smtplib
7
from email.MIMEMultipart import MIMEMultipart
8
from email.MIMEBase import MIMEBase
9
from email.MIMEText import MIMEText
10
from email.Utils import COMMASPACE, formatdate
11
from email import Encoders
12
from datetime import datetime
13
14
def check_in():
15
16
    fqn = os.uname()[1]
17
    tries = 0
18
    success = False
19
    ext_ip = ""
20
    while (success == False and tries < 5):
21
        try:
22
            ext_ip = urllib2.urlopen('http://whatismyip.org').read()
23
            success = True
24
        except:
25
            tries += 1
26-
            logf.write("tries: %d, sleeping for 10 secs\n" % tries)
26+
            logf.write("tries: %d, sleeping for 20 secs\n" % tries)
27-
            time.sleep(10)
27+
            time.sleep(20)
28
                
29
    #print ("Asset: %s " % fqn, "Checking in from IP#: %s " % ext_ip) 
30
    return success, fqn, ext_ip
31
32
def sendMail(to, fro, subject, text, files=[],server="localhost"):
33
    assert type(to)==list
34
    assert type(files)==list
35
 
36
 
37
    msg = MIMEMultipart()
38
    msg['From'] = fro
39
    msg['To'] = COMMASPACE.join(to)
40
    msg['Date'] = formatdate(localtime=True)
41
    msg['Subject'] = subject
42
 
43
    msg.attach( MIMEText(text) )
44
 
45
    for file in files:
46
        part = MIMEBase('application', "octet-stream")
47
        part.set_payload( open(file,"rb").read() )
48
        Encoders.encode_base64(part)
49
        part.add_header('Content-Disposition', 'attachment; filename="%s"'
50
                       % os.path.basename(file))
51
        msg.attach(part)
52
 
53
    smtp = smtplib.SMTP(server)
54
    smtp.sendmail(fro, to, msg.as_string() )
55
    smtp.close()
56
57
58
logf = open('updateip.log', 'a')
59
tstamp = datetime.now()
60
logf.write("updateip.py starting at: %s\n" % tstamp)
61
success, fqn, ext_ip = check_in()
62
63
if (not success):
64
    logf.write("Couldn't get current ip, will try again in 20 mins...\n")
65
else:
66
    logf.write("FQN: %s\n" % fqn)
67
    logf.write("Ext IP: %s\n" % ext_ip)
68
    filedata = ""
69
    if (os.path.exists('ipaddr.txt')):
70
        f = open('ipaddr.txt', 'r')
71
        filedata = f.read()
72
        f.close()
73
    if (str(filedata) == ext_ip):
74
        logf.write("IP address matches!\n")
75
    else:
76
        logf.write("IPs don't match, updating ipaddr.txt...\n")
77
        f = open('ipaddr.txt', 'w')
78
        f.write(ext_ip)
79
        f.close()
80
        logf.write("...sending mail...\n")
81-
        sendMail(['To <[email protected]>'],'From <[email protected]>','Hello from %s!','Server external IP address: %s' % (fqn, ext_ip),[])
81+
        sendMail(['To <[email protected]>'],'From <[email protected]>','Hello from %s!' % fqn,'Server external IP address: %s' % ext_ip,[])
82
        logf.write("...all done!\n")
83
logf.close()