<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Аспро: ЛайтШоп [тема: [ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.]</title>
		<link>http://proxmox.su</link>
		<description>Новое в теме [ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее. форума Proxmox Виртуальная Среда на сайте Аспро: ЛайтШоп [proxmox.su]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 03 Apr 2026 23:56:30 +0300</pubDate>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328672/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Только что попробовал это на своей инфраструктуре. У меня тоже версия 8.1.4, и заработало. Этот скрипт не использует секрет токена API. Вам нужно ввести пароль пользователя в переменную apip. Будет первый вызов API для получения тикета и куки, которые затем будут использоваться для входа и генерации действия. apiu — это user@realm, а apip — пароль этого пользователя. (Тот же пароль, что и для GUI). Если ваш пользователь основан на LDAP-каталоге, например, ваш логин должен выглядеть как user@domain.loc. <br />
			<i>14.03.2024 14:30:00, Veeh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328672/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328672/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Thu, 14 Mar 2024 14:30:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328671/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Это же токен для однократного использования. Но в твоем скрипте, похоже, ты что-то закрасил и заменил, я не знаю. В принципе, тебе нужен API-пользователь с его токеном при создании. Я этот скрипт не использую, так что не пытай меня! <br />
			<i>14.03.2024 06:57:00, gfngfn256.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328671/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328671/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Thu, 14 Mar 2024 06:57:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328670/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Так, я в 8.1.4. Скопировал твой скрипт на rpi и поправил переменные. Создал пользователя, добавил токен API. У нового пользователя права администратора. Когда запускаю скрипт и смотрю syslog, вижу "authentication failure; rhost=::ffff:10.20.20.166 user=AGVuser@pve msg=invalid credentials". Это пароль – это реальный пароль пользователя или это одноразовый токен, который выдается при создании токена? Просто хочу, чтобы скрипт запускал VM при запуске.<br /><br />Код:<br />#!/bin/bash<br />##################################<br />### API AUTOMATION<br /># для сообщества proxmox<br /># By veeh, enjoy<br /><br />#Информация о хосте<br />pve="10.20.20.20"<br />node="pvetemp"<br />port=":8006"<br />vmid="301"<br /><br />#Информация об API<br />apiu="VMuser@pve"<br />apip="USERSloginPASSWORD"<br />url_base="https://$pve$port/api2/json"<br /># сюда вставляешь что хочешь делать<br /># <noindex><a href="https://pve.proxmox.com/pve-docs/api-viewer/" target="_blank" rel="nofollow" >https://pve.proxmox.com/pve-docs/api-viewer/</a></noindex><br />url_end="nodes/$node/qemu/$vmid/status/start"<br />urlqr="$url_base/$url_end"<br />urltk="$url_base/access/ticket"<br /><br />ticket=`curl --insecure --data "username=$apiu&password=$apip" $urltk`<br /><br /># Извлекаем cookie и токен из данных ticket<br />cookieid=`echo $ticket | tr -t '"' '\n' | grep "PVE:$apiu"`<br />cookie="PVEAuthCookie=$cookieid"<br />ticketid=`echo $cookie | awk -F ':' '{ print $3 }'`<br />tokenid=`echo $ticket | tr -t '"' '\n' | grep $ticketid | grep -v PVE`<br />token="CSRFPreventionToken:$tokenid"<br /><br />#запрос API proxmox<br />curl --insecure --cookie $cookie --header $token -X POST "$urlqr" <br />
			<i>13.03.2024 23:24:00, CPBPILOT.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328670/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328670/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Wed, 13 Mar 2024 23:24:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328669/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Токены API не требуют двухфакторную аутентификацию (TFA). Их задача — предоставить ограниченный доступ к API, который можно использовать в скриптах и других приложениях без необходимости многократно запрашивать билет. TFA в скриптах не имеет особого смысла, ведь это будет еще один секрет, лежащий рядом с токеном. Поскольку токен API выступает как обходной путь TFA, настоятельно рекомендуется реально ограничивать его область доступа только тем, что нужно скрипту. <br />
			<i>21.12.2023 10:53:00, Folke.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328669/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328669/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Thu, 21 Dec 2023 10:53:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328668/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Я разобрался в другой ветке с помощью Folke (сотрудника Proxmox): # обратите внимание на -r в команде jq, чтобы результат не заключался в кавычки и не экранировался<br />curl -f -s -S -k --data-urlencode "username=root@pam" --data-urlencode "password=$PASSWORD" "https://cl1:8006/api2/json/access/ticket"|jq -r '.data.ticket' &gt; cookie<br /><br />curl --silent --insecure --data-urlencode "username=root@pam" --data-urlencode "password=totp:$(oathtool -b --totp "$TOTP_SECRET")" --data-urlencode "tfa-challenge=$(&lt;cookie)" <noindex><a href="https://cl1:8006/api2/json/access/ticket" target="_blank" rel="nofollow" >https://cl1:8006/api2/json/access/ticket</a></noindex>. С этими двумя строками я сумел получить валидный билет, пройдя двухфакторную аутентификацию... Надеюсь, это поможет и другим людям...... <br />
			<i>21.12.2023 10:31:00, Domenico.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328668/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328668/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Thu, 21 Dec 2023 10:31:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328667/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Без понятия, извини, Доменико. Я ничего не настраивал с TFA, так что не знаю. Может, кто-то другой сможет тебе помочь. Или если ты используешь отдельные права для API-токена, возможно, получится обойти TFA. Я просто так думаю. <br />
			<i>20.12.2023 23:57:00, Veeh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328667/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328667/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Wed, 20 Dec 2023 23:57:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328666/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Привет, а если у apiuser включена двухфакторная аутентификация? Как мне изменить curl? <br />
			<i>20.12.2023 08:46:00, Domenico.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328666/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328666/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Wed, 20 Dec 2023 08:46:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328665/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Я не очень хорошо знаю API, но если проверить просмотрщик API <noindex><a href="https://pve.proxmox.com/pve-docs/api-viewer/" target="_blank" rel="nofollow" >https://pve.proxmox.com/pve-docs/api-viewer/</a></noindex>, нужно указать имя ноды. Не думаю, что можно использовать подстановочный знак. Возможно, есть способ получить список ВМ для каждой ноды через API. Но это всего лишь догадка. А затем из списка можно запустить цикл, чтобы проверить, есть ли там искомый vmid, или переходить к следующей ноде. Поскольку всё это можно сделать через SSH. Что-то вроде этого:<br /><br />Код:<br />#!/bin/bash<br />VMID=$1<br />hypvsr="node1 node2 node3 node4"<br /><br />for i in $hypvsr; do<br /> &nbsp; &nbsp;j=$(ssh $i "sudo qm list | grep $VMID")<br /><br /> &nbsp; &nbsp;if [ ! -z "$j" ]; then<br /> &nbsp; &nbsp; &nbsp; &nbsp;node=$i<br /> &nbsp; &nbsp; &nbsp; &nbsp;break<br /> &nbsp; &nbsp;fi<br />done<br /><br />Остальная часть скрипта. Но тебе нужен пользователь с sudo и без запроса пароля. И, что самое главное, это сводит на нет смысл использования API, потому что оттуда можно запустить что угодно. <br />
			<i>15.12.2022 15:48:00, Veeh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328665/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328665/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Thu, 15 Dec 2022 15:48:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328664/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Привет! Да, получилось, спасибо большое! Подскажи, возможно ли сделать так, чтобы можно было перезапускать и прочее, не привязываясь к конкретному узлу? У меня огромное количество серверов, и машина часто переезжает, из-за чего приходится вручную редактировать твой скрипт каждый раз, когда машина с vmid 100 переезжает с node1 на node2/3/4… в общем, спасибо за потраченное время! <br />
			<i>15.12.2022 07:50:00, Kosh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328664/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328664/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Thu, 15 Dec 2022 07:50:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328663/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Ты оказался прав!! Там была ошибка в bash-скрипте. В переменной cookieid. Я забыл заменить поле user на $apiu. Там было api@pve. Ну, конечно, у меня всё работало, потому что это пользователь, под которым я зашёл... Я исправил. Попробуй ещё раз. <br />
			<i>14.12.2022 20:32:00, Veeh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328663/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328663/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Wed, 14 Dec 2022 20:32:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328662/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Работает у меня отлично. Посмотри в свой syslog. Там должны быть записи о попытках использования API. В моем случае пользователь — 'api@pve'. 14 дек 13:00:13 qxmx pvedaemon[2121831]: &lt;root@pam&gt; успешная авторизация для пользователя 'api@pve'. 14 дек 13:00:13 qxmx pvedaemon[2121831]: &lt;api@pve&gt; начинаю задачу UPID:qxmx:0011B691:05F3A38C:639A1D3D:qmstart:107:api@pve. Если ты видишь успешную авторизацию, но не видишь действия, я бы посоветовал проверить права пользователя API. Или, возможно, есть опечатка в вызове API. Помню, у меня были проблемы с правами пользователя API, когда я настраивал это. По умолчанию роль, которую ты присваиваешь пользователю, будет той, которая нужна для API. Но можно также иметь отдельные права. <br />
			<i>14.12.2022 20:09:00, Veeh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328662/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328662/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Wed, 14 Dec 2022 20:09:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328661/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Я наконец-то смог заставить это работать. Немного подправил под формат, указанный в этом руководстве по созданию тонкого клиента. Также добавил это в .bash_profile на pi, чтобы при запуске pi скрипт проверял, работает ли vm, если нет – запускал или возобновлял vm, а затем подключался к виртуальному рабочему столу. Получается неплохой тонкий клиент, и это позволяет освободить ресурсы на сервере, если он не используется, и перезапускать vm прямо с pi. &nbsp;В .bash_profile выглядит так:<br />```bash<br />[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && (sh /home/pi/vmstart.sh && startx --)<br />```<br />Я сохранил этот скрипт как vmstart.sh в домашней директории, и он выглядит так:<br />```bash<br />#!/bin/bash<br />echo "$PROXY is reachable!"<br /># Set auth options<br />PASSWORD='Users_login_password'<br />USERNAME='VMuser@pve'<br /># Set VM ID<br />VMID="VMID"<br /># Set Node<br /># This must either be a DNS address or name of the node in the cluster<br />NODE="HOSTID"<br /># Proxy equals node if node is a DNS address<br /># Otherwise, you need to set the IP address of the node here<br />PROXY="HOST_FQDN_OR_IP"<br />NODE="${NODE%%\.*}"<br /># Function to check if the IP is reachable<br />check_ip() {<br /> &nbsp; &nbsp;ping -c 1 $1 &gt; /dev/null 2&gt;&1<br />}<br />echo "Waiting for $PROXY to become reachable..."<br /># Loop until the IP is reachable<br />while ! check_ip $PROXY; do<br /> &nbsp; &nbsp;sleep 1<br />done<br /># gets auth thicket form the proxmox server<br />ticket="$(curl -f -s -S -k --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "https://$PROXY:8006/api2/json/access/ticket")"<br />echo "AUTH OK"<br /># Grab cookie and token from the ticket data<br />cookieid=`echo $ticket | tr -t '"' '\n' | grep "PVE:$USERNAME"`<br />cookie="PVEAuthCookie=$cookieid"<br />ticketid=`echo $cookie | awk -F ':' '{ print $3 }'`<br />tokenid=`echo $ticket | tr -t '"' '\n' | grep $ticketid | grep -v PVE`<br />token="CSRFPreventionToken:$tokenid"<br />#proxmox api query<br />status='Unknown'<br />while [ $status != "qmpstatus:running" ]; do<br /> &nbsp; &nbsp; &nbsp; &nbsp;statusreturn=$(curl --insecure --cookie $cookie --header $token -X GET &nbsp;https://$PROXY:8006/api2/json/nodes/$NODE/qemu/$VMID/status/current)<br /> &nbsp; &nbsp; &nbsp; &nbsp;#echo $statusreturn<br /> &nbsp; &nbsp; &nbsp; &nbsp;status=`echo $statusreturn | tr -t ',' '\n' | grep 'qmpstatus'`<br /> &nbsp; &nbsp; &nbsp; &nbsp;#echo $status<br /> &nbsp; &nbsp; &nbsp; &nbsp;status=`echo $status | tr -d '"' `<br /> &nbsp; &nbsp; &nbsp; &nbsp;echo $status<br /> &nbsp; &nbsp; &nbsp; &nbsp;if [ $status = "qmpstatus:running" ]; then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo "VM running"<br /> &nbsp; &nbsp; &nbsp; &nbsp;elif [ $status = "qmpstatus:stopped" ]; then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo "Starting VM"<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;curl &nbsp;--insecure --cookie $cookie --header $token -X POST https://$PROXY:8006/api2/json/nodes/$NODE/qemu/$VMID/status/start<br /> &nbsp; &nbsp; &nbsp; &nbsp;elif [ $status = "qmpstatus:suspended" ]; then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo " Restarting VM"<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;curl &nbsp;--insecure --cookie $cookie --header $token -X POST https://$PROXY:8006/api2/json/nodes/$NODE/qemu/$VMID/status/stop<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sleep 5<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;curl &nbsp;--insecure --cookie $cookie --header $token -X POST https://$PROXY:8006/api2/json/nodes/$NODE/qemu/$VMID/status/start<br /> &nbsp; &nbsp; &nbsp; &nbsp;elif [ $status = "qmpstatus:paused" ]; then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo " Resuming VM"<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;curl &nbsp;--insecure --cookie $cookie --header $token -X POST https://$PROXY:8006/api2/json/nodes/$NODE/qemu/$VMID/status/resume<br /> &nbsp; &nbsp; &nbsp; &nbsp;else<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo "Unknown status:" $status<br /> &nbsp; &nbsp; &nbsp; &nbsp;fi<br />done<br />```<br />Один момент: мне не пришлось создавать API-токен. Нужно было только создать пользователя и предоставить ему разрешения PVEVMuser. <br />
			<i>14.03.2024 18:58:00, CPBPILOT.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328661/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328661/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Thu, 14 Mar 2024 18:58:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328660/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Спасибо за уточнение. К сожалению, пока что включить VM через ваш скрипт невозможно, поэтому VM запускается командой pvesh create /nodes/cloud-p013/qemu/137/status/start <img class="lazyload "  src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/upload/forum/proxmox/44134-5f555e769f773a52d325b4435a30c874.jpg" alt="Пользователь добавил изображение" border="0" /> PVE 7.2 <br />
			<i>14.12.2022 10:13:00, Kosh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328660/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328660/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Wed, 14 Dec 2022 10:13:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328659/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Нет, если посмотреть на скрипт ниже, $url_base = "https://$pve$port/api2/json" [...] $url_end = "/nodes/$node/qemu/$vmid/status/start". $node используется в API-вызове, поэтому это просто имя твоего гипервизора. $pve используется в URL, и тебе нужен FQDN или IP гипервизора. Может быть, что-то вроде этого: node=NODENAME pve=$node.yourdomain.loc Но убедись, что node определён перед pve в этом случае. <br />
			<i>13.12.2022 17:36:00, Veeh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328659/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328659/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Tue, 13 Dec 2022 17:36:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328658/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Я думал, это стоит здесь перечислить? - pve=" HOST_FQDN_OR_IP " <br />
			<i>13.12.2022 15:43:00, Kosh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328658/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328658/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Tue, 13 Dec 2022 15:43:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328657/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Привет! Это имя гипервизора Proxmox. На скриншоте, приложенном к сообщению, это будет pxmx или qxmx. <br />
			<i>13.12.2022 15:34:00, Veeh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328657/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328657/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Tue, 13 Dec 2022 15:34:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328656/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Привет node="HOSTID", что здесь нужно указать? <br />
			<i>13.12.2022 15:13:00, Kosh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328656/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328656/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Tue, 13 Dec 2022 15:13:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328655/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Привет! Этот скрипт использует API систему, доступную в Proxmox 6.7, если я правильно помню (в версии 7 точно есть). Вам нужно предоставить информацию о хосте и учетные данные API. pve="HOST_FQDN_OR_IP" node="HOSTID" port=":8006" vmid="VMID" apiu="user@realm" apip="USER_PASSWORD".<br /><br />Сначала нужно создать учетную запись для использования API системы. Datacenter &gt; Permissions &gt; API Tokens, затем добавьте своего пользователя. Это ваши учетные данные API. <noindex><a href="https://pve.proxmox.com/wiki/Proxmox_VE_API" target="_blank" rel="nofollow" >https://pve.proxmox.com/wiki/Proxmox_VE_API</a></noindex><br /><br />Скрипт создает тикет для выполнения действия. Действие определяется переменной $url_end url_end="nodes/$node/qemu/$vmid/status/stop" (в данном случае это действие остановит ВМ $vmid).<br /><br />Если у вашего API пользователя есть необходимые разрешения, вы можете выполнять всё, что угодно, если это указано здесь: <noindex><a href="https://pve.proxmox.com/pve-docs/api-viewer/index.html" target="_blank" rel="nofollow" >https://pve.proxmox.com/pve-docs/api-viewer/index.html</a></noindex><br /><br />Еще один пример: nodes/{node}/status/reboot (это перезагрузит ваш хост).<br /><br />Базовый URL для вашего API всегда одинаковый: <noindex><a href="https://HOSTIP:8006/api2/json" target="_blank" rel="nofollow" >https://HOSTIP:8006/api2/json</a></noindex>. Важно то, что идет после него — это говорит системе, что нужно делать.<br /><br />Последняя часть запроса в тикете содержит информацию, необходимую для запуска API-действия.<br /><br />В итоге, вот как это работает: ваш API пользователь позволяет получить тикет, в котором содержится вся необходимая информация для запуска запрошенного API-действия, при условии, что у пользователя есть нужные разрешения.<br /><br />Вы можете запускать это с любого устройства. Я использую это на своем ноутбуке, чтобы включать/перезагружать/выключать ВМ на своей рабочей станции. Но вы также можете запустить это со своего телефона. С приложением, отправляющим HTTP POST-запросы. Это немного сложнее, потому что нужен токен. Но это работает отлично. <br />
			<i>10.02.2022 00:47:00, Veeh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328655/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328655/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Thu, 10 Feb 2022 00:47:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328654/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Привет, я не эксперт, так что, пожалуйста, можешь немного подробнее объяснить мне про этот скрипт? Bash-код должен запускаться с устройства, которое будет отправлять команду пробуждения на VM? Какие данные мне нужно изменить в твоём bash? Спасибо. <br />
			<i>09.02.2022 19:10:00, Norbertt.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328654/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328654/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Wed, 09 Feb 2022 19:10:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
		<item>
			<title>[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</title>
			<description><![CDATA[<b><a href="http://proxmox.su/forum/messages/forum63/message328653/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.">[ТУТОРИАЛ] Автоматизация API, включение/выключение VM и прочее.</a></b> <i>Proxmox Виртуальная Среда</i> в форуме <a href="http://proxmox.su/forum/forum63/">Proxmox Виртуальная Среда</a>. <br />
			Привет, сообщество Proxmox! Я последние несколько дней работал над этим, и, думаю, это может пригодиться некоторым из вас, поэтому решил поделиться. У меня дома есть ВМ, которые не работают постоянно. Раньше я использовал WOL + python-скрипт для включения ВМ. После обновления до proxmox7 это больше не работало, и вместо установки python2 библиотеки я решил использовать API. Вот что получилось. Предлагаю два следующих скрипта (PowerShell и Bash), которые отправляют запрос для получения тикета, а затем используют данные из этого тикета, чтобы выполнять любые действия, которые вы укажете в конечной точке! Приятно использовать.<br /><br />PowerShell:<br /><br />```<br /># API AUTOMATION<br /># for the proxmox community<br /># By veeh, enjoy<br />#<br /># Требование: не работает с Powershell5.1, я делал это с powershell7.<br /><br /># Информация о хосте<br />$pve = "HOST_FQDN_OR_IP"<br />$node = "HOSTID"<br />$port = ":8006"<br />$vmid = "VMID"<br /><br /># Информация об API<br />$apiu = "user@realm"<br />$apip = "USER_PASSWORD"<br />$url_base = "https://$pve$port/api2/json"<br /># Здесь нужно указать, что именно вы хотите сделать<br /># <noindex><a href="https://pve.proxmox.com/pve-docs/api-viewer/" target="_blank" rel="nofollow" >https://pve.proxmox.com/pve-docs/api-viewer/</a></noindex><br />$url_end = "/nodes/$node/qemu/$vmid/status/start"<br />$urlqr = $url_base + $url_end<br />$urltk = "$url_base/access/ticket"<br /><br /># Создание тикета<br />$ticket = curl --insecure --data "username=$apiu&password=$apip" $urltk<br /><br /># Разбор данных тикета для извлечения cookie и токена<br />$Array = $ticket.Split('"')<br /># Извлечение cookie<br />$linecookie = $Array | select-string ticket<br />$linecookienb = $linecookie.LineNumber + 1<br />$cookie = $Array | select -Index $linecookienb<br /># Извлечение токена<br />$linetoken = $Array | select-string CSRFP<br />$linetokennb = $linetoken.LineNumber + 1<br />$token = $Array | select -Index $linetokennb<br /><br /># Запрос к API Proxmox<br />$headersps = @{<br /> &nbsp; &nbsp;"cookie" = "PVEAuthCookie=$cookie"<br /> &nbsp; &nbsp;"CSRFPreventionToken" = "$token"<br />}<br />Invoke-RestMethod -SkipCertificateCheck -Uri $urlqr -Method Post -Headers $headersps<br />```<br /><br />Bash:<br /><br />```<br />#!/bin/bash<br />##################################<br />### API AUTOMATION<br /># for the proxmox community<br /># By veeh, enjoy<br /><br /># Информация о хосте<br />pve="HOST_FQDN_OR_IP"<br />node="HOSTID"<br />port=":8006"<br />vmid="VMID"<br /><br /># Информация об API<br />apiu="user@realm"<br />apip="USER_PASSWORD"<br />url_base="https://$pve$port/api2/json"<br /># Здесь нужно указать, что именно вы хотите сделать<br /># <noindex><a href="https://pve.proxmox.com/pve-docs/api-viewer/" target="_blank" rel="nofollow" >https://pve.proxmox.com/pve-docs/api-viewer/</a></noindex><br />url_end="nodes/$node/qemu/$vmid/status/start"<br />urlqr="$url_base/$url_end"<br />urltk="$url_base/access/ticket"<br /><br />ticket=`curl --insecure --data "username=$apiu&password=$apip" $urltk`<br /><br /># Извлечение cookie и токена из данных тикета<br />cookieid=`echo $ticket | tr -t '"' '\n' | grep "PVE:$apiu"`<br />cookie="PVEAuthCookie=$cookieid"<br />ticketid=`echo $cookie | awk -F ':' '{ print $3 }'`<br />tokenid=`echo $ticket | tr -t '"' '\n' | grep $ticketid | grep -v PVE`<br />token="CSRFPreventionToken:$tokenid"<br /><br /># Запрос к API Proxmox<br />curl --insecure --cookie $cookie --header $token -X POST "$urlqr"<br />``` <br />
			<i>12.07.2021 22:54:00, Veeh.</i>]]></description>
			<link>http://proxmox.su/forum/messages/forum63/message328653/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</link>
			<guid>http://proxmox.su/forum/messages/forum63/message328653/78321-tutorial_-avtomatizatsiya-api_-vklyuchenie_vyklyuchenie-vm-i-prochee.</guid>
			<pubDate>Mon, 12 Jul 2021 22:54:00 +0300</pubDate>
			<category>Proxmox Виртуальная Среда</category>
		</item>
	</channel>
</rss>
