Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

NO-IP Account-Renew Script 1.0

    Nobody is reading this thread right now.
Bingo.....das geht :-) ...sogar mit 5 Domains :-)
OK host.php?host_id=62****
OK host.php?host_id=39**0203
OK host.php?host_id=12**0248
OK host.php?host_id=50***361
OK host.php?host_id=50****85

;) Vielen Dank hier an alle Beteiligten: MegaV0lt und DarkStarXxX
 
Hi,
bei mir nun mit dem neuen @MegaV0lt -Mod auch alles bestens :)
Code:
root@debian-server:/opt/noip# ./renewnew
OK host.php?host_id=******67
OK host.php?host_id=******46
Besten Dank dafür!
 
Schön, dass es funktioniert. Ich hoffe nur das es auch eine Weile so bleibt. Bei Dynd** war das damals auch so... irgendwann ging es dann nur noch kostenpflichtig...
 
Ich habe vor einigen Jahren mal angefangen einen Mailserver zuhause auf zu setzen und dafür staticip.de als Domäne (weil sie eine DE Domäne war) zu nutzen. Mittlerweile ist der Anbieter NUR noch kostenpflichtig, keine Free Accounts mehr, allerdings die Bestandskunden sind weiterhin frei. Bleibt zu hoffen, daß das bei NO-IP auch so bleibt.
 
Das einzige was jetzt noch fehlt wäre, daß nach erfolgreichem Updaten eine Mail an eine frei definierbare e-Mail Adresse versant wird. Ich bin kein (Python) Programmierer und reibe mich schon den ganzen Nachmittag daran, entweder das Logfile als Attachment an eine Mail an zu hängen oder den Inhalt des Logfiles als Mail Body zu versenden. Wahlweise auch nur den letzten Result code des letzten Updates. Ich kriege es nicht gebacken. Logfile in ein Array schreiben und als Body versenden mag python nicht, Logfile als Anhang kommt auch nie mit :-) Nur reine Mail ohne attachment. Resultat des letzten updates als Body hab ich noch nicht versucht....kann das jemand machen ? :-)
 
Ich habe nun ein Script für den Email-Versand für das Log gefunden und habe es als CronJob auf meinem Pi eingebunden. Wenn ich morgen eine automatische Mail erhalte, stelle ich das hier zur Verfügung.
 
hallo Smily. Das ist kein Ding. Mache ich auch. Nutze sendemail als Mailsender. Würde es aber gerne direkt per Python oder aber aus Python heraus mit sendemail machen. Noch besser wäre ja direkt das Resultat des Updates per Mail zu senden. Morgen früh Versuch ich das nochmal direkt per Python.
 
Am einfachsten ist es, wenn man einfach die Ausgaben vom cronjob per mail bekommt. Wenn cron richtig konfiguriert ist, werden ausgaben gemailt. dazu in crontacb einfach die umleitung nach ">/dev/null" entfernen...
Code:
# NO-IP Accountbestätigung (Zweimal im Monat)
05 06  1,15 * *  /mnt/usbdrive/sbin/NOIP-Account-Renew >/dev/null
EDIT: Mail von cron sieht bei mir dann so aus:
Du musst angemeldet sein, um Bilder zu sehen.
 
Zuletzt bearbeitet:
Hallo
basierend auf MegaV0lt's Version von gestern abend möchte ich noch einen zusatz hier posten, womit dasScript in deR Lage ist zusätzlich noch eine Status Mail zu versenden, die als Attachment das /var/log/NOIP_renew.log mitsendet.
Ich möchte hier keineswegs die Originalverison von DarkStarXxX oder MegaV0lt "hitchhiken" sondern basierend auf deren Ideen etwas hinzufügen.
Im Prinzip muss der SMTP Teil hier im Spoiler nur unter das bestehende Script angefügt werden und ein paar Variablen gesetzt werden.

fromaddr = "sender@email.de"
toaddr = "recipient@email.de"
server = smtplib.SMTP('MAILSERVER', 25)

