Как сделать Ubuntu VM доступным из Интернета

Ключевым моментом является следующее: расширения не имеют отношения к какой-либо Unix-подобной системной системе. Имя файла - это просто имя и не влияет на возможность запуска сценария или скомпилированного исполняемого файла. Программист может добавить расширение .sh, чтобы указать, что файл является сценарием оболочки или .py для сценария python, но в отличие от Windows любой unix не заботится об именах, он заботится о разрешениях.

[d2 ] Важно то, что исполняемый файл предоставлен файлу. Вы можете проверить с помощью

ls -l /path/to/file

Запуск исполняемых файлов

Для запуска сценария обычно существует несколько способов.

Если ваш текущий каталог совпадает с сценарием , а сценарий имеет исполняемые разрешения, вы можете запустить его так ./my_script_name. [F10] означает текущий каталог. Если ваш текущий каталог отличается, а скрипт имеет исполняемые разрешения, вы можете запустить его, указав полный путь: /home/user/bin/my_script_name

(Два вышеуказанных метода полагаются на установленный набор разрешений, независимо от того, является ли файл частью $PATH не имеет значения. Наличие строки #! также имеет значение, без нее скрипт будет выполняться текущей оболочкой, которую вы открыли. Если у меня есть csh скрипт без этой строки и попробуйте запустить его в bash с ./my_script.csh, он не сработает)

Если ваш текущий каталог совпадает с сценарием, а скрипт имеет исполняемые разрешения, вы можете запустить его так ./my_script_name. [F10] означает текущий каталог. Задание интерпретатора как команды и скрипта в качестве аргумента. Таким образом, скрипт будет служить входным файлом для интерпретатора. Если ваш текущий каталог отличается, а сценарий имеет исполняемые разрешения, вы можете запустить его, указав полный путь: /home/user/bin/my_script_name

Примеры

Пример # 1, работа с интерпретатором, разрешения exec

$-> ls -l abc.py                                                               
-rw-rw-r-- 1 xieerqi xieerqi 44 Apr 27 22:39 abc.py
$-> python abc.py                                                              
a
b
c

Пример # 2, работающий с установленным набором разрешений ./, набор строк shebang.

$-> cat abc.py                                                                 
#!/usr/bin/env python
for letter in 'a' 'b' 'c' :
   print letter
$-> ls -l abc.py
-rwxrwxr-x 1 xieerqi xieerqi 66 Apr 27 23:02 abc.py*
$-> ./abc.py                                                                   
a
b
c

Пример №3, работающий без shebang line set (fail, потому что bash не может читать скрипты python, ни одна строка shebang не принимает текущую оболочку в качестве интерпретатора)

$-> cat abc.py                                                                 
for letter in 'a' 'b' 'c' :
   print letter
$-> ./abc.py                                                                   
./abc.py: 2: ./abc.py: Syntax error: word unexpected (expecting "do")

Пример # 4, запущенный скрипт, который имеет исполняемые разрешения, устанавливает папку формы, которая является частью из $PATH переменной

#  /home/xieerqi/bin is part of my path variable
$-> echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/microchip/xc16/v1.25/bin:/opt/microchip/xc32/v1.40/bin:/opt/microchip/xc8/v1.35/bin:/home/xieerqi/bin:/home/xieerqi/bin/sh

$-> # current directory is /home/xieerqi
$-> pwd
/home/xieerqi
$-> # move the file to ~/bin
$-> mv ~/abc.py ~/bin/abc.py
$-> # now I can run it just by calling the name
$-> abc.py
/home/xieerqi/bin/abc.py: 2: /home/xieerqi/bin/abc.py: Syntax error: word unexpected (expecting "do")
$-> # Syntax error because again, no interpreter specified.                    
$-> # must add #!/usr/bin/env python
$-> vi /home/xieerqi/bin/abc.py          
$-> # after adding the line with vi text editor, we can run
$-> abc.py                                                                     
a
b
c

Пример # 5, удаляя расширение, по-прежнему выполняется, потому что расширения не имеют значения, но он имеет разрешения и является частью $PATH:

$-> mv ~/bin/abc.py  ~/bin/abc                                                 
$-> abc
a
b
c
0
задан 2 March 2018 в 04:15

2 ответа

Все вышесказанное.

В системе Ubuntu должна быть служба, прослушивающая открытый порт. На виртуальной машине интерфейс должен быть подключен к локальной сети или (если это NAT 'ed), порт, на котором прослушивается служба, должен быть перенаправлен через NAT. На вашем маршрутизаторе порт должен быть перенаправлен со стороны локальной сети на WAN (общедоступную).

Кроме того, ваш интернет-провайдер не должен блокировать выбранный порт WAN.

2
ответ дан 17 July 2018 в 19:43

Все вышесказанное.

В системе Ubuntu должна быть служба, прослушивающая открытый порт. На виртуальной машине интерфейс должен быть подключен к локальной сети или (если это NAT 'ed), порт, на котором прослушивается служба, должен быть перенаправлен через NAT. На вашем маршрутизаторе порт должен быть перенаправлен со стороны локальной сети на WAN (общедоступную).

Кроме того, ваш интернет-провайдер не должен блокировать выбранный порт WAN.

2
ответ дан 23 July 2018 в 20:27

Другие вопросы по тегам:

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