2009-06-02 3 views
0

У меня есть командный файл, который я бы хотел запустить при запуске ECI Windows AMI. Программа, которую я хотел бы запустить из этого командного файла, принимает в качестве параметра идентификатор экземпляра машины EC2. Каков самый простой способ получить этот идентификатор экземпляра, переданный в качестве аргумента для этой программы?Как получить экземпляр экземпляра машины EC2 Windows в пакетную переменную

От Amazon's Documentation on the subject, я вижу, что вы должны выдать WGET указанному URL-адресу и проанализировать ответ. Таким образом, альтернативный способ формулировки этого вопроса может быть «Как передать содержимое HTTP-запроса программе в качестве аргумента в пакетном файле Windows»

В псевдокоде это то, что я хотел бы сделать:

set ID = GET http://169.254.169.254/2008-08-08/meta-data/instance-id 
myprogram.exe /instanceID=%ID% 

Любые предложения о том, как я могу продолжить?

ответ

1

Вы не можете открывать URL-адреса непосредственно в пакетном файле. Вы можете использовать wget или подобное для получения содержимого этого URL-адреса. Тогда вы либо получите файл (содержимое которого можно присвоить переменной окружения [см, например Set= log.txt in batch]), или вы получите выход из программы, в этом случае вы можете обернуть его в

for /f "usebackq delims=" %%x in (`print_contents_of_url http://169.254.169.254/2008-08-08/meta-data/instance-id`) do set ID=%%x 

, который установил бы %ID% для ответа сервера на этот URL [при условии, что программа выполняет то, что я назвал ее]).

В обоих случаях вам понадобится отдельная программа, чтобы говорить на HTTP.

+0

Это имеет смысл. Итак, wget> file.txt, затем установите/p name =

+0

Вы не можете просто пропустить вывод wget. Но wget напишет, что он получает в файл с опцией -O, поэтому вы должны использовать wget -O file.txt http: // ... – Joey

Смежные вопросы