{"id":353774,"date":"2024-09-02T13:35:41","date_gmt":"2024-09-02T13:35:41","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/recuperar-el-estado-de-almacenamiento-de-los-nodos-proxmox\/"},"modified":"2024-10-13T19:05:24","modified_gmt":"2024-10-13T19:05:24","slug":"recuperar-el-estado-de-almacenamiento-de-los-nodos-proxmox","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/es\/script-hub\/recuperar-el-estado-de-almacenamiento-de-los-nodos-proxmox\/","title":{"rendered":"Gu\u00eda de scripts de Linux: c\u00f3mo recuperar el estado de almacenamiento de los nodos Proxmox"},"content":{"rendered":"<p>La gesti\u00f3n eficaz del almacenamiento es un aspecto crucial para mantener una infraestructura inform\u00e1tica s\u00f3lida y eficiente. Para los profesionales de TI y los <a href=\"https:\/\/www.ninjaone.com\/es\/que-es-un-msp\" target=\"_blank\" rel=\"noopener\">proveedores de servicios gestionados (MSP)<\/a>, disponer de herramientas que ofrezcan informaci\u00f3n detallada sobre el estado del almacenamiento puede mejorar enormemente su eficiencia operativa.<\/p>\n<p>Una de estas herramientas es el script bash dise\u00f1ado <strong>para recuperar el estado de almacenamiento de los nodos Proxmox<\/strong> y mostrar los detalles. Este post explorar\u00e1 la funcionalidad del script, su importancia y su aplicaci\u00f3n en situaciones reales.<\/p>\n<h2>Contexto<\/h2>\n<p>En un entorno virtualizado como Proxmox, comprender el estado del almacenamiento en los nodos es vital para la optimizaci\u00f3n del rendimiento, la resoluci\u00f3n de problemas y la planificaci\u00f3n de la capacidad. Proxmox VE (Virtual Environment) es una soluci\u00f3n de gesti\u00f3n de virtualizaci\u00f3n de servidores de c\u00f3digo abierto que proporciona una potente plataforma para gestionar m\u00e1quinas virtuales, contenedores, almacenamiento y redes.<\/p>\n<p>El script proporcionado aprovecha la API de Proxmox y la herramienta CLI de NinjaOne RMM para recopilar y presentar informaci\u00f3n detallada de almacenamiento, que luego se puede guardar en campos personalizados para su posterior an\u00e1lisis o documentaci\u00f3n. Este script es especialmente \u00fatil para los MSP que necesitan supervisar varios entornos de clientes y garantizar un rendimiento y una disponibilidad \u00f3ptimos.<\/p>\n<h2>El script <strong>para recuperar el estado de almacenamiento de los nodos Proxmox<\/strong><\/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>An\u00e1lisis detallado<\/h2>\n<p>Profundicemos en el script para recuperar el estado de almacenamiento de los nodos Proxmox para entender su funcionamiento paso a paso.<\/p>\n<ol>\n<li><strong>Inicializaci\u00f3n y an\u00e1lisis de argumentos<\/strong>. El script para recuperar el estado de almacenamiento de los nodos Proxmox comienza analizando los argumentos de la l\u00ednea de comandos para determinar los nombres de los campos personalizados en los que se almacenar\u00e1n los detalles de almacenamiento. Acepta dos argumentos: uno para un campo personalizado multil\u00ednea y otro para un campo personalizado WYSIWYG. Estos campos se utilizan para almacenar informaci\u00f3n de almacenamiento formateada para facilitar la lectura y el an\u00e1lisis posterior.<\/li>\n<li><strong>Validaci\u00f3n de campos personalizados<\/strong>. El script para recuperar el estado de almacenamiento de los nodos Proxmox comprueba si los campos personalizados se establecen a trav\u00e9s de variables de entorno o argumentos de l\u00ednea de comandos. Asegura que ambos campos no sean iguales para evitar conflictos.<\/li>\n<li><strong>Comprobaci\u00f3n de disponibilidad y permisos de la herramienta<\/strong>. El script para recuperar el estado de almacenamiento de los nodos Proxmox comprueba la disponibilidad del comando pvesh, que se utiliza para interactuar con la API de Proxmox, y se asegura de que se ejecuta con privilegios de root.<\/li>\n<li><strong>Validaci\u00f3n del CLI de NinjaOne RMM<\/strong>. El script comprueba la existencia de la herramienta CLI de NinjaOne RMM, que es necesaria para actualizar los campos personalizados.<\/li>\n<li><strong>Recuperaci\u00f3n del nombre del nodo<\/strong>. El script define una funci\u00f3n para recuperar el nombre del nodo Proxmox, necesario para consultar detalles espec\u00edficos del almacenamiento.<\/li>\n<li><strong>Recuperaci\u00f3n y formateo de la informaci\u00f3n de almacenamiento<\/strong>. El script para recuperar el estado de almacenamiento de los nodos Proxmox recupera la lista de almacenamiento e itera sobre cada elemento de almacenamiento para recopilar informaci\u00f3n de estado detallada, incluido el espacio libre y total. Esta informaci\u00f3n se formatea tanto para los campos personalizados multil\u00ednea como para los WYSIWYG.<\/li>\n<li><strong>Creaci\u00f3n de tabla HTML<\/strong>. El script construye una tabla HTML para el campo personalizado WYSIWYG, resumiendo el estado de almacenamiento en un formato tabular.<\/li>\n<li><strong>Guardado de resultados<\/strong>. Finalmente, el script para recuperar el estado de almacenamiento de los nodos Proxmox guarda la informaci\u00f3n de almacenamiento formateada en los campos personalizados especificados utilizando la herramienta CLI de NinjaOne RMM.<\/li>\n<\/ol>\n<h2>Posibles casos de uso<\/h2>\n<p>Imagina a un MSP que gestiona entornos de m\u00faltiples clientes con Proxmox. Debe comprobar peri\u00f3dicamente el estado del almacenamiento de los nodos Porxmox para asegurarse de que hay suficiente espacio libre para las copias de seguridad y las operaciones de las m\u00e1quinas virtuales. Con este script, el MSP puede automatizar la recuperaci\u00f3n de la informaci\u00f3n de almacenamiento y guardarla en campos personalizados para cada cliente, lo que permite un acceso r\u00e1pido a los datos cr\u00edticos sin intervenci\u00f3n manual. Esta automatizaci\u00f3n <a href=\"https:\/\/www.ninjaone.com\/blog\/how-human-error-relates-to-cybersecurity-risks\/\" target=\"_blank\" rel=\"noopener\">reduce el riesgo de error humano<\/a> y garantiza actualizaciones puntuales sobre el estado del almacenamiento.<\/p>\n<h2>Comparaciones<\/h2>\n<p>Mientras que este script ofrece una soluci\u00f3n a medida para entornos Proxmox integrados con NinjaOne RMM, otros m\u00e9todos para recuperar informaci\u00f3n de almacenamiento incluyen el uso de herramientas nativas Proxmox como la interfaz web o scripts personalizados sin integraci\u00f3n NinjaOne RMM.<\/p>\n<p>Sin embargo, estos m\u00e9todos pueden carecer de las funciones de <a href=\"https:\/\/www.ninjaone.com\/es\/blog\/todo-sobre-automatizacion-de-ti\/\" target=\"_blank\" rel=\"noopener\">automatizaci\u00f3n<\/a> y gesti\u00f3n centralizada que ofrece la combinaci\u00f3n de este script y NinjaOne RMM, lo que los hace menos eficientes para los MSP que gestionan m\u00faltiples entornos.<\/p>\n<h2>FAQ<\/h2>\n<h3><strong>\u00bfQu\u00e9 es Proxmox VE?<\/strong><\/h3>\n<p>Proxmox VE es una plataforma de gesti\u00f3n de virtualizaci\u00f3n de servidores de c\u00f3digo abierto que permite gestionar m\u00e1quinas virtuales, contenedores, almacenamiento y redes.<\/p>\n<h3><strong>\u00bfQu\u00e9 es NinjaOne RMM?<\/strong><\/h3>\n<p>NinjaOne RMM es una herramienta <a href=\"https:\/\/www.ninjaone.com\/es\/rmm\">de supervisi\u00f3n y gesti\u00f3n remota (RMM)<\/a> que ayuda a los MSP y a los profesionales de TI a gestionar los entornos de los clientes desde una plataforma centralizada.<\/p>\n<h3><strong>\u00bfNecesito acceso root para ejecutar este script para recuperar el estado de almacenamiento de los nodos Proxmox?<\/strong><\/h3>\n<p>S\u00ed, se requiere acceso root para recuperar informaci\u00f3n de almacenamiento de los nodos Proxmox.<\/p>\n<h3><strong>\u00bfSe puede utilizar este script sin NinjaOne RMM?<\/strong><\/h3>\n<p>El script para recuperar el estado de almacenamiento de los nodos Proxmox est\u00e1 dise\u00f1ado para integrarse con NinjaOne RMM para almacenar datos de campos personalizados. Sin NinjaOne RMM, todav\u00eda puede recuperar y mostrar la informaci\u00f3n de almacenamiento, pero no la guardar\u00e1 en campos personalizados.<\/p>\n<h2>Implicaciones<\/h2>\n<p>La automatizaci\u00f3n de la recuperaci\u00f3n y documentaci\u00f3n del estado del almacenamiento mejora <a href=\"https:\/\/www.ninjaone.com\/es\/eficiencia\" target=\"_blank\" rel=\"noopener\">la eficacia<\/a> operativa y reduce el riesgo de que los problemas relacionados con el almacenamiento pasen desapercibidos. Este enfoque proactivo de la gesti\u00f3n del almacenamiento puede evitar <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-network-downtime\/\" target=\"_blank\" rel=\"noopener\">tiempos de inactividad<\/a> y garantizar que la infraestructura de TI se mantenga en buen estado y rinda al m\u00e1ximo.<\/p>\n<h2>Recomendaciones<\/h2>\n<ul>\n<li>Aseg\u00farate de que la herramienta API de Proxmox (pvesh) y la herramienta CLI de NinjaOne RMM est\u00e1n correctamente instaladas y configuradas antes de ejecutar el script.<\/li>\n<li>Revisa y actualiza peri\u00f3dicamente los campos personalizados para mantener la informaci\u00f3n de almacenamiento actualizada y precisa.<\/li>\n<li>Prueba el script para recuperar el estado de almacenamiento de los nodos Proxmox en un entorno que no sea de producci\u00f3n para asegurarte de que satisface tus necesidades y se integra perfectamente en los procesos actuales.<\/li>\n<\/ul>\n<h2>Reflexiones finales<\/h2>\n<p>El uso de scripts de automatizaci\u00f3n como \u00e9ste para recuperar el estado de almacenamiento de los nodos Proxmox puede mejorar significativamente la eficacia de las operaciones de TI, en particular para los MSP que gestionan entornos de varios clientes. <a href=\"https:\/\/www.ninjaone.com\/es\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a>, con sus potentes capacidades RMM, proporciona una excelente plataforma para integrar dichos scripts, ofreciendo un enfoque centralizado y racionalizado de la gesti\u00f3n de TI. Al utilizar estas herramientas, los profesionales de TI pueden garantizar que su infraestructura funcione siempre de forma \u00f3ptima y estar mejor preparados para afrontar cualquier reto que pueda surgir relacionado con el almacenamiento.<\/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":[4259],"class_list":["post-353774","script_hub","type-script_hub","status-publish","hentry","script_hub_category-linux","use_cases-configuracion-general"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub\/353774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/comments?post=353774"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media?parent=353774"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/operating_system?post=353774"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/use_cases?post=353774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}