EC2とそのEBSの一覧取得
aws ec2 describe-instances \
--query "Reservations[*].Instances[*].[InstanceId, Tags[?Key=='Name'].Value | [0], InstanceType, BlockDeviceMappings[*].Ebs.VolumeId, BlockDeviceMappings[*].DeviceName]" \
--output text | awk '{
instance_id=$1; name=$2; type=$3; device=$NF;
for (i=4; i<=NF-1; i++) {
volume_id=$(i);
size=$(aws ec2 describe-volumes --volume-ids $volume_id --query Volumes[0].Size --output text);
printf "%s\t%s\t%s\t%s\t%s\t%s\n", instance_id, name, type, volume_id, device, size;
}
}'
登録したメアドの中に検査用文字列があるか検査
# 検査用の文字列を定義
search_string = "example"
# 4つのメールアドレスを定義
email_addresses = [
"user1@example.com",
"user2@test.com",
"admin@example.org",
"contact@sample.com"
]
# フラグを初期化
flag = False
# メールアドレスのリストを検査
for email in email_addresses:
if search_string in email:
flag = True
break # 条件に合致するメールアドレスが見つかったらループを抜ける
# フラグが立っているか確認して後続処理を実行
if flag:
print("検査用の文字列を含むメールアドレスが見つかりました。")
# 後続処理
print("後続の処理を実行中...")
else:
print("検査用の文字列を含むメールアドレスは見つかりませんでした。")
CSVを元にS3 Glacierからオブジェクトを復元/取得
なお、インプット情報となるCSVファイルは以下のフォーマットとする。
mybucket01,mykey01
mybucket02,mykey02
mybucket03,mykey03
#!/bin/bash
# 入力CSVファイル
INPUT_CSV="/tmp/OldLogList.csv"
# ダウンロード先ディレクトリ
DOWNLOAD_DIR="/data/infra/shell/tmp/"
# ダウンロードディレクトリが存在しない場合は作成
mkdir -p "${DOWNLOAD_DIR}"
# CSVファイルを1行ずつ読み込み
while IFS=, read -r BUCKET_NAME OBJECT_KEY; do
echo "date '+%Y/%m/%d %H:%M:%S' MSG001 Processing bucket: ${BUCKET_NAME}, object: ${OBJECT_KEY}"
# ③ 復元リクエストを開始
echo "date '+%Y/%m/%d %H:%M:%S' MSG002 Initiating restore request for ${OBJECT_KEY} in ${BUCKET_NAME}..."
aws s3api restore-object \
--bucket "${BUCKET_NAME}" \
--key "${OBJECT_KEY}" \
--restore-request '{"Days": 7, "GlacierJobParameters": {"Tier": "Standard"}}'
# ④ 復元リクエストが完了したことを確認
echo "date '+%Y/%m/%d %H:%M:%S' MSG003 Waiting for restore to complete..."
while true; do
RESTORE_STATUS=$(aws s3api head-object --bucket "${BUCKET_NAME}" --key "${OBJECT_KEY}" 2>&1 | grep -o '"Restore": "ongoing-request="false"' || true)
if [[ ${RESTORE_STATUS} == *'"Restore": "ongoing-request="false"'* ]]; then
echo "date '+%Y/%m/%d %H:%M:%S' MSG005 Restore completed for ${OBJECT_KEY}."
break
fi
echo "date '+%Y/%m/%d %H:%M:%S' MSG004 Restore not yet completed. Waiting 1 minute..."
sleep 60
done
# ⑤ 削除マーカーを除く最新のバージョンIDを取得
VERSION_ID=$(aws s3api list-object-versions --bucket "${BUCKET_NAME}" --prefix "${OBJECT_KEY}" \
| jq -r '
( .DeleteMarkers[] | select(.IsLatest == true) | .VersionId ) as $deleteMarkerId
| .Versions[]
| select(.VersionId != $deleteMarkerId)
| .VersionId
| . ' | head -n 1)
echo "date '+%Y/%m/%d %H:%M:%S' MSG006 Latest version ID excluding delete marker: ${VERSION_ID}"
# ⑥ オブジェクトをローカルにダウンロード
echo "date '+%Y/%m/%d %H:%M:%S' MSG007 Downloading object ${OBJECT_KEY} (version: ${VERSION_ID}) to ${DOWNLOAD_DIR}..."
aws s3api get-object --bucket "${BUCKET_NAME}" --key "${OBJECT_KEY}" \
--version-id "${VERSION_ID}" "${DOWNLOAD_DIR}/${OBJECT_KEY}"
done < "${INPUT_CSV}"
echo "date '+%Y/%m/%d %H:%M:%S' MSG008 All tasks completed."
Pythonでメールファイル(.eml)の送信者を取得
※ただしアカウント名とメールアドレスにより以下AやBのようになったりする
A: Account <Mail@Address>
B: Mail@Address
email_object = email.message_from_string(response)
senderaddr = email_object.get("From", None)
print(senderaddr)
ついでに、本文を変数body_textに取得した際、最期に改行が付いてきてしまうのが邪魔だったが、解決方法があったのでメモ↓↓↓
末尾に改行コードが含まれている場合、以下のreライブラリによる正規表現置換をすることで空文字に置換できる
import re
re.sub('\n$', '', body_text)
Amazon EC2(RHEL)のリージョン情報取得
※ただし、元ネタはアベイラビリティゾーンの取得であることを理解しておくこと
curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//'
# 出力例:ap-northeast-1
Amazon EC2(Windows)のリージョン情報取得
※ただし、元ネタはアベイラビリティゾーンの取得であることを理解しておくこと
(Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/placement/availability-zone) -replace '.$'
Microsoft SQL ServerのHA構成におけるプライマリレプリカの取得
#!/bin/bash
# 接続情報
SERVER="your_sql_server_host"
PORT="1433"
USERNAME="your_username"
PASSWORD="your_password"
DATABASE="master"
# クエリを実行してプライマリサーバを確認
PRIMARY_SERVER=$(sqlcmd -S ${SERVER},${PORT} -U ${USERNAME} -P ${PASSWORD} -d ${DATABASE} -h -1 -Q "SELECT primary_replica FROM sys.dm_hadr_availability_group_states" 2>/dev/null)
if [ -n "$PRIMARY_SERVER" ]; then
echo "現在のプライマリサーバは: $PRIMARY_SERVER"
else
echo "プライマリサーバ情報を取得できませんでした。"
fi