{"id":378966,"date":"2024-11-04T08:20:57","date_gmt":"2024-11-04T08:20:57","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=378966"},"modified":"2024-11-04T08:20:57","modified_gmt":"2024-11-04T08:20:57","slug":"status-des-netzwerk-knoten-speichers-abrufen","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/de\/script-hub\/status-des-netzwerk-knoten-speichers-abrufen\/","title":{"rendered":"Linux-Skript-Guide: Abruf vom Status des Netzwerk-Knoten-Speichers in Proxmox"},"content":{"rendered":"<p>Eine effektive Speicherverwaltung ist ein entscheidender Aspekt f\u00fcr die Aufrechterhaltung einer stabilen und effizienten IT-Infrastruktur. F\u00fcr IT-Experten und <a href=\"https:\/\/www.ninjaone.com\/de\/was-ist-ein-msp\/\" target=\"_blank\" rel=\"noopener\">Managed Service Provider (MSPs)<\/a> k\u00f6nnen Tools, die detaillierte Einblicke in den Speicherstatus bieten, die betriebliche Effizienz erheblich steigern.<\/p>\n<p>Ein solches Tool ist das Bash-Skript <strong>zum Abrufen und Anzeigen von Knoten-Speicher-Details in Proxmox<\/strong>. In diesem Blogbeitrag werden die Funktionen des Skripts, seine Bedeutung und seine Anwendung in der Praxis untersucht.<\/p>\n<h2>Kontext<\/h2>\n<p>In einer virtualisierten Umgebung wie Proxmox ist es f\u00fcr die Leistungsoptimierung, Fehlerbehebung und Kapazit\u00e4tsplanung unerl\u00e4sslich, den Status des Netzwerk-Knoten-Speichers abrufen zu k\u00f6nnen. Proxmox VE (Virtual Environment) ist eine Open-Source-L\u00f6sung f\u00fcr die Verwaltung der Servervirtualisierung, die eine leistungsstarke Plattform f\u00fcr das Management von VM, Containern, Speichern und Netzwerken bietet.<\/p>\n<p>Das mitgelieferte Skript nutzt die API von Proxmox und das CLI-Tool von NinjaOne RMM, um detaillierte Speicherinformationen zu sammeln und darzustellen, die dann in benutzerdefinierten Feldern zur weiteren Analyse oder Dokumentation gespeichert werden k\u00f6nnen. Dieses Skript ist besonders n\u00fctzlich f\u00fcr MSPs, die mehrere Client-Umgebungen \u00fcberwachen und optimale Leistung und Verf\u00fcgbarkeit sicherstellen m\u00fcssen.<\/p>\n<h2>Das Skript:<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">#!\/usr\/bin\/env bash\r\n\r\n# Description: Get the details of a Proxmox Node Storage and save it to a multiline and\/or WYSIWYG custom field\r\n#\r\n# Release Notes: Fixed 10% width bug.\r\n# By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https:\/\/www.ninjaone.com\/terms-of-use.\r\n# Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. \r\n# Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. \r\n# Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. \r\n# Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. \r\n# Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. \r\n# Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. \r\n# EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n\r\n# Command line arguments, swap the numbers if you want the multiline custom field to be the second argument\r\nmultiline_custom_field=$1 # First argument is the multiline custom field name\r\nwysiwyg_custom_field=$2   # Second argument is the WYSIWYG custom field name\r\n\r\n# Check if the multilineCustomField and wysiwygCustomField are set\r\nif [[ -n \"${multilineCustomField}\" &amp;&amp; \"${multilineCustomField}\" != \"null\" ]]; then\r\n    multiline_custom_field=$multilineCustomField\r\nfi\r\nif [[ -n \"${wysiwygCustomField}\" &amp;&amp; \"${wysiwygCustomField}\" != \"null\" ]]; then\r\n    wysiwyg_custom_field=$wysiwygCustomField\r\nfi\r\n\r\n# Check if the multiline_custom_field and wysiwyg_custom_field are the same\r\nif [[ -n \"${multiline_custom_field}\" &amp;&amp; \"${multiline_custom_field}\" == \"${wysiwyg_custom_field}\" ]]; then\r\n    echo \"[Error] multilineCustomField and wysiwygCustomField cannot be the same custom field.\"\r\n    exit 1\r\nfi\r\n\r\n# Check if the multiline_custom_field and wysiwyg_custom_field are set\r\nif [[ -z \"${multiline_custom_field}\" ]]; then\r\n    echo \"[Info] multilineCustomField is not set.\"\r\nfi\r\nif [[ -z \"${wysiwyg_custom_field}\" ]]; then\r\n    echo \"[Info] wysiwygCustomField is not set.\"\r\nfi\r\n\r\n# Check that we have the required tools\r\nif ! command -v pvesh &amp;&gt;\/dev\/null; then\r\n    echo \"[Error] The Proxmox VE API tool 'pvesh' is required.\"\r\n    exit 1\r\nfi\r\n\r\n# Check that we are running as root\r\nif [[ $EUID -ne 0 ]]; then\r\n    echo \"[Error] This script must be run as root.\"\r\n    exit 1\r\nfi\r\n\r\n# Check if ninjarmm-cli command exists\r\nninjarmm_cli=\"\/opt\/NinjaRMMAgent\/programdata\/ninjarmm-cli\"\r\nif [[ -z $ninjarmm_cli ]]; then\r\n    echo \"[Error] The ninjarmm-cli command does not exist in the default path. Please ensure the NinjaRMM agent is installed before running this script.\"\r\n    exit 1\r\nelse\r\n    # ninjarmm-cli command exists in the default path\r\n    echo -n\r\nfi\r\n\r\nfunction GetThisNodeName() {\r\n    # Get the node name\r\n    if ! node_name=$(pvesh get \/cluster\/status --noborder | awk '$6 == 1 {print $2}'); then\r\n        echo \"[Error] Failed to get the node name.\"\r\n        echo \"$node_name\"\r\n        exit 1\r\n    fi\r\n    echo \"$node_name\"\r\n}\r\n\r\n# Run the pvesh command to get the status information\r\nif ! storages=$(pvesh get \/storage --noborder | tail +2); then\r\n    echo \"[Error] Failed to get the list of storages.\"\r\n    echo \"$storages\"\r\n    exit 1\r\nfi\r\n# Example Output:\r\n# local\r\n# local-zfs\r\n# storage-nas\r\n\r\nfunction formatStorage() {\r\n    echo \"\"\r\n    echo \"Storage Status:\"\r\n    # Loop though the storages and get the status of each\r\n    for storage in $storages; do\r\n        # Get the status of the storage\r\n        if ! storage_status=$(pvesh get \/storage\/\"$storage\" --noborder); then\r\n            echo \"[Error] Failed to get the Storage Status of $storage.\"\r\n            echo \"$storage_status\"\r\n            exit 1\r\n        fi\r\n        storage_node=$(GetThisNodeName)\r\n        # Get the storage name\r\n        storage_name=$(echo \"$storage_status\" | grep -P 'storage\\s+' | awk '{print $2}')\r\n        # Get the free space\r\n        # \"$storage_name \" is used to avoid matching \"local-zfs\" when searching for \"local\"\r\n        storage_free_space=$(pvesh get \"\/nodes\/$storage_node\/storage\" --noborder | grep -P \"$storage_name \" | awk '{print $5\" \"$6}')\r\n        # Get the total space\r\n        storage_total_space=$(pvesh get \"\/nodes\/$storage_node\/storage\" --noborder | grep -P \"$storage_name \" | awk '{print $9\" \"$10}')\r\n        echo -n\r\n        echo \"\"\r\n        echo \"$storage\"\r\n        echo \"-------------\"\r\n        # Take the output of $storage_status, skip the first line, then use a colon as a separator between the key and value\r\n        echo \"$storage_status\" | tail +2 | awk '{print $1 \": \" $2}'\r\n        echo \"Free: $storage_free_space\"\r\n        echo \"Total: $storage_total_space\"\r\n    done\r\n}\r\nmultiline_output=$(formatStorage)\r\n\r\n# Create Storage Status label\r\nstorage_table=\"&lt;h2&gt;Storage Status&lt;\/h2&gt;\"\r\n# Create the Storage Status table\r\nstorage_table+=\"&lt;table style='white-space:nowrap;'&gt;&lt;tr&gt;&lt;th&gt;Storage Name&lt;\/th&gt;&lt;th&gt;Type&lt;\/th&gt;&lt;th&gt;Path\/File System&lt;\/th&gt;&lt;th&gt;Free Space&lt;\/th&gt;&lt;th&gt;Total Space&lt;\/th&gt;&lt;th&gt;Content&lt;\/th&gt;&lt;\/tr&gt;\"\r\n\r\n# Loop though the storages and get the status of each\r\nfor storage in $storages; do\r\n    if ! storage_status=$(pvesh get \/storage\/\"$storage\" --noborder); then\r\n        echo \"[Error] Failed to get the Storage Status of $storage.\"\r\n        echo \"$storage_status\"\r\n        exit 1\r\n    fi\r\n    # Example Output:\r\n    # key     value\r\n    # content images,rootdir\r\n    # digest  c14cb4c9bbcf9a062fa8a82b10afe01cb1ed5b8d\r\n    # pool    rpool\/data\r\n    # sparse  1\r\n    # storage local-zfs\r\n    # type    zfspool\r\n    storage_node=$(GetThisNodeName)\r\n    # Get the storage name\r\n    storage_name=$(echo \"$storage_status\" | grep -P 'storage\\s+' | awk '{print $2}')\r\n    # Get the storage type\r\n    storage_type=$(echo \"$storage_status\" | grep -P 'type\\s+' | awk '{print $2}')\r\n    # Get the storage pool\/path\r\n    storage_pool=$(echo \"$storage_status\" | grep -P 'pool\\s+' | awk '{print $2}')\r\n    if [[ -z \"${storage_pool}\" ]]; then\r\n        storage_pool=$(echo \"$storage_status\" | grep -P 'path\\s+' | awk '{print $2}')\r\n    fi\r\n    # Get the storage content\r\n    storage_content=$(echo \"$storage_status\" | grep -P 'content\\s+' | awk '{print $2}')\r\n    # Get the free space\r\n    # \"$storage_name \" is used to avoid matching \"local-zfs\" when searching for \"local\"\r\n    storage_free_space=$(pvesh get \"\/nodes\/$storage_node\/storage\" --noborder | grep -P \"$storage_name \" | awk '{print $5\" \"$6}')\r\n    # Get the total space\r\n    storage_total_space=$(pvesh get \"\/nodes\/$storage_node\/storage\" --noborder | grep -P \"$storage_name \" | awk '{print $9\" \"$10}')\r\n\r\n    # Add to the Storage Status table\r\n    storage_table+=\"&lt;tr&gt;&lt;td&gt;$storage_name&lt;\/td&gt;&lt;td&gt;$storage_type&lt;\/td&gt;&lt;td&gt;$storage_pool&lt;\/td&gt;&lt;td&gt;$storage_free_space&lt;\/td&gt;&lt;td&gt;$storage_total_space&lt;\/td&gt;&lt;td&gt;$storage_content&lt;\/td&gt;&lt;\/tr&gt;\"\r\ndone\r\n\r\n# Close the Storage Status table\r\nstorage_table+=\"&lt;\/table&gt;\"\r\n\r\n# Save the results\r\nresult_table=\"$storage_table\"\r\n\r\n_exit_code=0\r\n# Save the result to the custom field\r\nif [[ -n \"$wysiwyg_custom_field\" ]]; then\r\n    if [[ -x \"$ninjarmm_cli\" ]]; then\r\n        if hideOutput=$(echo \"$result_table\" | \"$ninjarmm_cli\" set --stdin \"$wysiwyg_custom_field\" 2&gt;&amp;1); then\r\n            echo \"[Info] Successfully set custom field: $wysiwyg_custom_field\"\r\n        else\r\n            echo \"[Error] Failed to set custom field: $wysiwyg_custom_field. Custom Field does not exit or does not have write permissions.\"\r\n            _exit_code=1\r\n        fi\r\n    else\r\n        echo \"[Error] NinjaRMM CLI not found or not executable\"\r\n        _exit_code=1\r\n    fi\r\nfi\r\n\r\nif [[ -n \"$multiline_custom_field\" ]]; then\r\n    if [[ -x \"$ninjarmm_cli\" ]]; then\r\n        if hideOutput=$(echo \"$multiline_output\" | \"$ninjarmm_cli\" set --stdin \"$multiline_custom_field\" 2&gt;&amp;1); then\r\n            echo \"[Info] Successfully set custom field: $multiline_custom_field\"\r\n        else\r\n            echo \"[Error] Failed to set custom field: $multiline_custom_field. Custom Field does not exit or does not have write permissions.\"\r\n            _exit_code=1\r\n        fi\r\n    else\r\n        echo \"[Error] NinjaRMM CLI not found or not executable\"\r\n        _exit_code=1\r\n    fi\r\nfi\r\n\r\n# Output the result if no custom fields are set\r\nif [[ -z \"${wysiwyg_custom_field}\" ]] &amp;&amp; [[ -z \"${multiline_custom_field}\" ]]; then\r\n    # Output the result to the Activity Feed\r\n    echo \"${multiline_output}\"\r\nfi\r\n\r\nif [[ $_exit_code -eq 1 ]]; then\r\n    exit 1\r\nfi\r\n<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Greifen Sie auf \u00fcber 300 Skripte im NinjaOne Dojo zu.<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/freetrialform\/\">Zugang erhalten<\/a><\/p>\n<\/div>\n<h2>Detailansicht<\/h2>\n<p>Als N\u00e4chstes sehen wir uns das Skript an, um seine Funktionsweise Schritt f\u00fcr Schritt zu verstehen.<\/p>\n<ol>\n<li><strong>Initialisierung und Parsen der Argumente<\/strong> Das Skript beginnt mit der Analyse der Befehlszeilenargumente, um die Namen der benutzerdefinierten Felder zu bestimmen, in denen die Speicherdetails gespeichert werden sollen. Sie akzeptiert zwei Argumente: eines f\u00fcr ein mehrzeiliges benutzerdefiniertes Feld und ein weiteres f\u00fcr ein benutzerdefiniertes WYSIWYG-Feld. In diesen Feldern werden formatierte Speicherinformationen zum leichteren Lesen und zur weiteren Analyse gespeichert.<\/li>\n<li><strong>\u00dcberpr\u00fcfung der benutzerdefinierten Felder<\/strong> Das Skript pr\u00fcft, ob die benutzerdefinierten Felder durch Umgebungsvariablen oder Befehlszeilenargumente festgelegt sind. Es stellt sicher, dass die beiden Felder nicht gleich sind, um Konflikte zu vermeiden.<\/li>\n<li><strong>\u00dcberpr\u00fcfung der Verf\u00fcgbarkeit von Tools und der Berechtigungen<\/strong> Das Skript pr\u00fcft die Verf\u00fcgbarkeit des pvesh-Befehls, der f\u00fcr die Interaktion mit der Proxmox-API verwendet wird, und gew\u00e4hrleistet, dass er mit Root-Rechten ausgef\u00fchrt wird.<\/li>\n<li><strong>Validierung von der NinjaOne RMM-CLI<\/strong> Das Skript pr\u00fcft, ob das NinjaOne RMM-CLI-Tool vorhanden ist, das f\u00fcr die Aktualisierung benutzerdefinierter Felder erforderlich ist.<\/li>\n<li><strong>Abruf des Namens vom Netzwerk-Knoten<\/strong> Es definiert eine Funktion zum Abruf des Namens vom Netzwerk-Knoten in Proxmox, der f\u00fcr die Abfrage bestimmter Speicherdetails erforderlich ist.<\/li>\n<li><strong>Abruf und Formatierung von Speicherinformationen<\/strong> Das Skript ruft die Speicherliste ab und iteriert \u00fcber jedes Speicherelement, um detaillierte Statusinformationen, einschlie\u00dflich des freien und des gesamten Speicherplatzes, zu erfassen. Diese Informationen werden sowohl f\u00fcr mehrzeilige als auch f\u00fcr benutzerdefinierte WYSIWYG-Felder formatiert.<\/li>\n<li><strong>HTML-Tabellenerstellung<\/strong> Das Bash-Skript erstellt eine HTML-Tabelle f\u00fcr das benutzerdefinierte WYSIWYG-Feld, in der der Speicherstatus in einem Tabellenformat zusammengefasst wird.<\/li>\n<li><strong>Speichern der Ergebnisse<\/strong> Schlie\u00dflich speichert das Skript die formatierten Speicherinformationen in den angegebenen benutzerdefinierten Feldern mit dem CLI-Tool von NinjaOne RMM.<\/li>\n<\/ol>\n<h2>Potenzielle Anwendungsf\u00e4lle<\/h2>\n<p>Stellen Sie sich vor, ein MSP verwaltet mehrere Client-Umgebungen mit Proxmox. Er muss den Speicherstatus regelm\u00e4\u00dfig \u00fcberpr\u00fcfen, um sicher zu sein, dass gen\u00fcgend freier Speicherplatz f\u00fcr Backups und den VM-Betrieb vorhanden ist. Mit diesem Skript kann der MSP den Abruf von Speicherinformationen automatisieren und sie in benutzerdefinierten Feldern f\u00fcr jeden Client speichern, was einen schnellen Zugriff auf wichtige Daten ohne manuelle Eingriffe erm\u00f6glicht. Diese Automatisierung <a href=\"https:\/\/www.ninjaone.com\/de\/blog\/wie-menschliches-versagen-mit-cybersecurity-risiken-zusammenhaengt\/\" target=\"_blank\" rel=\"noopener\">verringert das Risiko menschlichen Versagens<\/a> und gew\u00e4hrleistet zeitnahe Aktualisierungen des Speicherzustands.<\/p>\n<h2>Vergleiche<\/h2>\n<p>Dieses Skript bietet eine personalisierte L\u00f6sung f\u00fcr Proxmox-Umgebungen, die mit NinjaOne RMM integriert ist. Andere Methoden zum Abrufen von Speicherinformationen sind die Verwendung nativer Proxmox-Tools wie das Webinterface oder benutzerdefinierte Skripte ohne NinjaOne RMM-Integration.<\/p>\n<p>Diesen Methoden fehlen jedoch m\u00f6glicherweise die <a href=\"https:\/\/www.ninjaone.com\/de\/blog\/alles-was-sie-ueber-it-automatisierung-wissen-muessen\/\" target=\"_blank\" rel=\"noopener\">Automatisierungs-<\/a> und zentralen Verwaltungsfunktionen, die durch die Kombination aus diesem Skript und NinjaOne RMM bereitgestellt werden, was sie f\u00fcr MSPs, die mehrere Umgebungen verwalten, weniger effizient macht.<\/p>\n<h2>FAQs<\/h2>\n<h3><strong>Was ist Proxmox VE?<\/strong><\/h3>\n<p>Proxmox VE ist eine Open-Source-Plattform f\u00fcr die Verwaltung von Servervirtualisierung, die die Verwaltung von VM, Containern, Speichern und Netzwerken erm\u00f6glicht.<\/p>\n<h3><strong>Was ist NinjaOne RMM?<\/strong><\/h3>\n<p>NinjaOne RMM ist ein Tool zum <a href=\"https:\/\/www.ninjaone.com\/de\/rmm\/\">Remote Monitoring und Management (RMM)<\/a>, das MSPs und IT-Experten bei der Verwaltung von Kundenumgebungen \u00fcber eine zentrale Plattform unterst\u00fctzt.<\/p>\n<h3><strong>Ben\u00f6tige ich Root-Zugriff, um dieses Skript auszuf\u00fchren?<\/strong><\/h3>\n<p>Ja, Root-Zugriff ist erforderlich, um Speicherinformationen von Netzwerk-Knoten in Proxmox abzurufen.<\/p>\n<h3><strong>Kann dieses Skript auch ohne NinjaOne RMM verwendet werden?<\/strong><\/h3>\n<p>Das Skript ist f\u00fcr die Integration mit NinjaOne RMM zur Speicherung benutzerdefinierter Felddaten konzipiert. Ohne NinjaOne RMM kann es zwar Speicherinformationen abrufen und anzeigen, aber nicht in benutzerdefinierten Feldern speichern.<\/p>\n<h2>Folgen<\/h2>\n<p>Die Automatisierung des Abrufs und der Dokumentation des Speicherstatus erh\u00f6ht die betriebliche <a href=\"https:\/\/www.ninjaone.com\/de\/effizienz\/\" target=\"_blank\" rel=\"noopener\">Effizienz<\/a> und verringert das Risiko, dass speicherbezogene Probleme unbemerkt bleiben. Dieser proaktive Ansatz f\u00fcr die Speicherverwaltung kann <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-network-downtime\/\" target=\"_blank\" rel=\"noopener\">Ausfallzeiten<\/a> verhindern und garantieren, dass die IT-Infrastruktur gesund und leistungsf\u00e4hig bleibt.<\/p>\n<h2>Empfehlungen<\/h2>\n<ul>\n<li>Stellen Sie sicher, dass das Proxmox API-Tool (pvesh) und das CLI-Tool von NinjaOne RMM korrekt installiert und konfiguriert sind, bevor Sie das Skript ausf\u00fchren.<\/li>\n<li>\u00dcberpr\u00fcfen und aktualisieren Sie regelm\u00e4\u00dfig die benutzerdefinierten Felder, um die Speicherinformationen aktuell und korrekt zu halten.<\/li>\n<li>Testen Sie das Skript nicht in einer Produktionsumgebung, um sicherzugehen, dass es Ihren Anforderungen entspricht und sich nahtlos in Ihre bestehenden Prozesse integriert.<\/li>\n<\/ul>\n<h2>Abschlie\u00dfende \u00dcberlegungen<\/h2>\n<p>Der Einsatz von Automatisierungsskripten wie diesem kann die Effizienz des IT-Betriebs erheblich steigern, insbesondere f\u00fcr MSPs, die mehrere Client-Umgebungen verwalten. <a href=\"https:\/\/www.ninjaone.com\/de\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a> liefert mit seinen leistungsstarken RMM-Funktionen eine hervorragende Plattform f\u00fcr die Integration solcher Skripte und bietet einen zentralisierten und optimierten Ansatz f\u00fcr das IT-Management. Durch die Verwendung dieser Tools k\u00f6nnen IT-Experten gew\u00e4hrleisten, dass ihre Infrastruktur stets optimal funktioniert, und sind besser darauf vorbereitet, aufkommende speicherbezogene Herausforderungen zu bew\u00e4ltigen.<\/p>\n","protected":false},"author":35,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4211],"use_cases":[4307],"class_list":["post-378966","script_hub","type-script_hub","status-publish","hentry","script_hub_category-linux"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/script_hub\/378966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/comments?post=378966"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/media?parent=378966"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/operating_system?post=378966"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/de\/wp-json\/wp\/v2\/use_cases?post=378966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}