LoginSignup
3
3

More than 5 years have passed since last update.

AWS上のWindowsのVersionを一気に調べる

Last updated at Posted at 2014-09-04

ピンチ

AWSから突然メールが来て、Windows Server 2012 R2のインスタンスは、再起動すると二度とつながらなくなるらしい!

しかし!
・ちょ〜いっぱいのインスタンスを見ないといけない
・AMIはいろいろコピーして使っているので、名前からはWindowsのバージョンまでわからない
・一台づつRDPして調べると一生かかってしまいそう
などなど、いろいろな事情があるのでピンチです。

そこで、なるべく労力をかけずにWindowsInstancesのバージョンを一挙に調べる方法を考えてみます。
もっといい方法があったら逆に教えてください!

調査用のWindowsインスタンスを用意

直接AWSにPrivate IP AddressにてIP RechableなWindowsマシンがあるかたはそれを利用します。
無い方は、AWS上に適当なWindowsInstanceを用意しましょう。(2012R2じゃないやつを)

調査用スクリプトを作る

PowerShellやバッチファイルで作ればよかったのですが、手抜きでShellScriptで作ったので、Cygwinなどを入れて準備します。

AWS CLIを入れる

http://aws.amazon.com/jp/cli/
64ビットか32ビットっていう所を押して、実行するだけで入ります。
ここからインストールしてください。

Cygwinなどを入れる

たとえばCygwinなど、ShellScriptを実行できる環境を入れてください。
http://cygwin.com/
setup-x86.exe (32-bit installation)か
setup-x86_64.exe (64-bit installation)
という所を押して、
途中で近いミラーサイトを選んで、つぎつぎ行けばとりあえず入ります。

AWS CLIを使う準備をする

Cygwin Terminalなどを立ち上げて、

$ mkdir ~/.aws
$ vi ~/.aws/config

[default]
output = text
region = ap-northeast-1
aws_access_key_id = ACCESS_KEY
aws_secret_access_key = SECRET_KEY

のような感じでAWS CLIを使えるようにしてください。
詳しくは、
http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html

※ Windowsコマンドにて日本語が文字化けする場合は、ターミナルを右クリック->Options...->TextのFontをMSゴシックなどに、Localeをja_JPに、Character setをSJISにすると文字化けしなくなります。

調査用スクリプトを入れる

こんな感じのを作ります(手抜き)

list_windows_instance_version_aws.sh
#!/bin/bash

AWSCLIPATH="/cygdrive/c/Program Files/Amazon/AWSCLI/aws.exe"
AWSCLIOPT="--output text "

for IID in $("${AWSCLIPATH}" ${AWSCLIOPT} ec2 describe-instances --filter Name=platform,Values=windows --query "Reservations[].Instances[].[InstanceId]" | sed -e 's/\r//g')
do

  echo
  PRIIP=$("${AWSCLIPATH}" ${AWSCLIOPT} ec2 describe-instances --instance-id ${IID} --query "Reservations[].Instances[].NetworkInterfaces[].[PrivateIpAddress]" | sed -e 's/\r//g')
  KEYNAME=$("${AWSCLIPATH}" ${AWSCLIOPT} ec2 describe-instances --instance-id ${IID} --query "Reservations[].Instances[].[KeyName]" | sed -e 's/\r//g')
  KEYPATH="./keys/${KEYNAME}.pem"

  echo "Instance ID : ${IID}"
  echo "KeyPath : ${KEYPATH}"
  echo "Private IP Address : ${PRIIP}"

  PASSWD=$("${AWSCLIPATH}" ${AWSCLIOPT} ec2 get-password-data --instance-id ${IID} --priv-launch-key ${KEYPATH} --query "[PasswordData]" | sed -e 's/\r//g')

  if [ "" = "${PASSWD}" ]
  then
    echo "can not get windows password."
  else
    echo "Windows Password : ${PASSWD}"

    systeminfo /s ${PRIIP} /u Administrator /p "${PASSWD}" | findstr "^OS"

  fi

done

AWSに設定した鍵を準備する

WindowsInstanceに設定した鍵の秘密鍵を用意して、./keys/に入れておきます。
名前は、.pemをつけましょう。(仕様)

$ mkdir keys ; cat "ssh-rsa xxxxx" > ./keys/default.pem

スクリプトを実行してみる

$ bash ./list_windows_instance_version_aws.sh

で実行してみます。
※ WindowsのAdministratorPasswordをキーと結びつかないように変更していると、内部で実行している


systeminfo /s ${PRIIP} /u Administrator /p ${PASSWD} | findstr "^OS"

が失敗するので、有効なユーザ名、パスワードにて「結局手動で」実行してくださいw
うまく実行されると、

出力例
Instance ID : i-02xxxxx
KeyPath : ./keys/default.pem
Private IP Address : 10.1.1.100
Windows Password : xxxxxxx
OS 名:                  Microsoft Windows Server 2012 R2 Standard
OS バージョン:          6.3.9600 N/A ビルド 9600
OS 製造元:              Microsoft Corporation
OS 構成:                スタンドアロン サーバー
OS ビルドの種類:        Multiprocessor Free

Instance ID : i-4exxxxxx
KeyPath : ./keys/win.pem
Private IP Address : 10.1.1.176
Windows Password : xxxxxxx
OS 名:                  Microsoft Windows Server 2008 R2 Datacenter
OS バージョン:          6.1.7601 Service Pack 1 ビルド 7601
OS 製造元:              Microsoft Corporation
OS 構成:                スタンドアロン サーバー
OS ビルドの種類:        Multiprocessor Free

Instance ID : i-c1xxxxxxx
KeyPath : ./keys/default2.pem
Private IP Address : 10.1.1.21
Windows Password : xxxxxxxx
OS 名:                  Microsoft Windows Server 2012 Standard
OS バージョン:          6.2.9200 N/A ビルド 9200
OS 製造元:              Microsoft Corporation
OS 構成:                スタンドアロン サーバー
OS ビルドの種類:        Multiprocessor Free

こんな感じで出てきます。対象がたくさんあった場合はAWSさんを恨みましょうw

以上!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3