接続先サーバーで特定のシェルファイルを自動で実行するために、前回のスクリプトを少し変更して、SSH接続時にファイルを指定して実行することができます。
以下は、接続先サーバーのシェルファイルを指定して自動実行するシェルスクリプトの例です。
#!/bin/bash
# 引数の確認
if [ "$#" -ne 4 ]; then
echo "Usage: $0 <username> <ssh_key_file> <hostname> <remote_script_path>"
exit 1
fi
USERNAME=$1
SSH_KEY_FILE=$2
HOSTNAME=$3
REMOTE_SCRIPT_PATH=$4
# SSH接続とリモートスクリプトの実行
ssh -i "$SSH_KEY_FILE" "$USERNAME"@"$HOSTNAME" -t "bash -s" < "$REMOTE_SCRIPT_PATH"
スクリプトの説明:
- 引数の数を4つ(ユーザー名、SSH鍵ファイル、ホスト名、リモートスクリプトのパス)に増やしました。
ssh
コマンドを使って、リモートシェルで指定されたスクリプトを実行します。bash -s
オプションによって、標準入力からスクリプトを読み込み、リモートで実行します。
使用方法:
- このスクリプトをファイルに保存します(例えば
ssh_execute.sh
)。 - 実行権限を付与します:
chmod +x ssh_execute.sh
- スクリプトを実行します:
./ssh_execute.sh <username> <path_to_ssh_key> <hostname> <local_script_path>
注意:
<local_script_path>
は、実行したいローカルのシェルスクリプトのパスです。このスクリプトがリモートに転送され、実行されます。- リモートサーバーで実行したいスクリプトファイルが、サーバー上にすでに存在する場合は、次のように書き換えることができます:
ssh -i "$SSH_KEY_FILE" "$USERNAME"@"$HOSTNAME" "bash $REMOTE_SCRIPT_PATH"
この場合は REMOTE_SCRIPT_PATH
はリモートサーバー上のパスになります。