Sollte eine authentifizierungspasswort benötigt werden dann
#server.login(fromaddr, "password")
auskommentieren und password setzen

Dann noch die Zeile quit() auskommentieren, wenn eine Mail gesendet werden sollte

################ SMTP Section #################
# Sending Result e-Mail
# Comment the below line if you like to send a Status Mail ---> #quit()
quit()


import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders

fromaddr = "sender@email.de"
toaddr = "recipient@email.de"

msg = MIMEMultipart()

msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "NO-IP Account Updater"

body = "NO-IP Account Updater Service updated your NO-IP Account for another 30 days. Please check the attached Logfile"

msg.attach(MIMEText(body, 'plain'))

filename = "NO-IP_updater.log"
attachment = open(LOG_FILE, "rb")

part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

msg.attach(part)

# Example: Server Address and TCP Port - Exmaple: '192.168.1.1' , 25
server = smtplib.SMTP('MAILSERVER', 25)
server.starttls()
# In case server needs Authentication, uncomment below line - remove #
#server.login(fromaddr, "password")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()




Hier auch noch einmal das komplette Script basierend auf DarkStarXxX + MegaV0lt's Version und dem SMTP Teil

#!/usr/bin/env python
### *|--------------------------------|* ###
### *| NO-IP Account-Renew Script 1.0 |* ###
### *| (c) by DarkStarXxX @ DEB |* ###
### *|--------------------------------|* ###
# Modifiziert von MegaV0lt @ DEB
# Modifiziert von Slash (SMTP Part)
# VERSION=161020

import mechanize

import ssl
if hasattr(ssl, '_create_unverified_context'):
ssl._create_default_https_context = ssl._create_unverified_context

import time

import datetime

# Define data
USERNAME = ""
PASSWORD = ""
HOST_URL = " "
LOG_FILE = "/var/log/NOIP_renew.log"

# Date and time for log
ts=datetime.datetime.now().strftime("%d. %B %Y %I:%M%p")

# Update host
def update_host(str_host, brow):
brow.select_form(nr=00)
brow.submit()
# Check if OK
if brow.response().read().find("Update will be applied") >= 0:
f1=open(LOG_FILE, 'a+')
print >> f1,ts,"OK " + str_host
print("OK " + str_host)
else:
print >> f1,ts,"FAILED " + str_host
print("FAILED " + str_host)
return

# Browser options
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_robots(False)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.addheaders = [('User-agent', 'Chrome')]
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

# Open site
br.open(HOST_URL)

br.select_form(nr=0)
br.form["username"] = USERNAME
br.form["password"] = PASSWORD
br.submit()

br.find_link(text='Manage Hosts')
req = br.click_link(text='Manage Hosts')
br.open(req)

mylink = [] # Leers Array

# Links in Array speichern
for link in br.links():
if link.text == 'Modify':
mylink += [link]

# Links klicken
for link in mylink:
req = br.click_link(link)
br.open(req)
update_host(link.url, br)

################ SMTP Section #################
# Sending Result e-Mail
# Comment the below line if you like to send a Status Mail ---> #quit()
quit()


import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders

fromaddr = "sender@email.de"
toaddr = "recipient@email.de"

msg = MIMEMultipart()

msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "NO-IP Account Updater"

body = "NO-IP Account Updater Service updated your NO-IP Account for another 30 days. Please check the attached Logfile"

msg.attach(MIMEText(body, 'plain'))

filename = "NO-IP_updater.log"
attachment = open(LOG_FILE, "rb")

part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

msg.attach(part)

# Example: Server Address and TCP Port - Exmaple: '192.168.1.1' , 25
server = smtplib.SMTP('MAILSERVER', 25)
server.starttls()
# In case server needs Authentication, uncomment below line - remove #
#server.login(fromaddr, "password")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
|/SPOILER]
 
