シェルスクリプトsftpファイルの使用

シェルスクリプトsftpファイルの使用

いくつかのスレッド(ヘルプ)を読みましたが、ファイルをSFTPとして試みるとエラーが発生します(クライアントがSFTPで編集しようとしています)。

スクリプトは次のとおりです。

#!/bin/bash 
HOST=XX.XX.XX.XX
PORT=XXXX
USER=root
FILE=/tmp/RANDY

/usr/bin/expect<<EOD

spawn sftp -o Port=$PORT $USER@$HOST
expect "sftp>"
spawn put $FILE
interact
EOD

私が受け取ったエラーは次のとおりです。

spawn sftp -oPort=XXXX [email protected]
Connecting to XX.XX.XX.XX...
sftp> spawn put /tmp/RANDY
couldn't execute "put": no such file or directory
    while executing
"spawn put /tmp/RANDY"

ファイルが存在し、正しいディレクトリにあります。

答え1

spawnExpectスクリプトの2番目の項目は必要でありsend、ビルドプロセスに送信されたものを引用し、CR(キャリッジリターン、Enterとも呼ばれる)を省略しました。

send "put $FILE\r"

また、このinteractコマンドは必要ないかもしれません。これはもっと意味があるかもしれません:

expect "sftp>"
send "exit\r"

答え2

パスワードや認証が発生した場合は、まず認証し、そのエラーが発生しないようにする必要があります。

関連情報