Могу ли я запустить виртуальную машину или оболочку Linux в веб-приложении/веб-сайте или разместить ее на веб-сервере?

Изhelp source:

source: source filename [arguments]
    Execute commands from a file in the current shell.

    Read and execute commands from FILENAME in the current shell.  The
    entries in $PATH are used to find the directory containing FILENAME.
    If any ARGUMENTS are supplied, they become the positional parameters
    when FILENAME is executed.

    Exit Status:
    Returns the status of the last command executed in FILENAME; fails if
    FILENAME cannot be read.

Итак, в скрипт нужно добавить только эту строчку:

source input.in

или этот (версия POSIX):

. input.in

Чтобы передать входной файл во время выполнения, вы используете позиционные параметры:

source "$1"
. "$1"

Также обратите внимание, что d=a*b+cне будет работать, если dне имеет атрибута "integer":

declare -i d
d=a*b+c

или вы используете арифметическое расширение для выполнения операции:

d=$((a*b+c))

Пример:

#!/bin/bash
source "$1"
d=$((a*b+c))
echo "$d"
$./script.sh input.in
170

0
04.12.2020, 20:36
1 ответ

Упомянутый вами веб-сайт Immersive Labs заявляет на своей странице поддержки , что они на 100% основаны на облаке. Тогда мы можем разумно предположить, что у них есть серверная система в облаке и что приложение не является автономным в браузере.

Таким образом, чтобы воспроизвести эту архитектуру, вы должны запустить удаленную систему и подключиться к ней через веб-интерфейс. Удаленная система может быть виртуальной машиной или контейнером. Виртуальные машины будут «тяжелее» с точки зрения ресурсов, но обеспечат лучшую изоляцию между экземплярами. Контейнеры представляют собой противоположный -источник ресурсов, но имеют некоторые общие черты. Вы захотите использовать один экземпляр для каждого пользователя, чтобы их действия были изолированы друг от друга.

Если вы решите использовать контейнеры, вы можете напрямую использовать Docker для управления ими. Он даже имеет REST API , так что вы можете легко интегрироваться.

Для внешнего интерфейса вам следует изучить уже упомянутые варианты (Guacamole, NoVNC и т. д. ). Поскольку вы планируете использовать Java, вам может подойти Apache Guacamole. Посмотреть его архитектуру можно здесь .

0
18.03.2021, 22:45

Теги

Похожие вопросы