1

シェルスクリプトを使用してSFTPサーバー内のファイルにアクセスして操作しようとした人はいますか 基本的に、私がしなければならないことは次のとおりです。 'XX' 部分文字列を含むファイルのみを取得します (つまり、hello-XX.txt) 4. 「-OK」文字列を追加して、そのファイルの名前を変更します (iehello-XX-OK.txt)

ご意見ありがとうございます。

4

5 に答える 5

0

「ヒア ドキュメント」(ここ<<EOFで指定されている) を使用して SFTP のスクリプトを作成できますが、SFTP スクリプトでシェル スクリプトのようなプリミティブ (a la bash) を使用することはできません。

SSH アクセス権がある場合は、代わりに SSH ベースのスクリプトを試してください。

于 2013-10-23T02:31:34.797 に答える
0

あなたの説明では、sftp サーバーでロジックを実行する必要はありません。sftp コマンドを使用してデータを取得し、ローカルで処理を行うことができます。

for file in $(echo 'ls -1' | sftp blah | tail -n +2); do
  # do stuff
done
于 2013-10-23T02:33:24.393 に答える
0

これが私が自分の目的のために働いた出発点です。パスワードを指定できるように使用しsshpassていますが、RSA公開鍵を適切に交換していれば、余分なグーを削除できるはずです。

#!/bin/bash

function sftpexec()
{
    (SSHPASS="password" sshpass -e sftp user@server | tail -n +2) << !
$1
!
}

FILES=$(sftpexec ls)
echo $FILES

これにより、サーバー上のすべてのファイルが開始ディレクトリにリストされます。

于 2014-02-26T01:50:32.630 に答える
0

これが期待するものです。だいたい:

#!/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"
...
于 2013-10-23T02:29:58.507 に答える