{"id":353776,"date":"1970-01-01T00:00:00","date_gmt":"1970-01-01T00:00:00","guid":{"rendered":"https:\/\/www.ninjaone.com\/?post_type=script_hub&#038;p=353776"},"modified":"2024-10-13T19:06:36","modified_gmt":"2024-10-13T19:06:36","slug":"informacion-de-proxmox-vm-linux","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/es\/script-hub\/informacion-de-proxmox-vm-linux\/","title":{"rendered":"Gu\u00eda de scripts de Linux: c\u00f3mo automatizar la recopilaci\u00f3n de informaci\u00f3n de Proxmox VM"},"content":{"rendered":"<p>En el panorama inform\u00e1tico actual, la gesti\u00f3n y supervisi\u00f3n eficaces de los entornos virtuales son cruciales para los administradores de sistemas y los <a href=\"https:\/\/www.ninjaone.com\/what-is-an-msp\/\" target=\"_blank\" rel=\"noopener\">proveedores de servicios gestionados (MSP)<\/a>. Los entornos virtuales, como los gestionados por Proxmox VM, requieren una supervisi\u00f3n peri\u00f3dica para garantizar un funcionamiento sin problemas y un rendimiento \u00f3ptimo.<\/p>\n<p>La automatizaci\u00f3n de la recopilaci\u00f3n del estado de <a href=\"https:\/\/www.ninjaone.com\/endpoint-management\/virtual-machine-monitoring\/\" target=\"_blank\" rel=\"noopener\">las m\u00e1quinas virtuales (VM)<\/a> y la informaci\u00f3n b\u00e1sica no s\u00f3lo ahorra tiempo, sino que tambi\u00e9n reduce el riesgo de error humano. Este post explora un script bash dise\u00f1ado para obtener y mostrar el estado y los detalles de los invitados de Proxmox VM, demostrando su utilidad y c\u00f3mo puede agilizar las operaciones de TI.<\/p>\n<h2>Contexto<\/h2>\n<p>Proxmox VM es una popular soluci\u00f3n de gesti\u00f3n de virtualizaci\u00f3n de c\u00f3digo abierto que combina KVM y la virtualizaci\u00f3n basada en contenedores en una \u00fanica plataforma. Para los profesionales de TI y los MSP, supervisar el estado de las m\u00e1quinas virtuales y los contenedores es una tarea rutinaria pero vital. Este script responde a la necesidad de disponer de un m\u00e9todo automatizado y coherente para recopilar y mostrar informaci\u00f3n sobre la MV, present\u00e1ndola en un formato de f\u00e1cil manejo, acceso e interpretaci\u00f3n.<\/p>\n<h2>El script para visualizar la\u00a0informaci\u00f3n de Proxmox VM<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">#!\/usr\/bin\/env bash\r\n\r\n# Description: This script gets the status and basic info of all Proxmox guests on a host and saves it to a WYSIWYG custom field.\r\n#\r\n# Release Notes: Initial Release\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# Below are all the (case sensitive) valid parameters for this script.\r\n# Only the custom field name is required!\r\n# Preset Parameter: \"Custom_Field_Name\"\r\n#   Custom_Field_Name: The name of the WYSIWYG custom field to save the VM info to.\r\n\r\nCustom_Field_Name=$1\r\n\r\nif [[ -n \"${customFieldName}\" ]]; then\r\n    Custom_Field_Name=\"${customFieldName}\"\r\nfi\r\n\r\nif [[ -z \"${Custom_Field_Name}\" || \"${Custom_Field_Name}\" == \"null\" ]]; then\r\n    echo \"The custom field name is required.\"\r\n    echo \" Example: guests\"\r\n    exit 1\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 \"The Proxmox VE API tool 'pvesh' is required.\"\r\n    exit 1\r\nfi\r\nif ! command -v python3 &amp;&gt; \/dev\/null; then\r\n    echo \"The python3 is required. Should already be installed.\"\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 \"This script must be run as root.\"\r\n    exit 1\r\nfi\r\n\r\nfunction SetCustomField() {\r\n    \/opt\/NinjaRMMAgent\/programdata\/ninjarmm-cli \"$@\"\r\n}\r\n\r\n# Get the status and basic info of all Proxmox VMs on a host\r\nqemu_guests=$(pvesh get \/nodes\/localhost\/qemu --output-format=json)\r\n\r\n# Create a table to store the VM info with the headers: Name, Status, Memory, CPUs, Disk Sizes\r\nvm_table=\"&lt;table&gt;&lt;tr&gt;&lt;th&gt;Status&lt;\/th&gt;&lt;th&gt;ID&lt;\/th&gt;&lt;th&gt;Name&lt;\/th&gt;&lt;th&gt;Memory&lt;\/th&gt;&lt;th&gt;CPUs&lt;\/th&gt;&lt;th&gt;Disk Sizes Combined&lt;\/th&gt;&lt;\/tr&gt;\"\r\n\r\n# Loop through each VM and add the info to the table\r\nqemu_table=$(echo \"$qemu_guests\" | python3 -c '\r\nimport sys, json\r\n\r\n# Function to convert bytes to human readable format\r\ndef human_readable_size(size):\r\n    for unit in [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\"]:\r\n        if size &lt; 1024:\r\n            return f\"{size:.2f} {unit}\"\r\n        size \/= 1024\r\n\r\nqemu_guests = json.load(sys.stdin)\r\nvm_table = \"\"\r\n\r\nfor qemu in qemu_guests:\r\n    qemu_id = qemu[\"vmid\"]\r\n    qemu_name = qemu[\"name\"]\r\n    qemu_status = qemu[\"status\"]\r\n    # Convert the memory from bytes to GB\r\n    qemu_mem = human_readable_size(qemu[\"maxmem\"])\r\n    qemu_cpus = qemu[\"cpus\"]\r\n    # Convert the disk size from bytes to GB\r\n    qemu_disk = human_readable_size(qemu[\"maxdisk\"])\r\n\r\n    # Add HTML blank space if values are empty\r\n    qemu_id = qemu_id if qemu_id else \"&amp;nbsp;\"\r\n    qemu_name = qemu_name if qemu_name else \"&amp;nbsp;\"\r\n    qemu_mem = qemu_mem if qemu_mem else \"&amp;nbsp;\"\r\n    qemu_cpus = qemu_cpus if qemu_cpus else \"&amp;nbsp;\"\r\n    qemu_disk = qemu_disk if qemu_disk else \"&amp;nbsp;\"\r\n\r\n    if \"running\" in qemu_status:\r\n        status_text = \"&lt;tr class='\"'success'\"'&gt;&lt;td&gt;Running&lt;\/td&gt;\"\r\n    elif \"stopped\" in qemu_status:\r\n        status_text = \"&lt;tr class='\"'danger'\"'&gt;&lt;td&gt;Stopped&lt;\/td&gt;\"\r\n    else:\r\n        status_text = \"&lt;tr class='\"'other'\"'&gt;&lt;td&gt;{}&lt;\/td&gt;\".format(qemu_status)\r\n\r\n    vm_table += \"{}&lt;td&gt;{}&lt;\/td&gt;&lt;td&gt;{}&lt;\/td&gt;&lt;td&gt;{}&lt;\/td&gt;&lt;td&gt;{}&lt;\/td&gt;&lt;td&gt;{}&lt;\/td&gt;&lt;\/tr&gt;\".format(\r\n        status_text, qemu_id, qemu_name, qemu_mem, qemu_cpus, qemu_disk\r\n    )\r\n\r\nprint(vm_table)\r\n')\r\nvm_table=\"$vm_table$qemu_table\"\r\n\r\n# Loop through each lxc and add the info to the table\r\nlxc_guests=$(pvesh get \/nodes\/localhost\/lxc --output-format=json)\r\n# Loop through each lxc and add the info to the table\r\nlxc_table=$(echo \"$lxc_guests\" | python3 -c '\r\nimport sys, json\r\n\r\n# Function to convert bytes to human readable format\r\ndef human_readable_size(size):\r\n    for unit in [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\"]:\r\n        if size &lt; 1024:\r\n            return f\"{size:.2f} {unit}\"\r\n        size \/= 1024\r\n\r\nlxc_guests = json.load(sys.stdin)\r\nvm_table = \"\"\r\n\r\nfor lxc in lxc_guests:\r\n    lxc_id = lxc[\"vmid\"]\r\n    lxc_name = lxc[\"name\"]\r\n    lxc_status = lxc[\"status\"]\r\n    # Convert the memory from bytes to GB\r\n    lxc_mem = human_readable_size(lxc[\"maxmem\"])\r\n    lxc_cpus = lxc[\"cpus\"]\r\n    # Convert the disk size from bytes to GB\r\n    lxc_disk = human_readable_size(lxc[\"maxdisk\"])\r\n\r\n    # Add HTML blank space if values are empty\r\n    lxc_id = lxc_id if lxc_id else \"&amp;nbsp;\"\r\n    lxc_name = lxc_name if lxc_name else \"&amp;nbsp;\"\r\n    lxc_mem = lxc_mem if lxc_mem else \"&amp;nbsp;\"\r\n    lxc_cpus = lxc_cpus if lxc_cpus else \"&amp;nbsp;\"\r\n    lxc_disk = lxc_disk if lxc_disk else \"&amp;nbsp;\"\r\n\r\n    if \"running\" in lxc_status:\r\n        status_text = \"&lt;tr class='\"'success'\"'&gt;&lt;td&gt;Running&lt;\/td&gt;\"\r\n    elif \"stopped\" in lxc_status:\r\n        status_text = \"&lt;tr class='\"'danger'\"'&gt;&lt;td&gt;Stopped&lt;\/td&gt;\"\r\n    else:\r\n        status_text = \"&lt;tr class='\"'other'\"'&gt;&lt;td&gt;{}&lt;\/td&gt;\".format(lxc_status)\r\n\r\n    vm_table += \"{}&lt;td&gt;{}&lt;\/td&gt;&lt;td&gt;{}&lt;\/td&gt;&lt;td&gt;{}&lt;\/td&gt;&lt;td&gt;{}&lt;\/td&gt;&lt;td&gt;{}&lt;\/td&gt;&lt;\/tr&gt;\".format(\r\n        status_text, lxc_id, lxc_name, lxc_mem, lxc_cpus, lxc_disk\r\n    )\r\n\r\nprint(vm_table)\r\n')\r\nvm_table=\"$vm_table$lxc_table\"\r\n\r\n# Close the table\r\nvm_table=\"$vm_table&lt;\/table&gt;\"\r\n\r\n# Highlight the running and stopped VMs\r\nvm_table=$(echo \"$vm_table\" | sed 's\/&lt;tr&gt;&lt;td&gt;running&lt;\\\/td&gt;\/&lt;tr class=\"success\"&gt;&lt;td&gt;Running&lt;\\\/td&gt;\/')\r\nvm_table=$(echo \"$vm_table\" | sed 's\/&lt;tr&gt;&lt;td&gt;stopped&lt;\\\/td&gt;\/&lt;tr class=\"danger\"&gt;&lt;td&gt;Stopped&lt;\\\/td&gt;\/')\r\n\r\n# Save the table to the custom field\r\nif ! SetCustomField set \"$Custom_Field_Name\" \"$vm_table\"; then\r\n    echo \"Failed to save the Proxmox VM info to the custom field: $Custom_Field_Name\"\r\n    exit 1\r\nfi\r\necho \"The Proxmox VM info has been saved to the custom field: $Custom_Field_Name\"<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><\/div>\n<h2>An\u00e1lisis detallado<\/h2>\n<p>El script bash proporcionado recupera el estado y la informaci\u00f3n esencial de todos los invitados Proxmox VM en un host y guarda estos datos en un campo personalizado. Esto resulta especialmente \u00fatil en entornos con numerosas m\u00e1quinas virtuales, en los que las comprobaciones manuales pueden llevar mucho tiempo y dar lugar a errores.<\/p>\n<h3>Explicaci\u00f3n paso a paso<\/h3>\n<h4>1. Inicializar scripts y gestionar par\u00e1metros:<\/h4>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:1440,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"2\">El script para visualizar la informaci\u00f3n de Proxmox VM comienza definiendo el nombre del campo personalizado, que es un par\u00e1metro obligatorio. Este nombre de campo almacenar\u00e1 la informaci\u00f3n de la m\u00e1quina virtual.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:1440,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"2\">Si el nombre del campo personalizado no se proporciona o no es v\u00e1lido, el script para visualizar la informaci\u00f3n de Proxmox VM se cierra con un mensaje de error.<\/li>\n<\/ul>\n<h4>2. Comprobar disponibilidad de herramientas:<\/h4>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:1440,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"2\">El script para visualizar la informaci\u00f3n de Proxmox VM verifica la disponibilidad de las herramientas necesarias: pvesh (Proxmox VE API tool) y python3. Si no se encuentran estas herramientas, el script sale con un mensaje de error apropiado.<\/li>\n<\/ul>\n<h4>3. Verificar privilegios de root:<\/h4>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:1440,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"2\">El script para visualizar la informaci\u00f3n de Proxmox VM comprueba si se est\u00e1 ejecutando con privilegios de root. Si no, sale con un mensaje de error.<\/li>\n<\/ul>\n<h4>4. Obtener informaci\u00f3n de m\u00e1quinas virtuales:<\/h4>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:1440,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"5\" data-aria-level=\"2\">Usando pvesh, el script recupera informaci\u00f3n sobre las m\u00e1quinas virtuales QEMU y los contenedores LXC del host Proxmox.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:1440,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"6\" data-aria-level=\"2\">Esta informaci\u00f3n se procesa utilizando Python para generar una tabla HTML con detalles como el estado, ID, nombre, memoria, CPUs y tama\u00f1os de disco combinados.<\/li>\n<\/ul>\n<h4>5. Generar una tabla HTML:<\/h4>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:1440,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"7\" data-aria-level=\"2\">El script Python incrustado dentro del script bash formatea los datos JSON recuperados en una tabla HTML. Esta tabla tiene un estilo diferente para resaltar las m\u00e1quinas virtuales en ejecuci\u00f3n y detenidas.<\/li>\n<\/ul>\n<h4>6. Guardar la tabla en un campo personalizado:<\/h4>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:1440,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"8\" data-aria-level=\"2\">La tabla HTML generada se guarda en el campo personalizado especificado utilizando la herramienta CLI de NinjaOne RMM.<\/li>\n<\/ul>\n<h2>Posibles casos de uso<\/h2>\n<p>Imagina un MSP que gestiona m\u00faltiples entornos Proxmox para varios clientes. Comprobar manualmente el estado y la asignaci\u00f3n de recursos de cada m\u00e1quina virtual en distintos hosts puede resultar engorroso. Al desplegar este script para visualizar la informaci\u00f3n de Proxmox VM, el MSP puede automatizar la recopilaci\u00f3n de estos datos y tenerlos disponibles en un campo personalizado, accesible a trav\u00e9s de su interfaz de gesti\u00f3n. Esto no s\u00f3lo aumenta la <a href=\"https:\/\/www.ninjaone.com\/efficiency\/\" target=\"_blank\" rel=\"noopener\">eficacia<\/a>, sino que tambi\u00e9n garantiza que puedan responder r\u00e1pidamente a cualquier problema que surja.<\/p>\n<h2>Comparaciones<\/h2>\n<p>Otros m\u00e9todos para recopilar informaci\u00f3n sobre m\u00e1quinas virtuales pueden implicar la ejecuci\u00f3n manual de scripts y la compilaci\u00f3n de resultados, lo que lleva mucho tiempo y es propenso a errores. Herramientas como la interfaz web de Proxmox proporcionan la informaci\u00f3n necesaria, pero requieren una navegaci\u00f3n y comprobaci\u00f3n manuales. En cambio, este script para visualizar la informaci\u00f3n de Proxmox VM <a href=\"https:\/\/www.ninjaone.com\/blog\/everything-you-need-to-know-about-it-automation\/\" target=\"_blank\" rel=\"noopener\">automatiza<\/a> todo el proceso, garantizando la coherencia y ahorrando un tiempo valioso.<\/p>\n<h2>FAQ<\/h2>\n<p><strong>P: \u00bfQu\u00e9 pasa si el script para visualizar la informaci\u00f3n de Proxmox VM no encuentra pvesh o python3?<\/strong><br \/>\nR: El script comprueba estas dependencias al inicio y sale con un mensaje de error claro si no se encuentran, guiando al usuario para que instale las herramientas que faltan.<\/p>\n<p><strong>P: \u00bfSe puede ejecutar el script sin privilegios de root?<\/strong><br \/>\nR: No, el script para visualizar la informaci\u00f3n de Proxmox VM debe ejecutarse como root para acceder a la informaci\u00f3n necesaria del sistema.<\/p>\n<p><strong>P: \u00bfQu\u00e9 ocurre si no se indica el nombre del campo personalizado?<\/strong><br \/>\nR: El script para visualizar la informaci\u00f3n de Proxmox VM requiere el nombre del campo personalizado como par\u00e1metro. Si no se proporciona, el script saldr\u00e1 con un mensaje de error.<\/p>\n<h2>Implicaciones<\/h2>\n<p>La automatizaci\u00f3n de la recopilaci\u00f3n de informaci\u00f3n sobre m\u00e1quinas virtuales no s\u00f3lo mejora la eficacia operativa, sino que tambi\u00e9n refuerza la seguridad inform\u00e1tica. Las comprobaciones peri\u00f3dicas y automatizadas garantizan que todas las m\u00e1quinas virtuales se contabilizan y funcionan seg\u00fan lo previsto, lo que <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-network-downtime\/\" target=\"_blank\" rel=\"noopener\">reduce el riesgo de paradas inadvertidas<\/a> o asignaciones err\u00f3neas de recursos.<\/p>\n<h2>Recomendaciones<\/h2>\n<p>Cuando utilices este script, aseg\u00farate de que:<\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">El script se ejecuta peri\u00f3dicamente para mantener actualizada la informaci\u00f3n de la m\u00e1quina virtual.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\">Se han establecido los permisos adecuados para que el script se ejecute como root.<\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"2\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\">Las dependencias (pvesh, python3, NinjaOne CLI) est\u00e1n instaladas y configuradas correctamente.<\/li>\n<\/ul>\n<h2>Reflexiones finales<\/h2>\n<p>Este script es una herramienta valiosa para los profesionales de TI que gestionan entornos Proxmox, ya que agiliza el proceso de recopilaci\u00f3n y visualizaci\u00f3n de informaci\u00f3n de m\u00e1quinas virtuales. Para aquellos que utilizan <a href=\"https:\/\/www.ninjaone.com\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a>, este script se integra a\u00fan m\u00e1s en su flujo de trabajo, facilitando el mantenimiento de una visi\u00f3n clara y actualizada de su infraestructura virtual. Al automatizar las tareas rutinarias, los profesionales de TI pueden centrarse en actividades m\u00e1s estrat\u00e9gicas, mejorando la productividad general y la fiabilidad del sistema.<\/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-353776","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\/353776","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=353776"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media?parent=353776"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/operating_system?post=353776"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/use_cases?post=353776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}