2016-10-28 4 views
0

私はインターネット上で多くを検索しましたが、まだこれについて有用な情報は見つかりませんでした。 PFTPでは 'IF'や 'WHILE'のようなループを実行できませんか?PSFTPはループを実行できますか?

もしそうであれば、私は構文を知らせてください、私はそれに対して頭を打つことを試みています。うんざりすると、PuTTYはこれらのコマンドを許可しますが、psftpは両方とも同じファミリーのものであっても見えません。私は本当にこれに解決策があることを願っています!

+0

いいえ。 psftpは "プログラミング言語"ではありません。ループが必要な場合は、ELSEを使用し、その何かをpsftpにコマンドを送信するために使用します。 –

+0

ありがとう@MarcBそれは理にかなっています。しかし、私はどのようにこれを達成するか分からない。私は、特定のファイルがリモートサーバ上で削除されているかどうかを確認するためにwhileループを使いたいのですが、サーバからログファイルをダウンロードしていれば、 'while [! -f /tmp/foo.txt];睡眠2; done get FileWriter1.log' –

+0

psftpを使用しないでください。 sftp接続をサポートするいくつかの他の言語を使用し、そこでループする。 –

答えて

0

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

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

ループやwhatevsの中にこのような混乱を残すことができます。ここでは、実行するリモートコンピュータにコマンドtest -f /tmp/foo && echo 'true' || echo 'false'を送信しているということです。コマンドの標準出力が返され、変数fileExistsに格納されます。それから、テストします。

Windowsの場合は、これをバッチスクリプトに変換し、plink.exeを使用してkind of like they do hereというコマンドを送信できます。あるいは、SSHとSFTPクライアントを使ってあなたのコンピュータにcygwinを置き、上記のものを使うこともできます。

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

+0

ありがとう@JNevill!これは本当に役立ちます、私はこれを試してみると、どのように行ったか、または何か問題に直面した場合、より多くの助けのためにあなたを気にさせる:) –

+0

これは完璧に、感謝 'JNevill!ちょうど私がこれに直面した1つの問題は、ユーザー名のパスワードはバッチファイル内で供給することができず、バッチファイルを呼び出すときにコマンドラインで個別に実行する必要があります。私は次のコードを使用しました: 'plink username @ host -pw password -m" C:\ PATH \ PlinkTest.bat "-v' –

+0

また、ファイルが存在すれば、リモートサーバーからログファイルを取得します。私は次のコードを使用しました: 'if $ fileExists; "Q:\ PuTTY \ psftp cd/home/LOGS /" "Q:\ PuTTY \ psftpはFileLog.log"を取得しますが、これは機能しません。私は明らかにコマンドを正しくここに渡していませんが、正しい構文が何であるかわかりません。あなたは助けてもらえますか?また、再帰的に呼び出す方法をアドバイスできます。ファイルが存在しない場合は、ファイルが表示されるまでチェックを続け、上記のようにログファイルをダウンロードします。 –

関連する問題