Bei mir macht das Script TLS
hier das log meines Mailservers
[20/Oct/2016 16:19:23][2920] {smtps} Command STARTTLS
[20/Oct/2016 16:19:23][2920] {smtps} Successfully switched to TLS mode
[20/Oct/2016 16:19:24][2920] {smtps} Command ehlo [192.168.x.x]
[20/Oct/2016 16:19:24][2920] {smtps} Sent reply to EHLO: 250 mailserver.xxxicip.de ...
Schau ganz unten im Script
server.starttls()
 
Und hier noch meine finale Version
Per Mail wird jetzt nicht nur das komplette Log mitgesendet sondern auch noch im Mailbody die Ergebnisse des aktuellen updates.
Also die Mails sieht dann folgendermaßen aus:

NO-IP Account Updater Service updated your NO-IP Account for another 30 days. Please check the attached Logfile

OK host.php?host_id=xxx567
OK host.php?host_id=39130xxx
OK host.php?host_id=12xxx248
OK host.php?host_id=xxx83361
OK host.php?host_id=50779xxx


#!/usr/bin/env python
### *|--------------------------------------|* ###
### *| NO-IP Account-Renew Script 1.0 |* ###
### *| (c) by DarkStarXxX @ DEB |* ###
### *|--------------------------------------|* ###
# Modifiziert von MegaV0lt @ DEB
# Modifiziert von SLASH @ DEB
# VERSION=161020_2

import mechanize
import ssl

if hasattr(ssl, '_create_unverified_context'):
ssl._create_default_https_context = ssl._create_unverified_context

import time
import datetime

# Define data
USERNAME = "username"
PASSWORD = "password"
HOST_URL = " "
LOG_FILE = "/var/log/NOIP_renew.log"
RESULT_STR = []

# Date and time for log
ts=datetime.datetime.now().strftime("%d. %B %Y %I:%M%p")

# Update host
def update_host(str_host, brow):
global RESULT_STR
brow.select_form(nr=00)
brow.submit()
# Check if OK
if brow.response().read().find("Update will be applied") >= 0:
f1=open(LOG_FILE, 'a+')
print >> f1,ts,"OK " + str_host
print("OK " + str_host)
RESULT_STR.append("OK " + str_host)
else:
print >> f1,ts,"FAILED " + str_host
print("FAILED " + str_host)
RESULT_STR.append("FAILED " + str_host)
return

# Browser options
br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_robots(False)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.addheaders = [('User-agent', 'Chrome')]
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

# Open site
br.open(HOST_URL)

br.select_form(nr=0)
br.form["username"] = USERNAME
br.form["password"] = PASSWORD
br.submit()

br.find_link(text='Manage Hosts')
req = br.click_link(text='Manage Hosts')
br.open(req)

mylink = [] # Leers Array

# Links in Array speichern
for link in br.links():
if link.text == 'Modify':
mylink += [link]

# Links klicken
for link in mylink:
req = br.click_link(link)
br.open(req)
update_host(link.url, br)

# Please uncomment the below line if you don't like to send a Status Mail
# quit()

####### SMTP Section ############
# Sending Result e-Mail


import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders

fromaddr = "sender@domain.de"
toaddr = "recipient@domain.de"

msg = MIMEMultipart()

msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "NO-IP Account Updater"

body = "NO-IP Account Updater Service updated your NO-IP Account for another 30 days. Please check the attached Logfile\n\n"
for var in RESULT_STR:
body = str(body)+str(var) + "\n"
msg.attach(MIMEText(body, 'plain'))

filename = "NO-IP_updater.log"
attachment = open(LOG_FILE, "rb")

part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

msg.attach(part)

# Example: Server Address and TCP Port - Exmaple: '192.168.1.1' , 25
server = smtplib.SMTP('192.168.0.1', 25)
server.starttls()

# In case server needs Authentication, uncomment below line - remove #
#server.login(fromaddr, "password")

text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()

Viel Spass
slash
 
Zuletzt bearbeitet:
Zurück
Oben