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.
Was genau ist daran schwer?

Dass nicht jeder User dein Wissen und Verständnis in Sachen Linux hat ;)

------------------------------------------------------------------

Ich bin nun bei meinem Raspi B+ so vorgegangen Zugang über Konsole (Telnet) als root:

Code:
sudo apt-get update
Code:
sudo apt-get install python-mechanize
Code:
sudo reboot

- Dann habe ich das Script NOIP-Account-Renew (von @DarkStarXxX ) nach /usr/local/bin/ geschoben und die Rechte auf 755 gesetzt.
- Über Bearbeiten habe ich dann die Logindaten eingegeben (Zeile 14 + 15) und gespeichert.
- Anschließend habe ich das Script gestartet und getestet:

Code:
/usr/local/bin/NOIP-Account-Renew

Antwort in der Konsole:
Code:
root@raspibplus:~# /usr/local/bin/NOIP-Account-Renew
OK host.php?host_id=1......x

Weil die Ausgabe in der Konsole im normalen Betrieb für mich keinen Sinn macht, habe ich das Script nach Post 2 von @janni1 noch etwas angepasst, damit eine Logdatei auf dem Raspi angelegt wird:
- in Zeile 6 hinzugefügt:
Code:
import datetime

- den kompletten Bereich # Check if OK ersetzt:
Code:
 # Check if OK
 if brow.response().read().find("Update will be applied") >= 0:
      f1=open('/usr/local/logs/renew.log', 'a+')
      ts=datetime.datetime.now().strftime("%d. %B %Y %I:%M%p")
      print >> f1,ts,"OK " + str_host
      #print("OK " + str_host)   
 else:
       print >> f1,ts,"KO " + str_host
      #print("KO " + str_host)
 return

Nun wird bei Ausführen des Scripts im Pfad /usr/local/logs/ die Datei renew.log angelegt und das Log darin fortgeschrieben.
Code:
17. October 2016 08:20PM OK host.php?host_id=1......x
17. October 2016 08:20PM OK host.php?host_id=1......x
18. October 2016 06:00AM OK host.php?host_id=1......x

Damit das Script automatisch auf dem Raspi ausgeführt wird, habe ich einen Cronjob angelegt.
Code:
crontab -e
ganz unten eintragen und speichern:
Code:
0 6 1,15 * * /usr/local/bin/NOIP-Account-Renew
Du musst angemeldet sein, um Bilder zu sehen.
Nun wird zweimal im Monat (am 1. und 15. des Monats um 6 Uhr) das Script durchgeführt und in der Log-Datei protokolliert.


Hinweis: Auch wenn im Log nur ein Account erscheint, sind bei mir zwei Accounts aktualisiert worden.
--------------------------------------------------

Script getestet und für gut befunden :sunglasses:

An dieser Stelle einen besonderen Dank an @DarkStarXxX @janni1 und @rolu2
 
Zuletzt bearbeitet:
Leider bin ich mit python nicht fit.

Ich nehme mal die Veränderung von Smiley007 vor. Bei ihm scheint es mit mehrere Dyns zu funktionieren.
 
Ob das dauerhaft mit beiden Host klappt, kann ich derzeit noch nicht sagen, aber ich werde berichten.

Aber wenn @DarkStarXxX sagt, dass es nicht zuverlässig klappt, wird es wohl leider so sein.

Meine Änderungen beziehen sich hauptsächlich auf das Loggen der Ausführung des Scripts.
 
Hallo.
Ich lasse das Script auf einem BananaPi mit Debian 8 laufen.
Installiert sind:
python-mechanize/stable,now 1:0.2.5-3 all [installiert]
Python2 Version 2.7.9
Python3 Version 3.4.2

Beinm Aufruf des Scriptes bekomme ich folgende Fehlermeldung:

/tmp/no-ip/NOIP-Account-Renew
Traceback (most recent call last):
File "/tmp/no-ip/NOIP-Account-Renew", line 47, 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


Ich nehme mal an, daß mechanize hier das falsche Python aufruft ? Wenn ja, wie kann ich Python3 nutzen ?
Danke für all Tips :-)
Jan
 
Ich habe jetzt auch nochmal auf NOIP nachgesehen und nur der 1. Host steht auf 29 Tage. Der 2. Host auf 28 Tage.

Somit wird wohl auch nur der 1. Host aktualisiert.

Abhilfe würde dann wohl nur ein 2. NOIP Account mit dem 2. Host helfen und dass man ein 2. Script für den 2. Host laufen lässt.
 
Hi,
man würde es auch im Log bzw. der Ausgabe sehen, wenn es mal bei zwei Adressen klappt.
sieht dann so aus
Code:
root@debian-server:/opt/noip# ./renew
OK host.php?host_id=12345678
OK host.php?host_id=23456789
mit Log so
Code:
01. July 2016 11:42PM OK host.php?host_id=12345678
01. July 2016 11:42PM OK host.php?host_id=23456789
 
Um meine Frage (2 Posts weiter oben) selbst zu beantworten.
soweit ich im Internet gelesen habe, funktioniert mechanize nur mit Python 2.x nicht aber mit Python3.
wenn man nun mechanize nicht über apt-get installiert, sondern über das im mechanize Ordner liegende Install Script (sudo python setup.py install) dann funktioniert es. allerdings auch hier, nur der erste NOIP account wird geupdated.
Was ich allerdings nicht finde, wenn ich mich bei meinem NOIP Account einlogge, wo ich manuel klicken muss, damit ich das auf 30 Tage setzen kann ? In welchem Menu ist das ?
 
Hi,
schau in das Script ;)
Da wird als erstes die Seite aufgemacht

dann pass und user eingetragen und submited
dann "managed host" gesucht und geclickt
nun "Modify" gesucht und geclickt
hier dann "update_host"

Edit: Vielleicht gäbe es ja die Möglichkeit, das über die unterschiedlichen "host_id"s zu regeln.
also vor # Follow all Modify links irgendwie sowas wie

und das für dann jede weitere "host_id"
 
Zuletzt bearbeitet:
Ja...das hatte ich vorhin schon einmal mauell gemacht (Das Script nutzt die "alte" No-IP Seite......) Hat aber irgendwie nicht funktioniert.......jetzt sehe ich es: Die Reihenfolge auf der neuen NO-IP Seite ist anders wie die alte Seite....ich habe immer den 2. Host überprüft und der stand immer auf 9 Tage Rest. (Ich habe 5 Hosts, da verliert man schon mal den Überblick :-) Danke janni
 
Ich habe mit Python noch nie gearbeitet... Trotzdem scheine ich eine Lösung zu haben. Das Skript habe ich angepasst. Das Problem waren die Links, die nach dem ersten Klick wohl weg waren...
Hier mal das angepasste Skript:
Code:
#!/usr/bin/env python
### *|--------------------------------|* ###
### *| NO-IP Account-Renew Script 1.0 |* ###
### *|   (c) by DarkStarXxX @ DEB     |* ###
### *|--------------------------------|* ###
# Modifiziert von MegaV0lt @ DEB
# VERSION=161019

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 = "https://www.noip.com/members/dns/"
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)

Hier die Ausgabe auf der Konsole:

Code:
root auf HP-T5730 am 19.10.2016 11:38
[~] # python /mnt/usbdrive/sbin/NOIP-Account-Renew
OK host.php?host_id=**11**
OK host.php?host_id=**39**
OK host.php?host_id=**23**
 
Zurück
Oben