GithubHelp home page GithubHelp logo

mgsky1 / ddns Goto Github PK

View Code? Open in Web Editor NEW
266.0 21.0 127.0 43 KB

An implementation of DDNS with Python and Aliyun API 利用Python+阿里云云解析API实现DDNS

License: Apache License 2.0

Python 100.00%
ddns

ddns's People

Contributors

chnlkw avatar mgsky1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ddns's Issues

使用ipv6报json.decoder.JSONDecodeError错误

我使用时出现以下错误

Traceback (most recent call last):
  File "DDNS.py", line 49, in <module>
    result = DDNS(isipv6)
  File "DDNS.py", line 21, in DDNS
    ip = Utils.getRealIPv6()
  File "/usr/bin/DDNS/src/Utils.py", line 27, in getRealIPv6
    ip = IpGetter.getRealIpV6(url)
  File "/usr/bin/DDNS/src/IpGetter.py", line 72, in getRealIpV6
    jsonData = json.loads(data)
  File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.8/json/decoder.py", line 340, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 5 (char 4)

命令参数为 python DDNS.py -6,系统为树莓派版 Ubuntu 20.04.2 LTS,使用 python3,正常安装了 aliyun-python-sdk-core-v3

使用RAM用户管理多个域名,并指定单个用户只拥有这个域名解析的管理权限(本操作都在阿里云控制台操作)

使用RAM用户管理多个域名,并指定单个用户只拥有这个域名解析的管理权限(本操作都在阿里云控制台操作)
然后-->自定义策略(修改单个域名的权限)
单个域名权限代码
{
"Version": "1",
"Statement": [
{
"Action": "",
"Resource": "acs:alidns:
::domain/oningte.com",
"Effect": "Allow"
},
{
"Action": "
",
"Resource": "acs:alidns:::instance/alidns-cn-o400uxz3701",
"Effect": "Allow"
},
{
"Action": [
"alidns:DescribeSiteMonitorIspInfos",
"alidns:DescribeSiteMonitorIspCityInfos",
"alidns:DescribeSupportLines",
"alidns:DescribeDomains",
"alidns:DescribeDomainNs",
"alidns:DescribeDomainGroups"
],
"Resource": "acs:alidns:::*",
"Effect": "Allow"
}
]
}

无法使用绝对路径执行DDNS.py

打算添加到crontab定时任务执行脚本的时候发现任务无法执行,手动进入src目录执行python3 DDNS.py是可以正常执行的,请帮忙看看是什么问题,谢谢。
image

Utils 错误

Traceback (most recent call last):
File "DDNS.py", line 3, in
from Utils import Utils
File "/home/DDNS/Utils.py", line 3, in
import IpGetter
File "/home/DDNS/IpGetter.py", line 2, in
import urllib.request
请问这是怎么回事啊,是哪里没调好么

DNS不存在于账户

失败!原因为
The DNS record does not exist in your account.

重新更新了KEY和解析记录都不行唉~

多个二级域名的情况下怎么添加更新记录

我有多个二级域名,我在config.json里添加类似这样的子域名"Second-level-domain": "movie,test,test1" 执行脚本会报错,我域名解析记录都有添加了解析记录了的。
image
如果我在config.json添加为以下格式:
"Second-level-domain": "movie“,
"Second-level-domain": “test”,
"Second-level-domain": "test1“
执行会报如下错误:
image

我只添加单个二级域名的情况下脚本可以正常执行,所以在拥有多个二级域名的情况下,应该怎样添加记录?谢谢!

更新解析成功 但是并不能访问端口

成功更新了阿里云的解析,
路由器设置转发端口 。 入站 出站开了权限,
但是还是不行这个。
内网IP地址 内网端口 外网端口 协议 操
192.168.0.102 10101 85 全部

HTTP Status: 400 Error:Forbidden.RAM User not authorized to operate on the specified resource

Traceback (most recent call last):
File "DDNS.py", line 45, in
result = DDNS(isipv6)
File "DDNS.py", line 19, in DDNS
recordId = Utils.getRecordId(Utils.getConfigJson().get('Second-level-domain'))
File "/root/lmt/DDNS/src/Utils.py", line 38, in getRecordId
response = client.do_action_with_exception(request)
File "/usr/local/lib/python3.6/site-packages/aliyunsdkcore/client.py", line 467, in do_action_with_exception
raise exception
aliyunsdkcore.acs_exception.exceptions.ServerException: HTTP Status: 400 Error:Forbidden.RAM User not authorized to operate on the specified resource, or this API doesn't support RAM. RequestID: 8E9039D9-BEEF-40B8-B79C-E722DBB2DA24
执行DDNS时,Utils.getRecordId调用失败,没有权限操作资源

No module named 'aliyunsdkcore'

执行python3 DDNS.py,报错了。。。

Traceback (most recent call last):
File "DDNS.py", line 11, in
from aliyunsdkcore.acs_exception.exceptions import ServerException
ModuleNotFoundError: No module named 'aliyunsdkcore'

ImportError: cannot import name 'CommonRequest'

Traceback (most recent call last):
  File "DDNS.py", line 13, in <module>
    from Utils import Utils
  File "/root/projects/DDNS/src/Utils.py", line 15, in <module>
    from CommonRequestSingleton import CommonRequestSing
  File "/root/projects/DDNS/src/CommonRequestSingleton.py", line 6, in <module>
    from aliyunsdkcore.request import CommonRequest
ImportError: cannot import name 'CommonRequest'

sdk过时了?还是感谢

json格式有问题

在mac上运行始终报错json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes,
后用工具校验config.json发现格式有问题,但不清楚为什么,可能是符号问题,重新用正确格式编辑json后就能用了,建议重新修改一下config.json并用工具校验

可以兼容一下python2.7

master上的代码只需要修改IpGetter.py。 在python2.7版本中urllib.request对象不存在,可通过urllib2.urlopen(url)替代原有python3的urllib.request.urlopen(url)。 修改:

step1: 导包修改
`import sys
import json

if sys.version_info.major == 2:
#python2
import urllib2
else:
#python3
import urllib.request`

Step2: 添加通用url访问方法
def urlopen(url): if sys.version_info.major == 2: return urllib2.urlopen(url) else: return urllib.request.urlopen(url)

Step3: 替换文件用原有代码:response = urllib.request.urlopen(url) 为
response = urlopen(url)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.