リモートSSHログイン用の対話型スクリプト[閉じる]

リモートSSHログイン用の対話型スクリプト[閉じる]

過去数日間、私は初めてbashスクリプトに触れました。複数のサーバー/デバイスに接続できる非常に簡単なものを作りたいです。私の考えは、FQDNと説明を含むすべてのデバイスのリスト(txtファイル)を持つことです。スクリプトはリストを読み取り、すべてのデバイスをリスト形式(IDの追加など)で表示する必要があります。その後、デバイスのIDをリンクすると、スクリプトはそのデバイスに接続します。どうすればいいですか?

よろしくお願いします。

答え1

select次のコマンドを使用できます。

#!/usr/bin/env bash

readarray -t servers < input_file.txt

[[ ${#servers[@]} -eq 0 ]] && exit 1

select server in "${servers[@]}"; do
   IFS= read -r -p "Enter username: " username
   ssh "${username:-default}@${server:-${servers[0]}}"
done
  • readarrayサーバーを配列として保存します。ファイルなしでサーバーを手動で保存することもできます。servers=(server1.com server2.com)
  • selectその後、いずれかのサーバーに対応する番号を入力するように求められます。
  • 無効なオプションを入力すると、${server:-${servers[0]}}ファイルの最初のサーバーアドレスが使用されます。
  • readユーザー名を入力するように求められます
  • 空のユーザー名を入力すると(メッセージが表示されたらEnterキーを押すなどread)、選択したユーザー名が${username:-default}使用されます。default

関連情報