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?

エアークローゼットAdvent Calendar 2024

Day 20

airCloset Advent Calendar 20日目: よく使うコマンドラインツールを紹介!

Last updated at Posted at 2024-12-20

こんにちは!本日は、airClosetで日常的に使用している便利なコマンドラインツールをいくつかご紹介します。サーバー管理や効率的な作業のために役立つものばかりなので、ぜひ参考にしてください!

1. ssm-session-start: サーバーへの簡単ログイン

通常、サーバーにログインする際は、pemキーを使用してSSH接続を行うのが一般的です。しかし、複数のサーバーを管理していると、IPアドレスやインスタンス情報を覚えるのが大変ですよね。

ssm-session-startを使えば、これらの情報を覚える必要がなく、選択するだけでサーバーにログインできます。
このツールは、AWS Session Managerを利用して自社で作成したものです。

スクリプト内容

以下のスクリプトを/usr/local/bin/ssm-session-startとして保存してください。

#!/bin/bash

if !(type aws > /dev/null 2>&1); then
  echo AWS CLI をインストールしてください。
  exit 1
fi

if !(type fzf > /dev/null 2>&1); then
  echo fzf をインストールしてください。
  exit 1
fi

export NAME_SSM2EC2=$(aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].Tags[?contains(Key, \`Name\`)].Value" --output text | fzf)

if [ -z "$NAME_SSM2EC2" ]; then
  echo Exiting script.
  exit 0
fi

echo Connect instanceName: $NAME_SSM2EC2
export ID_SSM2EC2=$(aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" "Name=tag:Name,Values=${NAME_SSM2EC2}" --query 'Reservations[].Instances[].InstanceId' --output text)

IDS=(`echo $ID_SSM2EC2`)
if [ "${#IDS[@]}" -gt 1 ]; then
  echo $NAME_SSM2EC2 が複数のインスタンスに同一名で付与されています。
  echo このツールは、複数のインスタンスに同一のインスタンス名が付与されている場合には対応していません。
  echo インスタンス名が一意になるように統一してください。
  exit 1
fi

echo Connect instanceId: $ID_SSM2EC2
aws ssm start-session --target ${ID_SSM2EC2}

使用方法

1> スクリプトの設置: 上記のコードを/usr/local/bin/ssm-session-startとして保存し、実行権限を付与します。

chmod +x /usr/local/bin/ssm-session-start

2> 前提条件: 対象インスタンスにAWS Session Managerがインストールされている必要があります。詳細はこちらの記事をご覧ください。
https://qiita.com/mksamba/items/6d7a0b84894578feafa8

3> 実行例:

ssm-session-start

実行すると、以下のようにインスタンスの一覧が表示されます。接続したいインスタンスを選択するだけで、自動的にログインできます!

image.png

2. fzf: インクリメンタル検索ツール

fzfは、Goで実装されたインクリメンタル検索ツールです。サーバー操作や日常のコマンド履歴検索など、さまざまな場面で便利に使えます。特に、コマンド履歴の検索機能がおすすめです。

コマンド履歴検索

通常、コマンド履歴を確認する際にhistoryコマンドを使うと、結果が見づらくて大変ですよね。fzfを導入すれば、直感的に履歴を検索できます。

以下のスクリーンショットのように、簡単に過去のコマンドを見つけることができます!

image.png

3. ripgrep: 超高速テキスト検索ツール

ripgrepは、Rust製のテキスト検索ツールです。その名の通り、grepに似た機能を持ちながら、圧倒的な検索速度を誇ります。

使用例

特定の文字列を検索したいときに、以下のように使えます。

rg tableName

上記のコマンドを実行すると、検索結果が瞬時に表示されます。
image.png

インストール

詳しいインストール手順は、公式GitHubページをご参照ください。


以上、今回はairClosetで日常的に使っている便利なコマンドラインツールを3つご紹介しました。これらを活用することで、作業効率を大幅に向上させることができます。ぜひ試してみてください!

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?