# Interfaz: ExtensionVM


**`Desde`**

0.2.0

## Propiedades

### cli

• `Readonly` **cli**: [`ExtensionCli`](/reference/api/extensions-sdk/ExtensionVM/ExtensionCli/)

Ejecuta un comando en el contenedor del backend.

Ejemplo: Ejecuta el comando `ls -l` dentro del contenedor del backend:

```typescript
await ddClient.extension.vm.cli.exec("ls", ["-l"]);
```

Transmite en flujo (stream) la salida del comando ejecutado en el contenedor del backend.

Cuando la extensión define su propio archivo `compose.yaml`
con múltiples contenedores, el comando se ejecuta en el primer contenedor definido.
Cambia el orden en el que se definen los contenedores para ejecutar comandos en otro
contenedor.

Ejemplo: Genera (spawn) el comando `ls -l` dentro del contenedor del backend:

```typescript
await ddClient.extension.vm.cli.exec("ls", ["-l"], {
  stream: {
    onOutput(data): void {
      // Como podemos recibir tanto `stdout` como `stderr`, los envolvemos en un objeto JSON
      JSON.stringify(
        {
          stdout: data.stdout,
          stderr: data.stderr,
        },
        null,
        "  ",
      );
    },
    onError(error: any): void {
      console.error(error);
    },
    onClose(exitCode: number): void {
      console.log("onClose con código de salida " + exitCode);
    },
  },
});
```

**`Param`**

Comando a ejecutar.

**`Param`**

Argumentos del comando a ejecutar.

**`Param`**

La función de callback para escuchar los datos de salida del comando y los errores.

---

### service

• `Optional` `Readonly` **service**: [`HttpService`](/reference/api/extensions-sdk/ExtensionVM/HttpService/)

