Запуск пользовательских скриптов через Space Agent VM
Для запуска пользовательских скриптов через Space Agent VM необходимо выполнение следующих условий:
- ОС Linux;
- ВМ включена и активен Space Agent VM.
Получение вариантов команд к Space Agent VM
VM_GUEST_CMDS=$(curl -s -f -S -H "Content-Type: application/json" \
-H "Authorization: jwt ${TOKEN}" \
https://${SPACEVM_ADDRESS}/api/domains/${VM_ID}/available-guest-cmds/
echo ${VM_GUEST_CMDS}
{
"qemu_available_cmds": [
"guest-ssh-remove-authorized-keys",
"guest-ssh-add-authorized-keys",
"guest-ssh-get-authorized-keys",
"guest-get-devices",
"guest-get-osinfo",
"guest-get-timezone",
"guest-get-users",
"guest-get-host-name",
"guest-exec",
"guest-exec-status",
"guest-get-memory-block-info",
"guest-set-memory-blocks",
"guest-get-memory-blocks",
"guest-set-user-password",
"guest-get-fsinfo",
"guest-get-disks",
"guest-set-vcpus",
"guest-get-vcpus",
"guest-network-get-interfaces",
"guest-suspend-hybrid",
"guest-suspend-ram",
"guest-suspend-disk",
"guest-fstrim",
"guest-fsfreeze-thaw",
"guest-fsfreeze-freeze-list",
"guest-fsfreeze-freeze",
"guest-fsfreeze-status",
"guest-file-flush",
"guest-file-seek",
"guest-file-write",
"guest-file-read",
"guest-file-close",
"guest-file-open",
"guest-shutdown",
"guest-info",
"guest-set-time",
"guest-get-time",
"guest-ping",
"guest-sync",
"guest-sync-delimited"
]
}
Исполнение команды guest-get-time Space Agent VM
VM_GUEST_RESPONSE=curl -s -f -S -XPOST -H "Content-Type: application/json" \
-H "Authorization: jwt ${TOKEN}" \
-d "{\\"qemu_cmd\\":"guest-get-time", \\"fargs\\":{}}" \
https://${SPACEVM_ADDRESS}/api/domains/${VM_ID}/guest-command/
echo ${VM_GUEST_RESPONSE}
{"guest-get-time": 1638259995198604000}
Исполнение команды guest-get-osinfo Space Agent VM
VM_GUEST_RESPONSE=curl -s -f -S -XPOST -H "Content-Type: application/json" \
-H "Authorization: jwt ${TOKEN}" \
-d "{\\"qemu_cmd\\":"guest-get-osinfo", \\"fargs\\":{}}" \
https://${SPACEVM_ADDRESS}/api/domains/${VM_ID}/guest-command/
echo ${VM_GUEST_RESPONSE}
{
"guest-get-osinfo": {
"name": "Fedora Linux",
"kernel-release": "5.14.10-300.fc35.x86_64",
"version": "35 (Cloud Edition)",
"variant": "Cloud Edition",
"pretty-name": "Fedora Linux 35 (Cloud Edition)",
"version-id": "35",
"variant-id": "cloud",
"kernel-version": "#1 SMP Thu Oct 7 20:48:44 UTC 2021",
"machine": "x86_64",
"id": "fedora"
}
}
Исполнение команды guest-exec Space Agent VM
VM_GUEST_RESPONSE=curl -s -f -S -XPOST -H "Content-Type: application/json" \
-H "Authorization: jwt ${TOKEN}" \
-d "{\\"qemu_cmd\\":"guest-exec", \\"fargs\\":{ {\\"path\\": \\"ls\\", \\"arg\\": [\\"-la\\", \\"/\\"]} }" \
https://${SPACEVM_ADDRESS}/api/domains/${VM_ID}/guest-command/
echo ${VM_GUEST_RESPONSE}
{
"guest-exec": {
"exitcode": 0,
"out-data": "total 18\ndr-xr-xr-x. 1 root root 132 Oct 26 05:38 .\ndr-xr-xr-x. 1 root root 132 Oct 26 05:38 ..\nlrwxrwxrwx. 1 root root 7 Jul 21 23:47 bin -> usr/bin\ndr-xr-xr-x. 7 root root 1024 Oct 26 05:40 boot\ndrwxr-xr-x. 19 root root 3980 Nov 29 05:31 dev\ndrwxr-xr-x. 1 root root 2634 Nov 29 05:33 etc\ndrwxr-xr-x. 1 root root 20 Nov 29 05:32 home\nlrwxrwxrwx. 1 root root 7 Jul 21 23:47 lib -> usr/lib\nlrwxrwxrwx. 1 root root 9 Jul 21 23:47 lib64 -> usr/lib64\ndrwxr-xr-x. 1 root root 0 Jul 21 23:47 media\ndrwxr-xr-x. 1 root root 0 Jul 21 23:47 mnt\ndrwxr-xr-x. 1 root root 0 Jul 21 23:47 opt\ndr-xr-xr-x. 197 root root 0 Nov 29 05:30 proc\ndr-xr-x---. 1 root root 158 Nov 29 05:32 root\ndrwxr-xr-x. 31 root root 820 Nov 29 05:35 run\nlrwxrwxrwx. 1 root root 8 Jul 21 23:47 sbin -> usr/sbin\ndrwxr-xr-x. 1 root root 0 Jul 21 23:47 srv\ndr-xr-xr-x. 13 root root 0 Nov 29 05:30 sys\ndrwxrwxrwt. 12 root root 280 Nov 30 06:51 tmp\ndrwxr-xr-x. 1 root root 100 Oct 26 05:38 usr\ndrwxr-xr-x. 1 root root 170 Nov 29 05:31 var\n",
"exited": true
}
}