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.
Danke Alex,
ich habe mir nen Bär gesucht ..... und hatte nix gefunden ... offensichtlich habe ich meine Suchanfrage hier falsch gestellt ....

Danke, danke und Danke!
 
Das Script führt nur zur Bestätigung deines Free Accounts und hat nichts mit dem Update der IP Adresse bei NoIP zu tun.
Das regelt der Router eigenständig.

Man kann das natürlich prüfen aber bei mir läuft das eig seit Jahren auch so problemlos.
 
Hallo zusammen,

bekomme folgende Fehlermeldung.
gehe mal davon aus das es die Falsche Python Version ist?!

Code:
root@debian ~ > /usr/local/bin/NOIP-Account-Renew
Traceback (most recent call last):
  File "/usr/local/bin/NOIP-Account-Renew", line 52, in <module>
    br.find_link(text='Manage Hosts')
  File "/usr/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 620, in find_link
    raise LinkNotFoundError()
mechanize._mechanize.LinkNotFoundError

Habe derzeit folgende Version installiert.
root@debian ~ > python
Python 2.7.3 (default, Nov 24 2017, 16:26:37)

Wenn ich die aus der gepackten Datei installiere hab ich ein Spericherproblem beim Kompilieren.
 
Alte Version vom Skript?
Hast Du die letzte Version?
 
Jetzt ja aber trotzdem fehler.


Code:
root@debian ~ > /usr/local/bin/NOIP-Account-Renew
NO-IP Account-Renew Script #180807
Traceback (most recent call last):
  File "/usr/local/bin/NOIP-Account-Renew", line 81, in <module>
    myconf = importlib.import_module(CONFIG_FILE, package=None)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named NOIP_Account_Renew
 
Code:
# Wichtiger Hinweis: Externe Konfiguration
# Die Login-Daten für No-IP und eMail können aus einer externen Datei, welche in
# der Variable "CONFIG_FILE" definiert werden muss gelesen werden.
# Besonderheit: Die Datei im Dateisystem muss die Endung ".py" haben.
# Bitte dort die Daten eintragen (Im gleichen Verzeichnis wie das Skript!)
CONFIG_FILE = "NOIP_Account_Renew"  # Ohne .py (Im gleichen Verzeichnis wie das Skript!)
# Kann abgeschaltet werden, in dem man CONFIG_FILE = "" setzt. In dem Fall die
# Variablen hier ausfüllen!
USERNAME = ""    # No-IP Benutzername
PASSWORD = ""    # No-IP Passwort
FROMADRESS = ""  # eMail-Sender
TOADRESS = ""    # eMail-Empfänger
SMTPSERVER = ""  # SMTP-Serveradresse ("" zum deaktivieren)
SMTPPORT = ""    # SMTP-Port (Z. B. 25)
SMTPPASS = ""    # Server verlangt Autentification ("" zum deaktivieren)
Du hast die config nicht ausgefüllt bzw. die Daten nicht im Skript eingegeben
 
root@debian ~ > /usr/local/bin/NOIP-Account-Renew
NO-IP Account-Renew Script #180807
host_id=6xxxx10 [FAILED]
 
Zuletzt bearbeitet:
Ich habe nun eine Prüfung eingebaut, ob die Werte auch ausgefüllt sind:
Python:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
### *|--------------------------------|* ###
### *| NO-IP Account-Renew Script 1.0 |* ###
### *|   (c) by DarkStarXxX @ DEB     |* ###
### *|--------------------------------|* ###
# Modifiziert von MegaV0lt @ DEB
# Modifiziert von SLASH @ DEB
VERSION=190312

# Wichtiger Hinweis: Externe Konfiguration
# Die Login-Daten für No-IP und eMail können aus einer externen Datei, welche in
# der Variable "CONFIG_FILE" definiert werden muss gelesen werden.
# Besonderheit: Die Datei im Dateisystem muss die Endung ".py" haben.
# Bitte dort die Daten eintragen (Im gleichen Verzeichnis wie das Skript!)
CONFIG_FILE = "NOIP_Account_Renew"  # Ohne .py (Im gleichen Verzeichnis wie das Skript!)
# Kann abgeschaltet werden, in dem man CONFIG_FILE = "" setzt. In dem Fall die
# Variablen hier ausfüllen!
USERNAME = ""    # No-IP Benutzername
PASSWORD = ""    # No-IP Passwort
FROMADRESS = ""  # eMail-Sender
TOADRESS = ""    # eMail-Empfänger
SMTPSERVER = ""  # SMTP-Serveradresse ("" zum deaktivieren)
SMTPPORT = ""    # SMTP-Port (Z. B. 25)
SMTPPASS = ""    # Server verlangt Autentification ("" zum deaktivieren)

# Vorgaben
LOG_FILE = ""  # Kein Log, wenn nächste Zeile auskommentiert ist
#LOG_FILE = "/var/log/NOIP_renew.log"  # Dateiname wird auch für die eMail verwendet
MAIL_SUBJECT = "NO-IP Account Updater"  # Betreff der Status eMail
MAIL_BODY = "NO-IP Account Updater Service updated your NO-IP Account for another 30 days.\nPlease check the attached Logfile\n\n"  # Text in der eMail
HOST_URL = "https://www.noip.com/members/dns/"
RESULT_STR = []

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

