ユーザーがパスワードを求められることなく、sftp を使用してファイルを転送するために、いつでもパスワードなしの ssh を構成できます。ただし、パスワードなしの ssh の構成が許可されていない場合は、sftp ファイル転送を自動化する方法があります。 「expect」を使用して達成できます ‘ Tcl シェルによって提供されるコマンド。
expect ユーティリティを機能させるには、「expect」パッケージをインストールする必要があります。これを行うには、以下のコマンドを使用します:
# yum install expect
以下は、バッチ ファイルを使用してリモート アクセスを自動化するスクリプトの例です。
#!/bin/bash if (( $# < 3 )); then echo "Usage: $0 [remote addr] [password] [batch file]" echo echo -e "tremote addr : [loginid]:[host addr]n" exit fi REMOTE=$1 PASS=$2 BATCH=$3 expect -c " spawn sftp -o "batchmode no" -b "$BATCH" $REMOTE expect -nocase "password:" {send "$PASSr"; interact} "
ここで、
spawn - to initiate the sftp process expect - it expects a particular string ( here it is "password:" prompt ) send - sends the password when the expect utility gets the required prompt.
パスワード「password」を使用して root としてログインした後、remote.example.com の testjob.bat のコマンドを実行するスクリプトを実行する方法の例を次に示します。
# bash ./test.sh [email protected] password testjob.bat