3

GoDaddy の API を介して DNS を更新しようとしています (ホーム ネットワークは動的 IP 上にあります)。

http://teanazar.com/2016/05/godaddy-ddns-updater/にあるスクリプトを cygwin で実行すると、正常に更新できます。

ただし、私は物事を単純化しようとしており、代わりにpowershellでこれを行っています。

ただし、次のスクリプトを使用しようとすると:

$IP = Invoke-WebRequest http://api.ipify.org?format=json
$IP2 = ConvertFrom-JSON $ip
$domain = 'example.com'
$type = 'A'
$name = '@'

$key = 'key'
$secret = 'secret'


$Request = @{ttl='600';data=$ip2.ip;priority='1'}

$JSON = Convertto-Json $request

$headers = @{}
$headers["Authorization"] = 'sso-key ' + $key + ':' + $secret

Invoke-WebRequest    https://api.godaddy.com/v1/domains/$domain/records/$Type/$Name -contenttype "application/json" -method put -body $json -headers $headers

これまでのところ、各問題に対処してきましたが、それが認証されていることはわかっています. しかし、実行すると、「リモートサーバーがエラーを返しました: (422) Unprocessable Entity

4

6 に答える 6

1

Godaddy でプロダクション キーを作成します。テストキーが機能しませんでした。

そして、あなたの ttl は整数である必要があります。文字列ではなく、'' を削除します。

(そして、@ を %40 に変更します)

$IP = Invoke-WebRequest http://api.ipify.org?format=json
$IP2 = ConvertFrom-JSON $ip
$domain = 'example.com'
$type = 'A'
$name = 'Test'

$key = 'key'
$secret = 'secret'


[array]$Request=@{data=$IP2.ip; "port"=1; "priority"=0; "protocol"="none"; "service"="none"; "ttl"=3600; "weight"=1}

$JSON = Convertto-Json $request

$headers = @{}
$headers["Authorization"] = 'sso-key ' + $key + ':' + $secret


Invoke-WebRequest    https://api.godaddy.com/v1/domains/$domain/records  -method get -headers $headers
Invoke-WebRequest    https://api.godaddy.com/v1/domains/$domain/records/A/Test  -method put -headers $headers -Body $json -ContentType "application/json"

GoDaddy が API を更新したようです。ソリューションを更新して、JSON の「配列」要件と、現在は必須と思われる追加フィールドを含めました。

于 2016-08-28T00:02:10.637 に答える
0

この問題を解決するにはGET、まず同じエンドポイントの操作から始めることをお勧めします。このコマンドを実行すると何が表示されますか?

Invoke-WebRequest   https://api.godaddy.com/v1/domains/$domain/records `
  -contenttype "application/json" -method GET -headers $headers

このエンドポイントを介して GoDaddy が表示するデータの種類を検証しましょう。@たぶん、彼らはレコードを作るための別の用語を持っていますか? 問題が発生する可能性がある方法はたくさんあります。

ここに表示されている内容をお知らせください。解決に向けて取り組みます。

于 2016-08-24T13:59:29.877 に答える