# Funktion: update_host - Für jeden Host "Modify" klicken
def update_host(str_host, brow):
  global RESULT_STR
  brow.select_form(nr=00) ; brow.submit()
  # Check if OK
  if LOG_FILE:
    ts = time.strftime("%d.%m.%Y %H:%M:%S")  # Zeitstempel für das Log (19.10.2016 12:51:30)
    f1 = open(LOG_FILE, 'a+')
  host_id = after(str_host, "?")             # Alle Zeichen nach dem ?
  if brow.response().read().find("Update will be applied") >= 0:
    if LOG_FILE: print >> f1,ts,host_id + " [OK]"  # Ausgabe in das Log
    print(host_id + " [OK]")                 # Ausgabe auf der Konsole (und cron)
    RESULT_STR.append(host_id + " [OK]")     # Für die eMail
  else:
    if LOG_FILE: print >> f1,ts,host_id + " [FAILED]"
    print(host_id + " [FAILED]")
    RESULT_STR.append(host_id + " [FAILED]")
  return

# Funktion: after - Liefert Zeichenkette nach Zeichen a
def after(value, a):
  # Find and validate first part
  pos_a = value.rfind(a)
  if pos_a == -1: return value  # Nicht gefunden: Ganzer Wert zurück!
  # Returns chars after the found string.
  adjusted_pos_a = pos_a + len(a)
  if adjusted_pos_a >= len(value): return ""
  return value[adjusted_pos_a:]

# 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)

### Start
print "NO-IP Account-Renew Script #%s" % VERSION
if CONFIG_FILE:
  myconf = importlib.import_module(CONFIG_FILE, package=None)
  USERNAME = myconf.USERNAME     ; PASSWORD = myconf.PASSWORD
  FROMADRESS = myconf.FROMADRESS ; TOADRESS = myconf.TOADRESS
  SMTPSERVER = myconf.SMTPSERVER ; SMTPPORT = myconf.SMTPPORT
  SMTPPASS = myconf.SMTPPASS

# Prüfen, ob USERNAME und PASSWORT konfiguriert sind
if not USERNAME:
  print('FEHLER: USERNAME ist nicht konfiguriert!') ; quit()

if not PASSWORD:
  print('FEHLER: PASSWORD ist nicht konfiguriert!') ; quit()

# Seite öffnen
br.open(HOST_URL)

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

# Nicht mehr nötig, da die alternative Seite abgeschaltet wurde (August 2018)
#br.find_link(text='Manage Hosts')
#req = br.click_link(text='Manage Hosts')
#br.open(req)

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

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

####### SMTP Section ############
if not SMTPSERVER: quit()  # Nur wenn SMTPSERVER gesetzt ist

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

msg = MIMEMultipart()

msg['From'] = FROMADRESS ; msg['To'] = TOADRESS
msg['Subject'] = MAIL_SUBJECT

body = MAIL_BODY
for var in RESULT_STR:
  body = str(body) + str(var) + "\n"

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

if LOG_FILE:
  filename = after(LOG_FILE, "/")  # Dateiname ohne Pfad
  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(SMTPSERVER, SMTPPORT)
server.starttls()

# Server verlangt Autentification (Nur wenn SMTPPASS gesetzt ist)
if SMTPPASS: server.login(FROMADRESS, SMTPPASS)

text = msg.as_string()
server.sendmail(FROMADRESS, TOADRESS, text)
server.quit()

Sieht so aus:
Code:
root auf HP-T610 am 12.03.2019 15:39
[~] # NOIP-Account-Renew
NO-IP Account-Renew Script #190312
host_id=4xxx90 [OK]
host_id=4xxx97 [OK]
host_id=3xxx07 [OK]
 
Zuletzt bearbeitet:
hier genauso [ok] Ausgabe
Login Daten eher nicht richtig eingegeben?
zeig doch bitte das Script wie du es eingetragen hast, daten unkenntlich machen
 
so hab das neue von megvolt mal genommen

