Перейти к содержанию

Запуск пользовательских скриптов через 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
    }
  }