{"id":353633,"date":"2024-08-02T08:25:53","date_gmt":"2024-08-02T08:25:53","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/verifier-etat-du-stockage-des-noeuds-proxmox\/"},"modified":"2024-10-13T19:05:24","modified_gmt":"2024-10-13T19:05:24","slug":"verifier-etat-du-stockage-des-noeuds-proxmox","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/verifier-etat-du-stockage-des-noeuds-proxmox\/","title":{"rendered":"Guide de script Linux : Comment v\u00e9rifier l&rsquo;\u00e9tat du stockage des noeuds Proxmox ?"},"content":{"rendered":"<p>La gestion efficace du stockage est un \u00e9l\u00e9ment crucial pour conserver une infrastructure informatique performante et efficace. Pour les professionnels de l&rsquo;informatique et les <a href=\"https:\/\/www.ninjaone.com\/fr\/quest-ce-quun-msp\" target=\"_blank\" rel=\"noopener\">fournisseurs de services g\u00e9r\u00e9s (MSP)<\/a>, disposer d&rsquo;outils fournissant des informations d\u00e9taill\u00e9es sur l&rsquo;\u00e9tat du stockage peut consid\u00e9rablement am\u00e9liorer leur efficacit\u00e9 op\u00e9rationnelle.<\/p>\n<p>L&rsquo;un de ces outils est le script bash con\u00e7u pour <strong>r\u00e9cup\u00e9rer et afficher les d\u00e9tails du stockage des noeuds Proxmox<\/strong>. Cet article explore les fonctionnalit\u00e9s du script, son importance et son application dans divers sc\u00e9narios.<\/p>\n<h2>Contexte<\/h2>\n<p>Dans un environnement virtualis\u00e9 comme Proxmox, la v\u00e9rification de l&rsquo;\u00e9tat du stockage des n\u0153uds est essentielle pour l&rsquo;optimisation des performances, le d\u00e9pannage et la planification de la capacit\u00e9. Proxmox VE (Virtual Environment) est une solution open-source de gestion de la virtualisation des serveurs qui fournit une plateforme puissante pour g\u00e9rer les VM, les conteneurs, le stockage et le r\u00e9seau.<\/p>\n<p>Le script fourni exploite l&rsquo;API de Proxmox et l&rsquo;outil d&rsquo;interface de ligne de commande (CLI) de NinjaOne pour recueillir et pr\u00e9senter des informations de stockage d\u00e9taill\u00e9es, qui peuvent ensuite \u00eatre enregistr\u00e9es dans des champs personnalis\u00e9s en vue d&rsquo;une analyse ou d&rsquo;une documentation plus pouss\u00e9e. Ce script est particuli\u00e8rement utile pour les entreprises MSP qui doivent surveiller plusieurs environnements clients et garantir des performances ainsi qu&rsquo;une disponibilit\u00e9 optimales.<\/p>\n<h2>Le script PowerShell\u00a0:<\/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>Description d\u00e9taill\u00e9e<\/h2>\n<p>Nous allons nous plonger dans le script pour en comprendre le fonctionnement \u00e9tape par \u00e9tape.<\/p>\n<ol>\n<li><strong>Initialisation et analyse des arguments<\/strong> Le script commence par analyser les arguments de la ligne de commande afin de d\u00e9terminer les noms des champs personnalis\u00e9s dans lesquels les donn\u00e9es de stockage seront enregistr\u00e9es. Il accepte deux arguments : un pour un champ personnalis\u00e9 multiligne et un autre pour un champ personnalis\u00e9 WYSIWYG. Ces champs sont utilis\u00e9s pour stocker des informations format\u00e9es afin de faciliter la lecture et l&rsquo;analyse.<\/li>\n<li><strong>Validation des champs personnalis\u00e9s<\/strong> Le script v\u00e9rifie si les champs personnalis\u00e9s sont d\u00e9finis par des variables d&rsquo;environnement ou des arguments de ligne de commande. Il s&rsquo;assure que les deux champs ne sont pas identiques afin d&rsquo;\u00e9viter les conflits.<\/li>\n<li><strong>V\u00e9rification de la disponibilit\u00e9 de l&rsquo;outil et des autorisations<\/strong> Le script v\u00e9rifie la disponibilit\u00e9 de la commande pvesh, qui est utilis\u00e9e pour interagir avec l&rsquo;API Proxmox, et s&rsquo;assure qu&rsquo;elle est ex\u00e9cut\u00e9e avec le privil\u00e8ge d&rsquo;administrateur.<\/li>\n<li><strong>Validation de l&rsquo;interface CLI de NinjaOne<\/strong> Le script v\u00e9rifie l&rsquo;existence de l&rsquo;outil NinjaOne CLI, qui est n\u00e9cessaire pour mettre \u00e0 jour les champs personnalis\u00e9s.<\/li>\n<li><strong>R\u00e9cup\u00e9ration du nom du n\u0153ud<\/strong> Le script d\u00e9finit une fonction permettant de r\u00e9cup\u00e9rer le nom du n\u0153ud Proxmox, qui est n\u00e9cessaire pour demander des informations sp\u00e9cifiques sur le stockage.<\/li>\n<li><strong>R\u00e9cup\u00e9ration des informations de stockage et formatage<\/strong> Le script r\u00e9cup\u00e8re la liste de stockage et passe en revue chaque \u00e9l\u00e9ment de stockage pour recueillir des informations d\u00e9taill\u00e9es sur son \u00e9tat, notamment l&rsquo;espace libre et l&rsquo;espace total. Ces informations sont format\u00e9es pour les champs personnalis\u00e9s multilignes et WYSIWYG.<\/li>\n<li><strong>Cr\u00e9ation d&rsquo;un tableau HTML<\/strong> Le script construit un tableau HTML pour le champ personnalis\u00e9 WYSIWYG, et pr\u00e9sente l&rsquo;\u00e9tat du stockage sous forme de tableau.<\/li>\n<li><strong>Enregistrement des r\u00e9sultats<\/strong> Enfin, le script enregistre les informations de stockage format\u00e9es dans les champs personnalis\u00e9s sp\u00e9cifi\u00e9s \u00e0 l&rsquo;aide de l&rsquo;outil CLI de NinjaOne.<\/li>\n<\/ol>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p>Imaginez une entreprise MSP qui g\u00e8re plusieurs environnements clients avec Proxmox. Elle doit v\u00e9rifier r\u00e9guli\u00e8rement l&rsquo;\u00e9tat du stockage pour s&rsquo;assurer qu&rsquo;il y a suffisamment d&rsquo;espace libre pour les sauvegardes et le fonctionnement des machines virtuelles. Gr\u00e2ce \u00e0 ce script, l&rsquo;entreprise MSP peut automatiser la r\u00e9cup\u00e9ration des informations de stockage et les enregistrer dans des champs personnalis\u00e9s pour chaque client, ce qui permet un acc\u00e8s rapide aux donn\u00e9es importantes sans aucune intervention manuelle. Cette automatisation <a href=\"https:\/\/www.ninjaone.com\/blog\/how-human-error-relates-to-cybersecurity-risks\/\" target=\"_blank\" rel=\"noopener\">r\u00e9duit le risque d&rsquo;erreur humaine<\/a> et garantit des mises \u00e0 jour en temps voulu sur l&rsquo;\u00e9tat du stockage.<\/p>\n<h2>Comparaisons<\/h2>\n<p>Bien que ce script offre une solution adapt\u00e9e aux environnements Proxmox int\u00e9gr\u00e9s \u00e0 NinjaOne, d&rsquo;autres m\u00e9thodes pour r\u00e9cup\u00e9rer les informations de stockage incluent l&rsquo;utilisation d&rsquo;outils Proxmox natifs tels que l&rsquo;interface web ou des scripts personnalis\u00e9s sans int\u00e9gration de NinjaOne.<\/p>\n<p>Toutefois, ces m\u00e9thodes peuvent ne pas offrir les fonctionnalit\u00e9s <a href=\"https:\/\/www.ninjaone.com\/fr\/blog\/tout-ce-que-vous-devez-savoir-sur-lautomatisation\/\" target=\"_blank\" rel=\"noopener\">d&rsquo;automatisation<\/a> et de gestion centralis\u00e9e fournies par la combinaison de ce script et de NinjaOne, ce qui les rend moins efficaces pour les MSP qui g\u00e8rent plusieurs environnements.<\/p>\n<h2>FAQ<\/h2>\n<h3><strong>Qu&rsquo;est-ce que Proxmox VE ?<\/strong><\/h3>\n<p>Proxmox VE est une plateforme open-source de gestion de la virtualisation des serveurs qui permet de g\u00e9rer les VM, les conteneurs, le stockage et le r\u00e9seau.<\/p>\n<h3><strong>Qu&rsquo;est-ce que NinjaOne ?<\/strong><\/h3>\n<p>NinjaOne est un outil de <a href=\"https:\/\/www.ninjaone.com\/fr\/rmm\">surveillance et de gestion \u00e0 distance (RMM)<\/a> qui aide les MSP et les professionnels de l&rsquo;informatique \u00e0 g\u00e9rer les environnements de leurs clients \u00e0 partir d&rsquo;une plateforme centralis\u00e9e.<\/p>\n<h3><strong>Ai-je besoin d&rsquo;un acc\u00e8s root pour ex\u00e9cuter ce script ?<\/strong><\/h3>\n<p>Oui, l&rsquo;acc\u00e8s root est n\u00e9cessaire pour r\u00e9cup\u00e9rer les informations de stockage des n\u0153uds Proxmox.<\/p>\n<h3><strong>Ce script peut-il \u00eatre utilis\u00e9 sans NinjaOne ?<\/strong><\/h3>\n<p>Le script est con\u00e7u pour s&rsquo;int\u00e9grer \u00e0 NinjaOne afin de stocker les donn\u00e9es des champs personnalis\u00e9s. Sans NinjaOne, il peut toujours r\u00e9cup\u00e9rer et afficher les informations de stockage, mais ne les enregistre pas dans les champs personnalis\u00e9s.<\/p>\n<h2>Implications<\/h2>\n<p>L&rsquo;automatisation de la r\u00e9cup\u00e9ration et de la documentation de l&rsquo;\u00e9tat du stockage am\u00e9liore <a href=\"https:\/\/www.ninjaone.com\/fr\/efficacite\" target=\"_blank\" rel=\"noopener\">l&rsquo;efficacit\u00e9<\/a> op\u00e9rationnelle et r\u00e9duit le risque que des probl\u00e8mes li\u00e9s au stockage passent inaper\u00e7us. Cette approche proactive de la gestion du stockage permet d&rsquo;\u00e9viter les <a href=\"https:\/\/www.ninjaone.com\/it-hub\/it-service-management\/what-is-network-downtime\/\" target=\"_blank\" rel=\"noopener\">temps d&rsquo;arr\u00eat<\/a> et de garantir que l&rsquo;infrastructure informatique reste saine et performante.<\/p>\n<h2>Recommandations<\/h2>\n<ul>\n<li>Assurez-vous que l&rsquo;outil Proxmox API (pvesh) et l&rsquo;outil NinjaOne CLI sont correctement install\u00e9s et configur\u00e9s avant d&rsquo;ex\u00e9cuter le script.<\/li>\n<li>Examinez et mettez \u00e0 jour r\u00e9guli\u00e8rement les champs personnalis\u00e9s pour que les informations de stockage soient \u00e0 jour et exactes.<\/li>\n<li>Testez le script dans un environnement de non-production pour vous assurer qu&rsquo;il r\u00e9pond \u00e0 vos besoins et qu&rsquo;il s&rsquo;int\u00e8gre parfaitement \u00e0 vos processus existants.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>L&rsquo;utilisation de scripts d&rsquo;automatisation comme celui-ci peut consid\u00e9rablement am\u00e9liorer l&rsquo;efficacit\u00e9 des op\u00e9rations informatiques, en particulier pour les MSP qui g\u00e8rent plusieurs environnements clients. <a href=\"https:\/\/www.ninjaone.com\/fr\/\" target=\"_blank\" rel=\"noopener\">NinjaOne<\/a>, avec ses puissantes capacit\u00e9s de RMM, fournit une excellente plateforme pour int\u00e9grer de tels scripts, offrant une approche centralis\u00e9e et optimis\u00e9e de la gestion informatique. En utilisant ces outils, les professionnels de l&rsquo;informatique peuvent s&rsquo;assurer que leur infrastructure fonctionne toujours de mani\u00e8re optimale et \u00eatre mieux pr\u00e9par\u00e9s \u00e0 relever les d\u00e9fis li\u00e9s au stockage.<\/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":[4281],"class_list":["post-353633","script_hub","type-script_hub","status-publish","hentry","script_hub_category-linux"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub\/353633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/comments?post=353633"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=353633"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=353633"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=353633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}