A command-line client for the deSEC DNS API.
Download the latest release from the releases page.
go install github.com/swagner-de/desec-cli@latestRun the interactive setup:
desec-cli config initThis creates ~/.config/desec-cli/config.yaml:
token: "your-api-token"
output: tableexport DESEC_TOKEN="your-api-token"The environment variable takes precedence over the config file.
desec-cli domain list
desec-cli domain get example.com
desec-cli domain create example.com
desec-cli domain create example.com --zonefile "$(<zonefile.txt)"
desec-cli domain export example.com
desec-cli domain delete example.comdesec-cli record list example.com
desec-cli record list example.com --type A
desec-cli record list example.com --subname www
desec-cli record get example.com www A
desec-cli record create example.com --subname www --type A --ttl 3600 \
--record 1.2.3.4 --record 5.6.7.8
desec-cli record update example.com www A --ttl 300
desec-cli record update example.com www A --record 9.10.11.12
desec-cli record delete example.com www AUse @ for the zone apex:
desec-cli record create example.com --subname @ --type MX --ttl 3600 \
--record "10 mail.example.com."desec-cli record bulk example.com --file records.json
cat records.json | desec-cli record bulk example.comThe JSON file should contain an array of RRset objects:
[
{"subname": "www", "type": "A", "ttl": 3600, "records": ["1.2.3.4"]},
{"subname": "mail", "type": "A", "ttl": 3600, "records": ["5.6.7.8"]}
]desec-cli token list
desec-cli token get <token-id>
desec-cli token create --name "my-token"
desec-cli token create --name "restricted" --perm-create-domain --subnet 10.0.0.0/8
desec-cli token update <token-id> --name "renamed"
desec-cli token delete <token-id>Restrict tokens to specific RRsets:
# List policies
desec-cli token-policy list <token-id>
# Create a default deny-all policy (required as the first policy)
desec-cli token-policy create <token-id>
# Allow writing TXT records for ACME challenges
desec-cli token-policy create <token-id> \
--domain example.com \
--subname _acme-challenge \
--type TXT \
--perm-write
# Delete a policy
desec-cli token-policy delete <token-id> <policy-id>desec-cli dyndns update --hostname example.dedyn.io --ipv4 1.2.3.4
desec-cli dyndns update --hostname example.dedyn.io --ipv6 2001:db8::1
desec-cli dyndns update --hostname example.dedyn.io --ipv4 1.2.3.4 --ipv6 2001:db8::1All commands support --output / -o with table (default), json, or yaml:
desec-cli domain list -o json
desec-cli record list example.com -o yamlSet the default in your config file:
output: json