Как избежать gcloud compute alert, храните ключ в кеше - PullRequest
0 голосов
/ 14 сентября 2018

Я написал небольшой код для управления несколькими вычислительными движками на облачной платформе Google.Весь файл находится здесь в github .

Причиной проблемы является gcloud compute ssh в следующем

def upload_file(self, projectname):
    var = raw_input("Upload file with name: " + projectname + " will remove all file and directory with same name in the instance. Are you sure? (y/n)")
    if var.lower().strip() != "y":
        print "Abort uploading."
        return
    is_zip = False
    if projectname.split('.')[1] == "zip":
        is_zip = True
    fullpath_projectname = __location__ + "/" + projectname
    if os.path.isfile(fullpath_projectname):
        all_instances = self.search_any('instances', filter="labels.type=" + self.working_group_label)
        all_instances_name = [x['name'] for x in all_instances]


        i = 0
        for instance in all_instances_name:

            temp_command = 'gcloud_command_' + str(i) 
            i += 1
            temp_instance = user_name + "@" + instance
            temp_file_path = '/home/' + user_name + '/'

            command_arr = []
            command_arr.append('call gcloud compute ssh ' + temp_instance + ' --zone ' + zone + ' --command "cd ' + temp_file_path + '; sudo rm -rf ' + temp_file_path + projectname.split('.')[0] + '; sudo rm -f ' + temp_file_path + projectname.split('.')[0] + '*"\n')
            command_arr.append('call gcloud compute scp "' + fullpath_projectname + '" ' + temp_instance + ':' + temp_file_path + '\n')
            if is_zip:
                command_arr.append('call gcloud compute ssh ' + temp_instance + ' --zone ' + zone + ' ' + ' --command "cd ' + temp_file_path + '; sudo unzip ' + temp_file_path + projectname + '"' + '\n')
            with open(os.path.join(__location__, 'bat/' + temp_command + '.bat'), 'w') as bat:
                bat.writelines(command_arr)
            subprocess.Popen(os.path.join(__location__, 'bat/' + temp_command + '.bat'), shell=True)

Эта часть предназначена для загрузки того же файла (обычно.zip) для всех экземпляров с одинаковым тегом.Однако выполнение этого на моем локальном компьютере вызовет много предупреждений, требующих сохранения отпечатка ssh.

Как это,

Alert

Первоначально для моего удобства это был небольшой инструмент, позволяющий запускать несколько вычислительных движков для запроса сетевых данных (я хочу иметь несколько IP-адресов, чтобы не классифицировать их как DDoS).Но теперь мне нужно поделиться этим с другими командами, чтобы связка предупреждений вызывала замешательство у других.

Я могу кэшировать их по одному вручную, но для других это не удобно.

Я пытался ответить на кеширование, изменив последнюю строку

proc = subprocess.Popen(os.path.join(__location__, 'bat/' + temp_command + '.bat'), shell=True)
proc.communicate(input='y')

Но это вынуждает каждую загрузку просто выполнять одну за другой , и это очень медленно для многих случаев.

1 Ответ

0 голосов
/ 21 сентября 2018

Предупреждение исходит из базового двоичного файла ssh.Вы можете использовать --ssh-flag и --scp-flag до gcloud compote ssh и gcloud compute scp соответственно для управления поведением базового двоичного файла, фактически выполняющего операции ssh.

Хорошее объяснение возможных способов сделать это предоставлено здесь (посмотрите на первый вариант в принятом ответе).Однако я не знаю, примет ли PuTTY тот же синтаксис, поэтому вам, возможно, придется поискать для него правильное значение флага.

Полные документы по этим командам доступны здесь и здесь .

...