Einen Überblick über das Administrationstool KeyHelp der Keyweb AG und dessen Download gibt es auf https://www.keyhelp.de

Dieses Forum soll es interessierten Benutzern ermöglichen, sich über KeyHelp auszutauschen und Hilfe bei Problemen zu finden.

Api als bash-script nutzen

Allgemeine Fragen zu KeyHelp
Antworten
Shadowman
Beiträge: 12
Registriert: Mi 21. Okt 2020, 17:35

Api als bash-script nutzen

Beitrag von Shadowman »

Ich habe mich die letzten Tage recht ausführlich mit den API-Funktionen beschäftigt und konnte über https://app.swaggerhub.com/apis-docs/keyhelp/api/2.1 auch schon diverse Tests erfolgreich abschließen.

Nun möchte ich gerne Bash-Scripte mit den jeweiligen Snippets anlegen, um bei Bedarf schnell eine Funktion über die API auszuführen. Leider gelingt mir das nicht. Hat vielleicht jemand mal ein Beispiel, wie ein funktionierendes Bash-File aussehen muss, damit ich es z.b. über Putty mit Bash starten kann? Ich bekomme das einfach nicht hin...und bei der Suche im Netz habe ich echt nichts finden können.

Zweite Frage: Kann ich via Api auf einen Rutsch auch gleich mehrere Domains anlegen lassen? Wie stelle ich das ein? Ich würde gerne in einem Rutsch z.b. fünf Domains und die jeweils zugehörigen Datenbanken anlegen lassen.

Vielleicht hat ja jemand einen Denkansatz für mich...

Bye Mike
Benutzeravatar
Alexander
Keyweb AG
Beiträge: 2204
Registriert: Mi 20. Jan 2016, 02:23

Re: Api als bash-script nutzen

Beitrag von Alexander »

Hallo,

Wenn du über https://app.swaggerhub.com/apis-docs/keyhelp/api/2.1 getestet hast, dann hast du also den "Try out" button benutzt, korrekt?

Dann wird dir eigentlich gleich der entsprechende Curl-Befehl angezeigt, den man ausführen müsste. Zum Beispiel so:

Code: Alles auswählen

curl -X 'GET' \
  'https://<SERVERNAME>/api/v2/ping' \
  -H 'accept: application/json' \
  -H 'X-API-Key: <API-KEY>'
Oder hier zum Anlegen einer Domain:

Code: Alles auswählen

curl -X 'POST' \
  'https://<SERVERNAME>/api/v2/domains' \
  -H 'accept: application/json' \
  -H 'X-API-Key: <API-KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
  "id_user": 4,
  "id_parent_domain": 0,
  "domain": "example.com",
  "php_version": "",
  "is_disabled": false,
  "delete_on": "2019-08-15T11:29:13+02:00",
  "is_dns_disabled": false,
  "is_email_domain": false,
  "create_www_subdomain": true,
  "skeleton": "wordpress",
  "target": {
    "target": "https://www.keyhelp.de",
    "forwarding_type": 301
  },
  "security": {
    "id_certificate": 0,
    "lets_encrypt": true,
    "force_https": true,
    "is_hsts": true,
    "hsts_max_age": 10368000,
    "hsts_include": true,
    "hsts_preload": true
  }
}'

Jetzt musst du nur noch den Return-code / die Antwort auswerten. Hierzu einmal die curl Referenz durchsuchen, was für Parameter man dem curl Befehl an Parametern noch mitgeben muss, um die Informationen, die man benötigt zu erhalten (https://linux.die.net/man/1/curl).

Ggf. möchte man das JSON des Bodys auch nicht selbst schreiben, hierzu gibt es im bash auch Möglichkeiten (Suchbegriff json + bash).

Um mehrere Domains mit einmal anzulegen benutzt du dann einfach eine Schleife, z.B. https://www.cyberciti.biz/faq/bash-for-loop/
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Shadowman
Beiträge: 12
Registriert: Mi 21. Okt 2020, 17:35

Re: Api als bash-script nutzen

Beitrag von Shadowman »

Ja genau, habe den Tryout-Button genutzt und das klappt dort auch. Dann bekomme ich ja drei Snippets angeboten: cURL (bash), cURL (Power Shell) und cURL (CMD).

Die CMD-Variante habe ich mittels CMD in Windows problemlos nutzen können und probeweise eine Domain angelegt.
Danach habe ich einfach das Snippet cURL (bash) in eine Textdatei gepackt und mit sh benannt sowie ausführbar gemacht, genau so:

Code: Alles auswählen

#!/bin/bash
curl -X 'POST' \
  'https://<SERVERNAME>/api/v2/domains' \
  -H 'accept: application/json' \
  -H 'X-API-Key: <API-KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
  "id_user": 4,
  "id_parent_domain": 0,
  "domain": "example.com",
  "php_version": "",
  "is_disabled": false,
  "delete_on": "2019-08-15T11:29:13+02:00",
  "is_dns_disabled": false,
  "is_email_domain": false,
  "create_www_subdomain": true,
  "skeleton": "wordpress",
  "target": {
    "target": "https://www.keyhelp.de",
    "forwarding_type": 301
  },
  "security": {
    "id_certificate": 0,
    "lets_encrypt": true,
    "force_https": true,
    "is_hsts": true,
    "hsts_max_age": 10368000,
    "hsts_include": true,
    "hsts_preload": true
  }
}'
Und das funktioniert nicht. Leider habe ich noch nicht so viel Ahnung, wie ich das umsetzen kann. Mir würde auch reichen, mehrere bash-Dateien zu erstellen, die ich dann wiederum manuell oder über ein anderes Script starten oder notfalls manuell abarbeiten kann.

Bye Mike
Antworten