automatisierte meinhotspot.com Anmeldung durch die Fritzbox.

Wie Bash Skript am besten von der Fritz!Box ausführen lassen?

[Edit Novize: Zusammen gefasst, was zusammen gehört]

Ich bin derzeit in einer Wohnung wo es nur ein Wlan von meinhotspot.com gibt.
Dort muss man alle 2 Stunden die Nutzungsbedingungen akzeptieren.
Ich habe hier nun 2 verschiedene Skripte.
Eins schaut wann der ein wiederholter Login möglich ist und wenn es mehr als 5 Minuten ist, dann schläft es bis 1 Minute (mit sleep) vor dem Zwangslogout und ruft sich dann selbst wieder auf und loggt sich aus, wartet eine Sekunde und loggt sich dann wieder ein.
Das Skript läuft seit gestern abend auf einem Ubuntu 16.04 Rechner und funktioniert gut.

Das gleiche Skript habe ich auch noch in abgespeckter Form, dass nur kontrolliert, ob es noch weniger als 5 Minuten sind und sonst einfach sich beendet.

Nun ist die Frage was besser ist.
Macht es der Fritz!Box was aus, wenn ein Prozess die ganze Zeit mit einem Sleep wartet?

meinhotspotschleife.sh
Code:
#!/bin/sh
BODY="dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%XXXX%XXXX%XXXX%XXXX%XXXX&password=XX%XXXX%XXXX%XXXX%XXXX%XXXX&mac=XX%XXXX%XXXX%XXXX%XXXX%XXXX"
wget -q -O- login.meinhotspot.com/login | grep 'Sie wurden soeben auf dem Hotspot eingeloggt und werden weitergeleitet.'
rc=$?
if [ $rc -ne 0 ]
then
    echo "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101     Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: Close\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n\r\n${BODY}" | nc login.meinhotspot.com 80
    sleep 10
    exec "./$0"
else
    time=`wget -q -O- login.meinhotspot.com/status | grep "s</td" | sed 's/<[^>]*>//g' | sed 's/\t//g' | cut -f3 -d"/"`
    echo $time | grep "h" 
    rc=$?
    if [ $rc -eq 0 ]
    then
        hour=`echo $time | cut -f1 -d"h"`
        echo $time | grep "m" 
        rc=$?
        if [ $rc -eq 0 ]
        then
            minute=$((`echo $time | cut -f2 -d"h" | cut -f1 -d"m"`+$hour*60))
        else
            minute=$(($hour*60))
        fi
    else
        echo $time | grep "m" 
        rc=$?
        if [ $rc -eq 0 ]
        then
            minute=`echo $time | cut -f1 -d"m"`
        else
            minute=1
        fi
    fi
    if [ $minute -lt 5 ]
    then
        echo "weniger als 5 Minuten"
        wget -qO- login.meinhotspot.com/logout &>/dev/null
        #BODY_LEN=$( echo -n ${BODY} | wc -c )
        #echo $BODY_LEN
        #echo ${#BODY}
        sleep 1
        echo "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101     Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: Close\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n\r\n${BODY}" | nc login.meinhotspot.com 80
        sleep 10
        exec "./$0"
    else
        echo "mehr als 5 Minuten"
        #echo $minute
        seconds=$((minute*60-60))
        #echo $seconds
        sleep $seconds
        exec "./$0"
    fi
fi

meinhotspot.sh
Code:
#!/bin/sh
BODY="dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%XXXX%XXXX%XXXX%XXXX%XXXX&password=XX%XXXX%XXXX%XXXX%XXXX%XXXX&mac=XX%XXXX%XXXX%XXXX%XXXX%XXXX"
wget -q -O- login.meinhotspot.com/login | grep 'Sie wurden soeben auf dem Hotspot eingeloggt und werden weitergeleitet.'
rc=$?
if [ $rc -ne 0 ]
then
    echo "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101     Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: Close\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n\r\n${BODY}" | nc login.meinhotspot.com 80
