-
Notifications
You must be signed in to change notification settings - Fork 0
2조 셸 스크립트 미션
Park minji edited this page Jul 31, 2024
·
2 revisions
SSH agent forwarding
- local host 상의 ssh agent가 remote host에 있는 것처럼 접근하게 해주는 것
- remote host1의 ssh client가 local host에 있는 키를 활용하여 remote host2에 ssh session을 invoke할 수 있음
References
Shell이란 무엇인가?
- 커널과 사용자 간 인터페이스
- shell은 키보드에서 입력을 받아 자식 프로세스를 exec으로 생성하고, 해당 자식 프로세스에서 명령을 실행
- 자식 프로세스의 결과를 부모 프로세스인 쉘이 받음
-
echo $?
로 직전 결과 확인 가능
-
- 자식 프로세스의 결과를 부모 프로세스인 쉘이 받음
- 환경 변수: 쉘을 사용할 때 필요한 값을 저장한 것
-
export ENV_NAME=ENV_VALUE
실행 시 해당 변수가 자식 프로세스까지 전파됨 -
source
로 자식 프로세스에 설정된 환경 변수를 부모 프로세스까지 전파할 수 있음-
source
=.
-
-
Shell의 종류
- Bash (Bourne Again Shell)
- Zsh (Z Shell)
- Ksh (Korn Shell)
aws CLI 를 설치하고 인스턴스의 public IP를 알아낸다.
aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId,PublicIpAddress,State.Name]" --output table
ec2 meta data v2 를 이용해서 인스턴스의 public IP를 알아낸다.
curl -s http://169.254.169.254/latest/meta-data/instance-id
curl -s http://169.254.169.254/latest/meta-data/public-ipv4
curl -s http://169.254.169.254/latest/meta-data/local-ipv4
웹훅을 이용해서 slack의 #infra 채널에 아래 내용을 메시지로 보낸다.
- instance ID, public IP, private IP, 디스크 남은 용량, 메모리 사용량
AWS_REGION="ap-northeast-2"
get_public_ip_aws_cli() {
PUBLIC_IP_CLI=$(aws ec2 describe-instances \
--region $AWS_REGION \
--instance-ids $INSTANCE_ID \
--query "Reservations[0].Instances[0].PublicIpAddress" \
--output text)
echo "AWS CLI로 확인한 Public IP: $PUBLIC_IP_CLI"
}
get_public_ip_metadata() {
PUBLIC_IP_METADATA=$(curl -s http://169.254.169.254/latest/meta-data/public-ipv4)
echo "EC2 메타데이터로 확인한 Public IP: $PUBLIC_IP_METADATA"
}
send_slack_message() {
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
PRIVATE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
DISK_SPACE=$(df -h / | awk 'NR==2 {print $4}')
MEMORY_USAGE=$(free -m | awk 'NR==2 {printf "%.2f%%", $3*100/$2}')
MESSAGE="Instance ID: $INSTANCE_ID\nPublic IP: $PUBLIC_IP_METADATA\nPrivate IP: $PRIVATE_IP\n디스크 남은 용량: $DISK_SPACE\n메모리 사용량: $MEMORY_USAGE" SLACK_WEBHOOK_URL="YOUR_SLACK_WEBHOOK_URL"
curl -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"$MESSAGE\"}" \
$SLACK_WEBHOOK_URL
}
main() {
get_public_ip_aws_cli
get_public_ip_metadata
send_slack_message
}
main