여러 EC2를 시작한 후 모든 EC2에 SSH 연결을위한 TeraTerm 매크로 파일을 만드는 Shell 스크립트
7866 단어 ShellScriptteratermEC2aws-cliAWS
그렇다면 물론 EC2를 시작할 때마다 연결 대상 IP가 변경되므로 매번 15대의 IP를 Teraterm에 입력해야 합니다.
그래서 EC2를 여러 대 시작한 후, 접속처의 IP를 취득해, 시작한 모든 EC2에 SSH 접속을 실시하는 Teraterm 매크로 파일을 작성하는 Shell 스크립트를 만들기로 했습니다.
사전 준비
시작하려는 EC2 태그에
NAME
VALUE
ttl
true
를 등록해 둡니다.
주제
쉘 스크립트
※使用する際は
<profile>→AWS-CLIのプロファイル名、
<keypath>→接続に使うSSHKeyのフルパス
に置き換えてください。
# aws cliのプロファイル
AWS_PROFILE_NAME=<profile>
# リージョン
REGION=ap-northeast-1
# 起動するEC2インスタンスリストを取得
INSTANCES_ID_LIST=$(
aws ec2 describe-instances \
--region $REGION \
--profile $AWS_PROFILE_NAME \
--output text \
--filters "Name=tag:ttl,Values=true" \
--query 'Reservations[*].Instances[*].InstanceId' |
sed -e "s/[\r\n]\+//g"
)
# EC2インスタンスを起動する
INSTANCES=$(
aws ec2 start-instances --instance-ids $INSTANCES_ID_LIST \
--region $REGION \
--profile $AWS_PROFILE_NAME \
--output text &&
aws ec2 wait instance-running --instance-ids $INSTANCES_ID_LIST \
--region $REGION \
--profile $AWS_PROFILE_NAME \
--output text
)
# パブリックIPアドレスを取得
INSTANCES_IP=($(
aws ec2 describe-instances --instance-ids $INSTANCES_ID_LIST \
--region $REGION \
--profile $AWS_PROFILE_NAME \
--query 'Reservations[*].Instances[*].PublicIpAddress' \
--output text |
sed -e "s/[\r\n]\+//g"
))
# TeraTermマクロファイル(.ttl)を作成する
echo '' >loadtest-connecct.ttl | sed -e "s/[\r\n]\+//g" >loadtest-connecct.ttl
cat <<-EOS >>loadtest-connecct.ttl
$(
echo strdim ip ${#INSTANCES_IP[@]}
for ((i = 0; i < ${#INSTANCES_IP[@]}; i++)); do
echo "ip[$i] = '${INSTANCES_IP[i]}'"
done
echo for i 0 $((${#INSTANCES_IP[@]} - 1))
echo username = "'ec2-user'"
echo hostname = ip[i]
echo keyfile = "'<keypath>'"
echo msg = hostname
echo strconcat msg "':22 /ssh /auth=publickey /nosecuritywarning /user='"
echo strconcat msg username
echo strconcat msg "' /keyfile='"
echo strconcat msg keyfile
echo connect msg
echo unlink
echo next
)
EOS
하고 있는 일
하고 있는 일은 서두에 기술한 대로입니다.
동작 확인
이번 연결하고 싶은 EC2는 이쪽입니다.
ttl1,ttl2,ttl3 각각 ttl=true 태그를 정의합니다.
shell을 실행하면 EC2가 시작되고 ttl 파일이 생성됩니다.
내용을 살펴보겠습니다.
생성된 ttl 파일의 내용
strdim ip 3
ip[0] = '3.112.15.xxx'
ip[1] = '35.72.3.xxx'
ip[2] = '18.181.203.xxx'
for i 0 2
username = 'ec2-user'
hostname = ip[i]
keyfile = "'<keypath>'"
msg = hostname
strconcat msg ':22 /ssh /auth=publickey /nosecuritywarning /user='
strconcat msg username
strconcat msg "' /keyfile='"
strconcat msg keyfile
connect msg
unlink
next
시작된 EC2의 공용 IP 배열을 만든 후 공용 IP 배열에 대해 루프 처리를 수행하고 SSH 연결을 시도하고 있습니다.
실제로 TeraTerm 매크로를 실행하면, 기동한 EC2 대수분의 TeraTerm이 일어나 SSH 접속해 줍니다.
끝에
이 shell 스크립트를 응용하면 여러 대 서버에 대해 동일한 파일을 일괄적으로 SCP 전송하는 스크립트 등을 쉽게 만들 수 있다고 생각합니다.
부디 커스터마이즈 해 편리한 TeraTerm 라이프를 보내는 것과 동시에, 기사등에서 아웃풋 쉐어 해 모두 행복하게 합시다.
Reference
이 문제에 관하여(여러 EC2를 시작한 후 모든 EC2에 SSH 연결을위한 TeraTerm 매크로 파일을 만드는 Shell 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ooooouchi/items/2231cdc4b773812e4386텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)