LoginSignup
0
0

More than 1 year has passed since last update.

パスワード認証のサーバでSSH接続を自動化する方法

Last updated at Posted at 2021-07-03

遠隔サーバにてコマンドを自動実行するにあたり必要になったのでメモ

connect.sh
#!/bin/bash

# 接続先情報
SSH_USER=work
SSH_PASS=hoge
SSH_HOST=localhost
REMOTE_CMD=$1


# 後述のSSH_ASKPASSで設定したプログラム(本ファイル自身)が返す内容
if [ -n "$PASSWORD" ]; then
  cat <<< "$PASSWORD"
  exit 0
fi

# SSH_ASKPASSで呼ばれるシェルにパスワードを渡すために変数を設定
export PASSWORD=$SSH_PASS

# SSH_ASKPASSに本ファイルを設定
export SSH_ASKPASS=$0
# ダミーを設定
export DISPLAY=dummy:0

# SSH接続 & リモートコマンド実行
RET=`exec setsid ssh $SSH_USER@$SSH_HOST $REMOTE_CMD`
echo $RET

shellで実行
$ ./connect.sh "date"

crontabで実行
chmod +x connect.sh
*/1 * * * * /home/hoge/connect.sh "date" >> /home/hoge/resalt.log

活用

command.sh
/home/work/connect.sh 'date' >> /home/work/date.log
/home/work/connect.sh 'ls -la |grep "data.log"' >> /home/work/file.log

備考
・expectコマンドは、バックグラウンドで実行されるような場合には利用できない(cronなど)
・このような場合にはssh_askpassを利用する

参考
https://qiita.com/wadahiro/items/977e4f820b4451a2e5e0

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