{"id":353715,"date":"2024-08-20T06:16:53","date_gmt":"2024-08-20T06:16:53","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/recuperare-lo-stato-dello-storage-dei-nodi-proxmox\/"},"modified":"2024-10-13T19:05:26","modified_gmt":"2024-10-13T19:05:26","slug":"recuperare-lo-stato-dello-storage-dei-nodi-proxmox","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/it\/script-hub\/recuperare-lo-stato-dello-storage-dei-nodi-proxmox\/","title":{"rendered":"Guida agli script Linux: come recuperare lo stato dello storage dei nodi Proxmox"},"content":{"rendered":"<p>La gestione efficace dello storage \u00e8 un aspetto cruciale per mantenere un&#8217;infrastruttura IT solida ed efficiente. Per i professionisti IT e i <a href=\"https:\/\/www.ninjaone.com\/it\/cos-e-un-msp\" target=\"_blank\" rel=\"noopener\">provider di servizi gestiti (MSP)<\/a>, disporre di strumenti che forniscono informazioni dettagliate sullo stato dello storage pu\u00f2 migliorare notevolmente l&#8217;efficienza operativa.<\/p>\n<p>Uno di questi strumenti \u00e8 lo script bash progettato <strong>per recuperare lo stato dello storage dei nodi Proxmox <\/strong>e visualizzarne i dettagli. Questo post del blog esplorer\u00e0 le funzionalit\u00e0 dello script, la sua importanza e la sua applicazione in scenari reali.<\/p>\n<h2>Background<\/h2>\n<p>In un ambiente virtualizzato come Proxmox, la comprensione dello stato dello storage dei nodi \u00e8 fondamentale per l&#8217;ottimizzazione delle prestazioni, la risoluzione dei problemi e la pianificazione dell\u2019uso delle capacit\u00e0. Proxmox VE (Virtual Environment) \u00e8 una soluzione open-source per la gestione della virtualizzazione dei server che offre una potente piattaforma per la gestione di virtual machine, container, storage e networking.<\/p>\n<p>Lo script fornito sfrutta l&#8217;API di Proxmox e lo strumento NinjaRMM CLI per raccogliere e mostrare informazioni dettagliate sullo storage dei nodi Proxmox, che possono essere salvate in campi personalizzati per ulteriori analisi o documentazione. Questo script \u00e8 particolarmente utile per gli MSP che devono monitorare pi\u00f9 ambienti client e garantire prestazioni e disponibilit\u00e0 ottimali.<\/p>\n<h2>Lo script per recuperare lo stato dello storage dei nodi Proxmox:<\/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=\"blog-cta-new blog-cta-style-1\"><div class=\"cta-left\"><h2><\/h2><p><\/p><\/div><div class=\"cta-right\"><a class=\"button\" href=\"\"><\/a><\/div><\/div>\n<h2>Analisi dettagliata<\/h2>\n<p>Approfondiamo lo script per recuperare lo stato dello storage dei nodi Proxmox per comprenderne il funzionamento passo dopo passo.<\/p>\n<ol>\n<li><strong>Inizializzazione e parsing degli argomenti:<\/strong> Lo script per recuperare lo stato dello storage dei nodi Proxmox inizia con il parsing degli argomenti della riga di comando per determinare i nomi dei campi personalizzati in cui saranno memorizzati i dettagli sullo spazio di archiviazione. Accetta due argomenti: uno per un campo personalizzato multilinea e un altro per un campo personalizzato WYSIWYG. Questi campi sono utilizzati per memorizzare le informazioni di memorizzazione formattate per facilitare la lettura e l&#8217;analisi.<\/li>\n<li><strong>Convalida dei campi personalizzati:<\/strong> Lo script per recuperare lo stato dello storage dei nodi Proxmox controlla se i campi personalizzati sono impostati tramite variabili d&#8217;ambiente o argomenti della riga di comando. Assicura che i due campi non siano uguali per evitare conflitti.<\/li>\n<li><strong>Verifica della disponibilit\u00e0 dello strumento e delle autorizzazioni:<\/strong> Lo script per recuperare lo stato dello storage dei nodi Proxmox verifica la disponibilit\u00e0 del comando pvesh, utilizzato per interagire con l&#8217;API di Proxmox, e si assicura che sia eseguito con i privilegi di root.<\/li>\n<li><strong>Convalida NinjaOne CLI:<\/strong> Lo script per recuperare lo stato dello storage dei nodi Proxmox verifica l&#8217;esistenza dello strumento NinjaRMM CLI, necessario per l&#8217;aggiornamento dei campi personalizzati.<\/li>\n<li><strong>Recupero del nome del nodo:<\/strong> Lo script per recuperare lo stato dello storage dei nodi Proxmox definisce una funzione per recuperare il nome del nodo Proxmox, necessario per individuare i dettagli specifici dello storage.<\/li>\n<li><strong>Recupero e formattazione delle informazioni sullo storage:<\/strong> Lo script recupera l&#8217;elenco degli spazi di archiviazione e itera su ogni elemento di storage per raccogliere informazioni dettagliate sullo stato dello storage dei nodi Proxmox, compreso lo spazio libero e totale. Queste informazioni sono formattate sia per i campi personalizzati multilinea che per quelli WYSIWYG.<\/li>\n<li><strong>Creazione della tabella HTML:<\/strong> Lo script per recuperare lo stato dello storage dei nodi Proxmox costruisce una tabella HTML per il campo personalizzato WYSIWYG, inserendo i dati sullo stato dello storage in un formato tabellare.<\/li>\n<li><strong>Salvataggio dei risultati:<\/strong> Infine, lo script salva le informazioni sugli spazi di archiviazione formattate nei campi personalizzati specificati utilizzando lo strumento NinjaRMM CLI.<\/li>\n<\/ol>\n<h2>Casi d&#8217;uso potenziali<\/h2>\n<p>Immagina un MSP che gestisce pi\u00f9 ambienti di clienti con Proxmox. Deve controllare regolarmente lo stato dello storage dei nodi Proxmox per assicurarsi che ci sia abbastanza spazio libero per i backup e le operazioni delle virtual machine. Utilizzando questo script, l&#8217;MSP pu\u00f2 automatizzare il recupero delle informazioni sullo spazio di archiviazione e salvarle in campi personalizzati per ogni cliente, consentendo un rapido accesso ai dati critici senza interventi manuali. L&#8217;automazione <a href=\"https:\/\/www.ninjaone.com\/it\/blog\/come-l-errore-umano-influisce-sui-rischi-di-cybersecurity\/\" target=\"_blank\" rel=\"noopener\">riduce il rischio di errori umani<\/a> e garantisce aggiornamenti tempestivi sullo stato dello storage.<\/p>\n<h2>Confronti<\/h2>\n<p>Sebbene questo script offra una soluzione su misura per gli ambienti Proxmox integrati con NinjaOne, altri metodi per recuperare le informazioni sugli storage includono l&#8217;uso di strumenti nativi di Proxmox come l&#8217;interfaccia web o script personalizzati senza l&#8217;integrazione con NinjaOne.<\/p>\n<p>Tuttavia, questi metodi possono mancare dell&#8217;<a href=\"https:\/\/www.ninjaone.com\/it\/blog\/tutto-quello-che-bisogna-sapere-sull-automazione-it\/\" target=\"_blank\" rel=\"noopener\">automazione<\/a> e delle funzionalit\u00e0 di gestione centralizzata fornite dalla combinazione di questo script e di NinjaOne, e questo li rende meno efficienti per gli MSP che gestiscono pi\u00f9 ambienti.<\/p>\n<h2>Domande frequenti<\/h2>\n<h3><strong>Che cos&#8217;\u00e8 Proxmox VE?<\/strong><\/h3>\n<p>Proxmox VE \u00e8 una piattaforma open-source per la gestione della virtualizzazione dei server che consente di gestire virtual machine, container, storage e reti.<\/p>\n<h3><strong>Che cos&#8217;\u00e8 NinjaOne?<\/strong><\/h3>\n<p>NinjaOne \u00e8 uno strumento di <a href=\"https:\/\/www.ninjaone.com\/it\/rmm\/\">monitoraggio e gestione remota (RMM)<\/a> che aiuta gli MSP e i professionisti IT a gestire gli ambienti dei clienti da una piattaforma centralizzata.<\/p>\n<h3><strong>Ho bisogno dell&#8217;accesso root per eseguire questo script per recuperare lo stato dello storage dei nodi Proxmox?<\/strong><\/h3>\n<p>S\u00ec, per recuperare le informazioni sullo storage dai nodi Proxmox \u00e8 necessario l&#8217;accesso root.<\/p>\n<h3><strong>Questo script pu\u00f2 essere utilizzato senza NinjaOne?<\/strong><\/h3>\n<p>Lo script per recuperare lo stato dello storage dei nodi Proxmox \u00e8 progettato per integrarsi con NinjaOne per la memorizzazione dei dati dei campi personalizzati. Senza NinjaOne, pu\u00f2 comunque recuperare e visualizzare le informazioni sugli spazi di archiviazione, ma non le salver\u00e0 nei campi personalizzati.<\/p>\n<h2>Implicazioni<\/h2>\n<p>L&#8217;automazione per individuare le informazioni sullo storage e documentarle migliora l&#8217;<a href=\"https:\/\/www.ninjaone.com\/it\/efficienza-it\/\" target=\"_blank\" rel=\"noopener\">efficienza<\/a> operativa e riduce il rischio che i problemi legati allo spazio di archiviazione passino inosservati. Questo approccio proattivo alla gestione dello storage pu\u00f2 prevenire i <a href=\"https:\/\/www.ninjaone.com\/it\/it-hub\/gestione-dei-servizi-it\/cos-e-il-tempo-di-inattivita-di-una-rete\/\" target=\"_blank\" rel=\"noopener\">tempi di inattivit\u00e0<\/a> e garantire che l&#8217;infrastruttura IT rimanga integra e performante.<\/p>\n<h2>Raccomandazioni<\/h2>\n<ul>\n<li>Assicurati che lo strumento Proxmox API (pvesh) e lo strumento NinjaOne CLI siano correttamente installati e configurati prima di eseguire lo script.<\/li>\n<li>Controlla e aggiorna regolarmente i campi personalizzati per mantenere le informazioni sugli storage aggiornate e precise.<\/li>\n<li>Testa lo script per recuperare lo stato dello storage dei nodi Proxmox in un ambiente non di produzione per assicurarti che soddisfi le tue esigenze e si integri perfettamente con i processi esistenti.<\/li>\n<\/ul>\n<h2>Considerazioni finali<\/h2>\n<p>L&#8217;utilizzo di script di automazione come questo per recuperare lo stato dello storage dei nodi Proxmox pu\u00f2 migliorare in modo significativo l&#8217;efficienza delle operazioni IT, in particolare per gli MSP che gestiscono pi\u00f9 ambienti di clienti. <a href=\"https:\/\/www.ninjaone.com\/it\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a>, con le sue potenti funzionalit\u00e0 RMM, fornisce una piattaforma eccellente per l&#8217;integrazione di tali script, offrendo un approccio centralizzato e semplificato alla gestione IT. Utilizzando questi strumenti, i professionisti IT possono assicurarsi che la loro infrastruttura funzioni sempre in modo ottimale ed essere meglio preparati a gestire qualsiasi problema legato allo storage.<\/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":"","_lmt_disable":""},"operating_system":[4211],"use_cases":[4269],"class_list":["post-353715","script_hub","type-script_hub","status-publish","hentry","script_hub_category-linux"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/script_hub\/353715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/comments?post=353715"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media?parent=353715"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/operating_system?post=353715"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/use_cases?post=353715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}