google-compute-engine 스크립트에 액세스

google-compute-engine 스크립트에 액세스

Linux 기반 운영체제('debian-9-stretch-v20180307')를 사용하는 Compute Engine에서 Python 스크립트를 실행하고 싶습니다. bash 시작 스크립트를 사용하고 있으며 코드는 다음과 같습니다.

#! /bin/bash

sudo apt-get update
sudo apt-get -yq install python-pip
sudo pip install --upgrade google-cloud
sudo pip install --upgrade google-cloud-storage
sudo pip install --upgrade google-api-python-client
sudo pip install --upgrade google-auth-httplib2

echo "Making directories..."

mkdir -p /home/<myusername>/code
mkdir -p /home/<myusername>/rawdata
mkdir -p /home/<myusername>/etc...

sudo chown -R <myusername> /home/<myusername>

echo "Directory creation complete..."

gsutil cp gs://<mybucketname>/worker-python-code/* /home/<myusername>/code/
gsutil -m cp gs://<mybucketname>/* /home/<myusername>/rawdata/

echo "Boot complete."

인스턴스를 생성하고 스크립트를 사용하여 시작하면 모든 디렉터리가 예상대로 생성되고 gsutil 명령에 따라 모든 데이터가 복사됩니다. 그런 다음 인스턴스에 "SSH"를 사용하고 다음 명령을 사용하여 스크립트를 실행합니다.

python '/home/<myusername>/code/workermaster.py'

스크립트는 디스크에 .csv를 생성해야 하는 줄에 도달할 때까지 실행된 다음 "[Errno 13] Permission Denied" 오류가 발생합니다.

몇 가지 테스트를 수행하고 다른 스레드 및 인터넷 검색을 기반으로 SSH 셸을 실행하는 동안 스크립트를 실행해 보았지만 제대로 작동하지 않는 것 같습니다. 몇 가지 흥미로운 참고 사항과 관찰 사항은 다음과 같습니다.

1) "Console Output" 보고서에는 다음과 같은 줄이 있습니다.

chown: invalid user: ‘<myusername>’

그런 다음 많은 줄에서 다음과 같이 말합니다.

Created user account <myusername>

이는 아직 존재하지 않는 사람에게 소유권을 설정하려고 하는데 어떻게 해야 할지 모르겠습니다.

2) SSH를 통해 로그인한 후 명령줄을 "chown"하고 스크립트를 실행하면 문제 없이 예상대로 정확하게 실행됩니다.

3) 시작 스크립트에 다음과 같은 줄을 추가하여 문제를 해결하려고 했습니다.

sudo chmod -R 777 /홈/

이 명령을 사용하면 인스턴스에 SSH로 연결할 수도 없습니다.

결국 로그인하지 않고도 Python 코드를 원격으로 실행할 수 있도록 스크립트에 "nohang up" 줄을 추가할 계획이지만 여기서 무슨 일이 일어나고 있는지 이해하고 시작 후 SSH를 통해 로그인하여 내 명령을 실행할 수 있어야 합니다. 스크립트.

관련 정보