0

私はインターネットでたくさん検索しましたが、まだ有用な情報を見つけることができませんでした. PFTP では、'IF' や 'WHILE' などのループをまったく実行できませんか?

もしそうなら、構文を教えてください。私はそれに頭をぶつけようとしています。厄介なことに、PuTTY ではこれらのコマンドが許可されていますが、psftp では、両方が同じファミリに属しているにもかかわらず、許可されていないようです。これに対する解決策があることを本当に願っています!

4

1 に答える 1

0

PSFTP は言語ではありません。これは単なる SFTP クライアントです。SFTP 自体は、コンピューター間でファイルを移動するための単なるプロトコルです。リモート コンピューターに SFTP がセットアップされている場合は、SSH が実行されていることが示唆されます (通常、SFTP は SSH サーバーのインストールにバンドルされているため)。

たとえば、bash シェル スクリプトでテストを実行して、リモート サーバーにファイルが存在するかどうかを確認し、その結果に基づいて psftp コマンドを実行できます。何かのようなもの:

#!/bin/bash

# test if file exists on remote system
fileExists=$(ssh user@yourothercomputer "test -f /tmp/foo && echo 'true' || echo 'false'")

if $fileExists; then
    psftp <whatever>
fi

その混乱全体をループなどに貼り付けることができます。ここで何が起こっているかというと、test -f /tmp/foo && echo 'true' || echo 'false'実行するコマンドをリモート コンピューターに送信しているということです。コマンドの stdout が返され、変数に格納されますfileExists。あとはテストするだけです。

Windows を使用している場合は、これをバッチ スクリプトに変換し、plink.exe を使用して、ここで行うようにコマンドを送信できます。または、SSH および SFTP クライアントを使用してコンピューターに cygwin をインストールし、上記のものを使用するだけです。

ここで重要なことは、ループを実行し、テストに基づいて psftp を実行するための別のスクリプト環境が必要になることです。

于 2016-10-28T20:12:57.750 に答える