Могу ли я использовать запись CNAME (только) для перенаправления своего домена без A-записи в ситуации DDNS?

Ни один из методов не работал для меня. Но я нашел, что это . Графический график matplotlib в реальном времени не работает, пока он все еще находится в цикле

. Все, что вам нужно, это добавить

plt.pause(0.0001)

и чем вы мог видеть новый сюжет.

Итак, ваш код должен выглядеть так, и он будет работать

import matplotlib.pyplot as plt
import numpy as np
plt.ion() ## Note this correction
fig=plt.figure()
plt.axis([0,1000,0,1])

i=0
x=list()
y=list()

while i <1000:
    temp_y=np.random.random();
    x.append(i);
    y.append(temp_y);
    plt.scatter(i,temp_y);
    i+=1;
    plt.show()
    plt.pause(0.0001) #Note this correction

0
задан Karlossus 27 February 2019 в 01:58
поделиться

2 ответа

После вдохновения от @colde и небольшого количества работы я хотел поделиться своим пакетным сценарием, который реализует его ответ.

Он запускается планировщиком задач каждые 10 минут, сначала проверяет, есть ли подключение к Интернету, и, если да, проверяет, изменился ли мой публичный IP-адрес, и только в этом случае обновляет DNS cloudflare через их API.

Я анонимизировал свои личные идентификаторы и URL-адрес API, очевидно, вам нужно их изменить.

@echo off
cls
setlocal EnableExtensions EnableDelayedExpansion
set logFile=.\UpdatePublicIP.log
call :log "--- SCRIPT STARTED ---"
goto TestInternet

:log
echo [!date! !time!] %~1
echo [!date! !time!] %~1 >>%logFile%
exit /b 0

:TestInternet
REM First test for internet connectivity.
call :log "Detecting internet."
PING -n 1 8.8.8.8|find "Reply from " >NUL
IF NOT ERRORLEVEL 1 goto :CheckPublicIP
IF     ERRORLEVEL 1 goto :NoInternet

:NoInternet
call :log "No internet, nothing to do."
goto End

:CheckPublicIP
call :log "Detecting public IP."
for /f %%A in (
  'powershell -command "(Invoke-Webrequest "http://api.ipify.org").content"'
) do (
      set TempPublicIP=%%A
     )
call :log "Current Public IP: %TempPublicIP%"
if not "%TempPublicIP%"=="%PublicIP%" (
    call :log "Saved IP [%PublicIP%] different to current [%TempPublicIP%] IP, updating saved PublicIP."
    REM Note: setx saves env var but only available in future cmd windows, not current one.
    setx PublicIP %TempPublicIP% >nul
    goto UpdateDNS
    ) else (
            call :log "Current IP = saved IP, nothing to do."
           )
goto End

:UpdateDNS
call :log "Updating CloudFlare DNS record to [%TempPublicIP%]."
curl -X PUT "https://api.cloudflare.com/client/v4/zones/12345abcde12345abcde12345abcde12/dns_records/1234567890qwertyuiop0987654321ab" -H "X-Auth-Email: yourusername@hotmail.com" -H "X-Auth-Key:a123b4567c8defghijklmnopqrstuvwxyz123" -H "Content-Type: application/json" --data "{\"type\":\"A\",\"name\":\"yourdomainname.net\",\"content\":\"%TempPublicIP%\"}"|findstr.exe modified_on >nul
REM Can't use "success":true due to the quote. Assuming the string "modified_on" occurs on success only.
IF NOT ERRORLEVEL 1 goto :CloudFlareSuccess
IF     ERRORLEVEL 1 goto :CloudFlareError
goto End

:CloudFlareSuccess
call :log "CloudFlare DNS update succeeded.
goto End

:CloudFlareError
call :log "CloudFlare DNS update failed.
goto End

:End
call :log "--- SCRIPT FINISHED ---"
0
ответ дан Karlossus 27 February 2019 в 01:58
поделиться

*.example.net не поймают example.net. Однако, как вы упоминаете, если вы пингуете www.example.net, он попадет на CNAME.

К сожалению, вы не можете иметь CNAME на example.net, потому что CNAME не разрешено сосуществовать с любыми другими типами записей, а для example.net у вас по крайней мере будут записи типа NS (которые указывают ваши серверы имен).

Один из способов обойти это, вместо того, чтобы использовать ddns.net - это использовать провайдера, у которого есть API, и напрямую обновить запись A для example.net. Одним из таких провайдеров может быть Cloudflare , который предоставляет DNS-хостинг бесплатно. Существует множество из руководств о том, как использовать их в качестве динамического DNS.

0
ответ дан colde 27 February 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: