Пишем своего робота на Python. Урок 15
Запускаем автоматический скрипт на виртуальной машине с удаленного сервера
![Пишем своего робота на Python. Урок 15](https://storage.googleapis.com/static.istories.media/uploaded/images/ab28400305ce44f2a25f48b3ce5958cb-1920x960px_1x.png)
В прошлых выпусках мы узнали, как запускать скрипты автоматически по расписанию и как создать свою виртуальную машину. Сегодня мы объединим эти знания и удаленно запустим скрипт на виртуальной машине, чтобы его работа не была привязана к вашему компьютеру.
Для начала запустим виртуальную машину, если она была выключена. Когда слева от названия появится зеленая галочка — машина готова к работе.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/777b027c62c84e80a5bcb809377daed0-1200xautopx_1x.png)
![](https://storage.googleapis.com/static.istories.media/uploaded/images/19be3bf452f24ac091efb9726cd43aec-1200xautopx_1x.png)
Есть несколько обязательных настроек, что всё работало как надо. Проверьте, чтобы у пунктов «Allow HTTP traffic» и «Allow HTTPS traffic» стояли галочки, и чтобы ко всем API «облака» был предоставлен полный доступ.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/5df3e5265e174626813249a0b0c92a8f-1200xautopx_1x.png)
![](https://storage.googleapis.com/static.istories.media/uploaded/images/a27975b8c2e34a72b75eb64e601dcbff-1200xautopx_1x.png)
Нажмем на «SSH» в столбике «Connect», чтобы подключиться к виртуальной машине.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/f8f76f4b87fc4a42b39856295ed4fe04-1200xautopx_1x.png)
После этого откроется консоль, по своим свойствам идентичная терминалу — она распознает ваш аккаунт. Теперь нужно загрузить файлы нашего проекта на сервер.
Создадим директорию командой mkdir <название> (у нас оно будет new_robot). Проверить, что она появилась в корневом каталоге, можно командой ls.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/f2984cb77a7b4e0b9f58de828e23240e-1200xautopx_1x.png)
Чтобы загрузить файл, нажмите на шестеренку в правом верхнем углу и далее на «Upload file».
![](https://storage.googleapis.com/static.istories.media/uploaded/images/2a045d74782b42f1a022bff1e7e60ffb-1200xautopx_1x.png)
Существует другой способ — с помощью специальных команд Google Cloud. Подробнее о них можно узнать в официальном гайде. Этот способ пригодится нам для загрузки, например, файла .env, куда мы безопасно сохраняли логин и пароль — через «Upload file» он не загрузится и даже не отобразится в списке доступных файлов.
Команда, которая нам нужна, выглядит так:
gcloud compute scp ~/robot/.env ~/.env instance-1:~
«~/robot/.env» — расположение файла на вашем компьютере.
«~/.env» — будущее название файла на вашей виртуальной машине.
«instance-1:~» — название виртуальной машины и будущее расположение файла (в данном случае — корневая директория).
![](https://storage.googleapis.com/static.istories.media/uploaded/images/433b910782794a8abaed31a3a37b6892-1200xautopx_1x.png)
После запуска команды у нас попросят уточнить временную зону, нажимаем Y. Далее с помощью cat .env можем проверить правильность данных в загруженном файле.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/d477040fefe8476ca99793eb5ac41983-1200xautopx_1x.png)
После загрузки всех файлов на сервер нужно переместить их в ранее созданную папку. Для этого введем mv <название файла> <название папки> для каждого файла.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/ac64391158e54200958cc5f78790e550-1200xautopx_1x.png)
Разберемся, как правильно написать bash-файл для виртуальной машины, чтобы скрипт запускался автоматически. Вернемся в окно Python и создадим файл runVM.sh. Начало у него стандартное: #!/bin/bash. Далее указываем директорию, в которой лежит наш проект. Следующей строкой запускаем главный файл (на нашем сервере по умолчанию установлен python3).
![](https://storage.googleapis.com/static.istories.media/uploaded/images/d55c90a5099d4c1f96c60f88f2014c5a-1200xautopx_1x.png)
Этот файл тоже загрузим на сервер и переместим в папку проекта. Не забудьте с помощью команды ls проверить, что в папке находятся все нужные файлы.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/e2bab748f81f4f5fae50e449679260cc-1200xautopx_1x.png)
Запускаем bash-файл как обычно: командой bash runVM.sh. Если необходимо настроить crontab, чтобы изменить время и частоту запуска скрипта, сделать это можно точно так же, как мы делали в уроке #13.
Теперь можете не волноваться, включен ваш компьютер или выключен — скрипт будет запускаться на удаленном сервере до тех пор, пока вы не выключите виртуальную машину.
Если у вас что-то не получилось — пишите в наш Telegram-чат, постараемся подсказать.