Page 1 of 1

Api als bash-script nutzen

Posted: Wed 17. Nov 2021, 09:48
by 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

Re: Api als bash-script nutzen

Posted: Wed 17. Nov 2021, 10:16
by 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: Select all

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: Select all

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/

Re: Api als bash-script nutzen

Posted: Wed 17. Nov 2021, 10:24
by 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: Select all

#!/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