Перейти к содержимому

Запуск команд ​

Метод sandbox.commands.run в JavaScript/Python или sandbox.Commands.Run в Go запускает команду и ждёт её завершения. Результат содержит стандартный вывод, поток ошибок и код завершения.

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  const result = await sandbox.commands.run("printf 'hello from AgentBox\\n'");
  console.log(result.stdout);
} finally {
  await sandbox.kill();
}

JavaScript и Python выполняют команду через оболочку. Пользовательские данные передавайте через envs, а не вставляйте в строку команды. Go запускает исполняемый файл с аргументами CommandOptions.Args. Для синтаксиса оболочки запустите её явно.

Также можно задать рабочий каталог, переменные окружения, пользователя и таймаут. При ненулевом коде завершения SDK выбрасывает CommandExitError с выводом команды и кодом ошибки. Все параметры перечислены в справочнике SDK.

Выбор пользователя ​

Задайте user в JavaScript/Python, чтобы запустить команду от имени выбранного пользователя песочницы. В Go укажите CommandOptions.User для Run или Start, либо PTYOptions.User при создании терминала. Выбор пользователя работает и с потоковым выводом.

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  const result = await sandbox.commands.run("whoami", { user: "root" });
  console.log(result.stdout);
} finally {
  await sandbox.kill();
}

Если пользователь не задан, используется пользователь шаблона. В Go пустой User означает отсутствие явного выбора. При подключении к существующему процессу сохраняется пользователь, выбранный при запуске.

Полный API описан в опциях команд Go.