0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自動出力したソースコードの受け渡し用記事

Last updated at Posted at 2024-12-26

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

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?