いくつかのスレッド(ヘルプ)を読みましたが、ファイルを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
spawn
Expectスクリプトの2番目の項目は必要でありsend
、ビルドプロセスに送信されたものを引用し、CR(キャリッジリターン、Enterとも呼ばれる)を省略しました。
send "put $FILE\r"
また、このinteract
コマンドは必要ないかもしれません。これはもっと意味があるかもしれません:
expect "sftp>"
send "exit\r"
答え2
パスワードや認証が発生した場合は、まず認証し、そのエラーが発生しないようにする必要があります。