シェルスクリプトを使用してSFTPサーバー内のファイルにアクセスして操作しようとした人はいますか 基本的に、私がしなければならないことは次のとおりです。 'XX' 部分文字列を含むファイルのみを取得します (つまり、hello-XX.txt) 4. 「-OK」文字列を追加して、そのファイルの名前を変更します (iehello-XX-OK.txt)
ご意見ありがとうございます。
「ヒア ドキュメント」(ここ<<EOF
で指定されている) を使用して SFTP のスクリプトを作成できますが、SFTP スクリプトでシェル スクリプトのようなプリミティブ (a la bash) を使用することはできません。
SSH アクセス権がある場合は、代わりに SSH ベースのスクリプトを試してください。
あなたの説明では、sftp サーバーでロジックを実行する必要はありません。sftp コマンドを使用してデータを取得し、ローカルで処理を行うことができます。
for file in $(echo 'ls -1' | sftp blah | tail -n +2); do
# do stuff
done
これが私が自分の目的のために働いた出発点です。パスワードを指定できるように使用しsshpass
ていますが、RSA公開鍵を適切に交換していれば、余分なグーを削除できるはずです。
#!/bin/bash
function sftpexec()
{
(SSHPASS="password" sshpass -e sftp user@server | tail -n +2) << !
$1
!
}
FILES=$(sftpexec ls)
echo $FILES
これにより、サーバー上のすべてのファイルが開始ディレクトリにリストされます。
これが期待するものです。だいたい:
#!/PATH/TO/expect -f
spawn sftp host
expect -re "Username:"
send -- "MYUSER\r"
expect -re "Password:"
send -- "PASSWORD\r"
expect -re "ftp>"
send -- "cd mydir\r"
expect -re "ftp>"
send -- "get myfile\r"
...