#!/usr/bin/env python
# -- coding: utf-8 --
### |--------------------------------| ###
### | NO-IP Account-Renew Script 1.0 | ###
### | (c) by DarkStarXxX @ DEB | ###
### |--------------------------------| ###
# Modifiziert von MegaV0lt @ DEB
# Modifiziert von SLASH @ DEB
VERSION=190312
# Wichtiger Hinweis: Externe Konfiguration
# Die Login-Daten für No-IP und eMail können aus einer externen Datei, welche in
# der Variable "CONFIG_FILE" definiert werden muss gelesen werden.
# Besonderheit: Die Datei im Dateisystem muss die Endung ".py" haben.
# Bitte dort die Daten eintragen (Im gleichen Verzeichnis wie das Skript!)
CONFIG_FILE = "" # Ohne .py (Im gleichen Verzeichnis wie das Skript!)
# Kann abgeschaltet werden, in dem man CONFIG_FILE = "" setzt. In dem Fall die
# Variablen hier ausfüllen!
USERNAME = "sagined" # No-IP Benutzername
PASSWORD = "sagined" # No-IP Passwort
FROMADRESS = "" # eMail-Sender
TOADRESS = "" # eMail-Empfänger
SMTPSERVER = "" # SMTP-Serveradresse ("" zum deaktivieren)
SMTPPORT = "" # SMTP-Port (Z. B. 25)
SMTPPASS = "" # Server verlangt Autentification ("" zum deaktivieren)
# Vorgaben
LOG_FILE = "" # Kein Log, wenn nächste Zeile auskommentiert ist
#LOG_FILE = "/var/log/NOIP_renew.log" # Dateiname wird auch für die eMail verwendet
MAIL_SUBJECT = "NO-IP Account Updater" # Betreff der Status eMail
MAIL_BODY = "NO-IP Account Updater Service updated your NO-IP Account for another 30 days.\nPlease check the attached Logfile\n\n" # Text in der eMail
HOST_URL = " "
RESULT_STR = []
import importlib
import mechanize
import time
import ssl
if hasattr(ssl, '_create_unverified_context'):
ssl._create_default_https_context = ssl._create_unverified_context
# Funktion: update_host - Für jeden Host "Modify" klicken
def update_host(str_host, brow):
global RESULT_STR
brow.select_form(nr=00) ; brow.submit()
# Check if OK
if LOG_FILE:
ts = time.strftime("%d.%m.%Y %H:%M:%S") # Zeitstempel für das Log (19.10.2016 12:51:30)
f1 = open(LOG_FILE, 'a+')
host_id = after(str_host, "?") # Alle Zeichen nach dem ?
if brow.response().read().find("Update will be applied") >= 0:
if LOG_FILE: print >> f1,ts,host_id + " [OK]" # Ausgabe in das Log
print(host_id + " [OK]") # Ausgabe auf der Konsole (und cron)
RESULT_STR.append(host_id + " [OK]") # Für die eMail
else:
if LOG_FILE: print >> f1,ts,host_id + " [FAILED]"
print(host_id + " [FAILED]")
RESULT_STR.append(host_id + " [FAILED]")
return
# Funktion: after - Liefert Zeichenkette nach Zeichen a
def after(value, a):
# Find and validate first part
pos_a = value.rfind(a)
if pos_a == -1: return value # Nicht gefunden: Ganzer Wert zurück!
# Returns chars after the found string.
adjusted_pos_a = pos_a + len(a)
if adjusted_pos_a >= len(value): return ""
return value[adjusted_pos_a:]
# 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)
### Start
print "NO-IP Account-Renew Script #%s" % VERSION
if CONFIG_FILE:
myconf = importlib.import_module(CONFIG_FILE, package=None)
USERNAME = myconf.USERNAME ; PASSWORD = myconf.PASSWORD
FROMADRESS = myconf.FROMADRESS ; TOADRESS = myconf.TOADRESS
SMTPSERVER = myconf.SMTPSERVER ; SMTPPORT = myconf.SMTPPORT
SMTPPASS = myconf.SMTPPASS
# Prüfen, ob USERNAME und PASSWORT konfiguriert sind
if not USERNAME:
print('FEHLER: USERNAME ist nicht konfiguriert!') ; quit()
if not PASSWORD:
print('FEHLER: PASSWORD ist nicht konfiguriert!') ; quit()
# Seite öffnen
br.open(HOST_URL)
# Login
br.select_form(nr=0)
br.form["username"] = USERNAME ; br.form["password"] = PASSWORD
br.submit()
# Nicht mehr nötig, da die alternative Seite abgeschaltet wurde (August 2018)
#br.find_link(text='Manage Hosts')
#req = br.click_link(text='Manage Hosts')
#br.open(req)
# Links in Array speichern
mylink = [] # Leeres Array
for link in br.links():
if link.text == 'Modify': mylink += [link]
# Links klicken und Updaten
for link in mylink:
req = br.click_link(link)
br.open(req)
update_host(link.url, br)
####### SMTP Section ############
if not SMTPSERVER: quit() # Nur wenn SMTPSERVER gesetzt ist
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders
msg = MIMEMultipart()
msg['From'] = FROMADRESS ; msg['To'] = TOADRESS
msg['Subject'] = MAIL_SUBJECT
body = MAIL_BODY
for var in RESULT_STR:
body = str(body) + str(var) + "\n"
msg.attach(MIMEText(body, 'plain'))
if LOG_FILE:
filename = after(LOG_FILE, "/") # Dateiname ohne Pfad
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(SMTPSERVER, SMTPPORT)
server.starttls()
# Server verlangt Autentification (Nur wenn SMTPPASS gesetzt ist)
if SMTPPASS: server.login(FROMADRESS, SMTPPASS)
text = msg.as_string()
server.sendmail(FROMADRESS, TOADRESS, text)
server.quit()


Code:
root@debian ~ > /usr/local/bin/NOIP-Account-Renew
NO-IP Account-Renew Script #190312
host_id=6xxxxx10 [OK]


Müsste passen oder ?
 
Zurück
Oben