Я пытаюсь подключиться к своему экземпляру Compute Engine по SSH с помощью CircleCI с помощью команды, которая выглядит так в config.yml:
gcloud --quiet compute ssh [INSTANCE_NAME] --zone northamerica-northeast1-a --project [PROJECT_NAME]
cd /var/www/dev
Я могу успешно пройти аутентификацию и увидеть командную строку в журналах CircleCI. Однако команды после SSH не выполняются. Что я здесь делаю не так?
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Sep 12 15:53:55 2018 from 18.212.180.159
[USER_NAME]:~$
Я ожидаю, что после успешной аутентификации будет запущена команда cd.
Используя SSH, похоже, вы не можете изменить каталог, просто передав команду, и это ограничение SSH для этого Сообщение о сбое сервера. Как правило, вы можете запустить исполняемый файл с помощью SSH, используя -c
flag, и аналогичным образом используя --command
с gcloud как этот пример.
gcloud compute ssh --zone=us-east1-c test --command="nohup ping -i 5 google.com > foo.out 2> foo.err < /dev/null &"
Однако из приведенного выше сообщения serverfault кажется, что изменение каталога может быть достигнуто с помощью -t
флаг, помимо выполнения нескольких команд в одном операторе. К счастью, gcloud также может использовать такие флаги, добавив --ssh-flag
. Вот пример, который меняет каталог и выводит системный путь.
gcloud compute ssh --zone=us-central1-c instance-2 --ssh-flag="-t" --command="cd /bin; pwd"
/bin
Connection to xx.xx.xx.xx closed.
Обратите внимание, что SSH завершился (соединение закрыто) после последней команды pwd
был выполнен. Чтобы оставаться в системе и, как указано в сообщении, используйте bash --login
Я не уверен в circleCI, как запускаются команды, но в целом для запуска команды в Linux вы можете указать полный путь напрямую, а не менять каталог. Например, /some/directory/executablefile
будет запускать executablefile
.