Api als bash-script nutzen

Locked
Shadowman
Posts: 12
Joined: Wed 21. Oct 2020, 17:35

Api als bash-script nutzen

Post 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
User avatar
Alexander
Keyweb AG
Posts: 3810
Joined: Wed 20. Jan 2016, 02:23

Re: Api als bash-script nutzen

Post 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/
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
Posts: 12
Joined: Wed 21. Oct 2020, 17:35

Re: Api als bash-script nutzen

Post 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
Locked