else
    time=`wget -q -O- login.meinhotspot.com/status | grep "s</td" | sed 's/<[^>]*>//g' | sed 's/\t//g' | cut -f3 -d"/"`
    echo $time | grep "h" 
    rc=$?
    if [ $rc -eq 0 ]
    then
        hour=`echo $time | cut -f1 -d"h"`
        echo $time | grep "m" 
        rc=$?
        if [ $rc -eq 0 ]
        then
            minute=$((`echo $time | cut -f2 -d"h" | cut -f1 -d"m"`+$hour*60))
        else
            minute=$(($hour*60))
        fi
    else
        echo $time | grep "m" 
        rc=$?
        if [ $rc -eq 0 ]
        then
            minute=`echo $time | cut -f1 -d"m"`
        else
            minute=1
        fi
    fi
    if [ $minute -lt 5 ]
    then
        echo "weniger als 5 Minuten"
        wget -qO- login.meinhotspot.com/logout &>/dev/null
        #BODY_LEN=$( echo -n ${BODY} | wc -c )
        #echo $BODY_LEN
        #echo ${#BODY}
        sleep 1
        echo "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101     Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: Close\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n\r\n${BODY}" | nc login.meinhotspot.com 80
    else
        echo "mehr als 5 Minuten"
    fi
fi

Meine Idee ist in die rc.custom /var/media/ftp/FRITZ/meinhotspotschleife.sh ein zu tragen, spricht irgendwas dagegen?
 
Zuletzt bearbeitet:
IMHO sind da zwei Hürden zu überwinden: 1.) die FritzBox muß dazu "überredet" werden, dass die Datei rc.custom während des Booten-Vorgangs ausgeführt wird2.) es fehlen Binaries wie netcat/nc oder curl; Beides könnte u.a. durch ein gefreeztes Image bereitgestellt werden.
 
Moin

Wenn dann bitte mit: delay
Siehe: delay -?
Beispiel:
Code:
delay MHSPOT -d 10 'echo "hallo" > /dev/pts/0'
(Beispiel ist keine Schleife, wird also genau 1x ausgeführt)
Siehtste (innerhalb von 10 Sekunden) in der Prozesstabelle mit: ps
 
Zuletzt bearbeitet:
IMHO sind da zwei Hürden zu überwinden: 1.) die FritzBox muß dazu "überredet" werden, dass die Datei rc.custom während des Booten-Vorgangs ausgeführt wird2.) es fehlen Binaries wie netcat/nc oder curl; Beides könnte u.a. durch ein gefreeztes Image bereitgestellt werden.


Die Fritz!Box ist selbstverständlich gefreetzt. In der RC-Custom wird schon das datum gesetzt, sie wird also schon verwendet und nc scheint vorhanden
Code:
nc
BusyBox v1.24.2 (2017-02-03 16:10:54 CET) multi-call binary.

Usage: nc [-iN] [-wN] [-f FILE|IPADDR PORT] [-e PROG]

Open a pipe to IP:PORT or FILE

        -w SEC  Connect timeout
        -i SEC  Delay interval for lines sent
        -f FILE Use file (ala /dev/ttyS0) instead of network
        -e PROG Run PROG after connect

Allerdings war bisher das Shebang falsch, sodass ich es leider in der falschen Shell getestet habe und somit ist der nc Befehl leider noch nicht lauffähig... :(

Moin

Wenn dann bitte mit: delay
Siehe: delay -?
Beispiel:
Code:
delay MHSPOT -d 10 'echo "hallo" > /dev/pts/0'
Siehtste in der Prozesstabelle mit: ps

Du meinst also statt echo "hallo" lasse ich das Script ausführen?
Sowohl im Script, als auch in der rc.custom?
 
Yep, delay startet dann dein Skript mit: sh
...muss also kein SHEBANG haben und braucht somit auch kein: x

Kannst ihm aber mit env den PATH übergeben, zum Beispiel...
Code:
delay MHSPOT -d 10 '/usr/bin/env -i PATH=/var/tmp/bin /var/tmp/bin/meinhotspotschleife.sh'
 
Zuletzt bearbeitet:
ok, danke probier ich gleich mal aus, musste am echo noch den Parameter -ne für die #!/bin/sh Shell angeben, script sollte jetzt wieder funktionieren

- - - Aktualisiert - - -

Spricht was dagegen, dass Script einfach in /var/media/ftp/FRITZ auf zu bewahren?
 
Ja, ein Recovery oder laden der Werkseinstellung :D
...ansonsten nicht.
 
Mal abgesehen, dass ich dieses Doofe Skript nur bis Anfang April brauche:
/var/tmp/bin/ hört sich sehr temporär an, wo würdest du die Datei denn hinpacken?
 
Ich hab an meiner 7560 mit einen USB-Anschluss einen aktiven HUB.
Screenshot_2017-03-14-19-48-52.png
...von daher: /var/media/ftp/myext3/scripts
 
Zuletzt bearbeitet:
ok, mir reicht das erstmal im internen Speicher.
 
Zuletzt bearbeitet:
Weil du dem delay nicht mit '-d [Start in Sekunden]' mitgeteilt hast wann es losgehen soll?
...oder dein Skript wird ohne komplette Pfadangabe schlicht nicht gefunden?
 
Zuletzt bearbeitet:
Weil du dem delay nicht mit '-d [Start in Sekunden]' mitgeteilt hast wann es losgehen soll?
...oder dein Skript wird ohne komplette Pfadangabe schlicht nicht gefunden?

Aber wenn das script vorher ausführbar gemacht wurde und man im telnet
Code:
delay MHSPOT '/var/media/ftp/FRITZ/meinhotspotschleife.sh  > /var/media/ftp/FRITZ/meinhotspot.log'
ausführt wird es genau einmal ausgeführt, danach nicht mehr...

Code:
#!/bin/sh
BODY="dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%3AXX%3AXX%3AXX%3AXX%3AXX&password=XX%3AXX%3AXX%3AXX%3AXX%3AXX&mac=XX%3AXX%3AXX%3AXX%3AXX%3AXX"
wget -q -O- login.meinhotspot.com/login | grep 'Sie wurden soeben auf dem Hotspot eingeloggt und werden weitergeleitet.'
rc=$?
if [ $rc -ne 0 ]
then
    echo "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101     Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: Close\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n\r\n${BODY}" | nc login.meinhotspot.com 80
    delay -d 10 MHSPOT '/var/media/ftp/FRITZ/meinhotspotschleife.sh  > /var/media/ftp/FRITZ/meinhotspot.log'
else
    time=`wget -q -O- login.meinhotspot.com/status | grep "s</td" | sed 's/<[^>]*>//g' | sed 's/\t//g' | cut -f3 -d"/"`
    echo $time | grep "h" 
    rc=$?
    if [ $rc -eq 0 ]
    then
        hour=`echo $time | cut -f1 -d"h"`
        echo $time | grep "m" 
        rc=$?
        if [ $rc -eq 0 ]
        then
            minute=$((`echo $time | cut -f2 -d"h" | cut -f1 -d"m"`+$hour*60))
        else
            minute=$(($hour*60))
        fi
    else
        echo $time | grep "m" 
        rc=$?
        if [ $rc -eq 0 ]
        then
            minute=`echo $time | cut -f1 -d"m"`
        else
            minute=1
        fi
    fi
    if [ $minute -lt 5 ]
    then
        echo "weniger als 5 Minuten"
        wget -qO- login.meinhotspot.com/logout &>/dev/null
        #BODY_LEN=$( echo -n ${BODY} | wc -c )
        #echo $BODY_LEN
        #echo ${#BODY}
        sleep 1
        echo "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101     Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: Close\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n\r\n${BODY}" | nc login.meinhotspot.com 80
        delay -d 10 MHSPOT '/var/media/ftp/FRITZ/meinhotspotschleife.sh  > /var/media/ftp/FRITZ/meinhotspot.log'
    else
        echo "mehr als 5 Minuten"
        #echo $minute
        seconds=$((minute*60-60))
        #echo $seconds
        #sleep $seconds
        delay -d 10 MHSPOT '/var/media/ftp/FRITZ/meinhotspotschleife.sh  > /var/media/ftp/FRITZ/meinhotspot.log'
    fi
fi
 
Vielleicht muss das Skript noch vom delay abgekoppelt werden?
ala (Kaufmännisches UND)
Code:
delay MHSPOT -d 10 '/var/media/ftp/FRITZ/meinhotspotschleife.sh > /var/media/ftp/FRITZ/meinhotspot.log &'
 
Das AVM-Kommando "delay" startet nur nach einer einstellbaren Verzögerung (über den "multid" von AVM, der muß also auch durchlaufen, damit so ein Auftrag erfolgreich gestartet wird) das angegebene Kommando ... mehr nicht. Wer da also etwas Regelmäßiges daraus machen will, der muß dann erneut "delay" aus dem ausgeführten Skript heraus aufrufen.

Ein Beispiel, wie man das machen kann, steht hier: https://github.com/PeterPawn/YourFritz/blob/master/tools/alive_start.sh#L36 - es ist nämlich entscheidend, daß man als "ID" (siehe Aufruf von "delay -h") eine Zeichenkette verwendet für den nächsten "Job", die sich von der des laufenden Auftrags unterscheidet.

Ansonsten ändert der "multid" offenbar nur den aktuell laufenden Auftrag (zwei Aufrufe mit identischer ID vor dem Start des ersten führen zu einer geänderten Startzeit/Verzögerung und nicht zu einem zweiten Auftrag) und der wird kurze Zeit später ohnehin beendet.
 
Hilft auch nicht =(

Im Script funktioniert delay scheinbar einfach nicht, werde nochmal nen Testscript bauen mit nur delay welches nen echo aufruft.

Aber ich kann das aktuelle Script mit
Code:
delay MHSPOT '/var/media/ftp/FRITZ/meinhotspotschleife.sh'
aufrufen

dann gehts weiter mit
Code:
#!/bin/sh
exec > /var/media/ftp/FRITZ/meinhotspot.log
BODY="dst=https%3A%2F%2Fconnect.meinhotspot.com%2Fde%2Fclient%2Fredirect&popup=true&username=XX%3AXX%3AXX%3AXX%3AXX%3AXX&password=XX%3AXX%3AXX%3AXX%3AXX%3AXX&mac=XX%3AXX%3AXX%3AXX%3AXX%3AXX"
wget -q -O- login.meinhotspot.com/login | grep 'Sie wurden soeben auf dem Hotspot eingeloggt und werden weitergeleitet.'
rc=$?
if [ $rc -ne 0 ]
then
    echo -ne "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101     Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: Close\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n\r\n${BODY}" | nc login.meinhotspot.com 80
    sleep 10
    exec "$0"
else
    time=`wget -q -O- login.meinhotspot.com/status | grep "s</td" | sed 's/<[^>]*>//g' | sed 's/\t//g' | cut -f3 -d"/"`
    echo $time | grep "h" 
    rc=$?
    if [ $rc -eq 0 ]
    then
        hour=`echo $time | cut -f1 -d"h"`
        echo $time | grep "m" 
        rc=$?
        if [ $rc -eq 0 ]
        then
            minute=$((`echo $time | cut -f2 -d"h" | cut -f1 -d"m"`+$hour*60))
        else
            minute=$(($hour*60))
        fi
    else
        echo $time | grep "m" 
        rc=$?
        if [ $rc -eq 0 ]
        then
            minute=`echo $time | cut -f1 -d"m"`
        else
            minute=1
        fi
    fi
    if [ $minute -lt 5 ]
    then
        echo "weniger als 5 Minuten"
        wget -qO- login.meinhotspot.com/logout &>/dev/null
        #BODY_LEN=$( echo -n ${BODY} | wc -c )
        #echo $BODY_LEN
        #echo ${#BODY}
        sleep 1
        echo -ne "POST /login HTTP/1.1\r\nHost: login.meinhotspot.com\r\nUser-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101     Firefox/52.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://connect.meinhotspot.com/en/client/welcome\r\nConnection: Close\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: ${#BODY}\r\n\r\n${BODY}" | nc login.meinhotspot.com 80
        sleep 10
        exec "$0"
    else
        echo "mehr als 5 Minuten"
        #echo $minute
        seconds=$((minute*60-60))
        #echo $seconds
        sleep $seconds
        exec "$0"
    fi
fi

Ergebnis scheint auf dem ersten Blick zu klappen:

Code:
 6875 root      1532 S    sh -c /var/media/ftp/FRITZ/meinhotspotschleife.sh 
 6876 root      1544 S    {meinhotspotschl} /bin/sh /var/media/ftp/FRITZ/meinh
 6896 root      1524 S    {busybox} sleep 5340

- - - Aktualisiert - - -

Was wäre eigentlich der Vorteil von delay?
 
Im Script funktioniert delay scheinbar einfach nicht [...]
Das ist definitiv falsch und ich hoffe nicht, daß sich spätere Leser von dieser Vermutung "anstecken" lassen - zur Notwendigkeit unterschiedlicher IDs für den erneuten Aufruf von "delay" aus einem per "delay" gestarteten Skript heraus, habe ich bereits etwas geschrieben.
 
sry hatte deinen post nicht gelesen

- - - Aktualisiert - - -

Warum nutzt du in deinem Script LV\$RAND und nicht nur $RAND?
 
"LV" ist nur ein Präfix, damit ich noch weiß, um welches Skript es sich handelt und weil bei zwei verschiedenen Skripten, die innerhalb derselben Sekunde eine neue Instanz von sich selbst zu einem späteren Zeitpunkt anstoßen wollen, das Ergebnis von "date +%s" (die Anzahl der Sekunden seit dem 01.01.1970) auch nach "md5sum" und dem "Abschneiden" auf irgendeine beliebige (identische) Anzahl von Stellen immer noch dasselbe wäre und somit das Skript gewinnen würde, welches als letztes das "delay"-Kommando aufgerufen hat.

Der Backslash ist der Tatsache geschuldet, daß ich dort ein "inline file" verwende, das - inkl. Variablenauflösung - in eine temporäre Skript-Datei geschrieben wird. Da am Ende in der Zieldatei die Zeichenkette "LV$RAND" landen soll, muß das Dollarzeichen eben "maskiert" werden für das "cat"-Kommando, sonst würde bereits dabei die Variable "$RAND" aufgelöst und die ist zum fraglichen Zeitpunkt leer - damit würde im Skript nur ein "LV" landen.
 
Sieht man delay mit ps?
 
Zuletzt bearbeitet:
das Ergebnis bleibt leider relativ lange gleich
Das kann aber nicht sein, wenn Du $RAND so ermittelst, wie ich das getan habe (ggf. noch mit zwei Stellen mehr, ich schneide dort bereits nach 6 Stellen ab). Das "md5sum" macht bereits aus zwei unmittelbar aufeinanderfolgenden Zeiten absolut unterschiedliche Zeichenketten (mit nur sehr geringen Aussichten, daß die ersten 6 - besser wären vielleicht 8 - Stellen identisch sind).

Code:
 $ for i in $(seq 1 10); do time=$(date +%s); echo -n "$time ==> "; echo -n $time | md5sum | sed -ne "s|^\([a-f0-9]\{8\}\).*\$|\1|p"; sleep 1; done
1489529905 ==> f974c640
1489529906 ==> 3a1a9810
1489529907 ==> 5845a534
1489529909 ==> 2f70a85e
1489529910 ==> 0ab64fce
1489529911 ==> 8540ce68
1489529912 ==> 3a4a3a34
1489529913 ==> 065f4312
1489529914 ==> 0e4387ad
1489529915 ==> 62b75b47
Da hast Du also vermutlich etwas falsch gemacht.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.