2

今のところ簡単なタスクがあります。リモートサーバーに接続して、ファイルとその情報(特に作成日)のリストを取得します。

JSchを試しましたが、20年前にUNIXアプリを書いているようなものです。sshjに切り替えたいので、可能であれば、少なくともファイルリストとその情報を取得する方法に関するコードを提供してください(理想的には、Fileオブジェクトの配列を取得したいと思います)。

では、どうすれば目標を達成できますか?

前もって感謝します。

注:AFAIUは、サーバー側にlsを配置して解析することによってのみ可能ですよね?

4

3 に答える 3

3

ソースディストリビューションにバンドルされた例があります。あなたはそれらを見ましたか?私はこれを2分で見つけました:sshj:リモートコマンドの例を実行する方法

編集:

たとえば、(リンクした例に基づいて)実行できます。

final Command cmd = session.exec("ls -l /some/interesting/dir");
String lsOutput = cmd.getOutputAsString();

// parse lsOutput and extract required information
...

ファイルなどの概念がないため、やり直したい場合は簡単な方法はありませんssh。これは単なるリモートシェルです。ここでより良いインターフェースを提供できるかもしれsftpませんが、私はの専門家ではありませんsftp

于 2011-03-30T10:10:40.447 に答える
3

これがsftp(JSCH)のコードです

ChannelSftp sftp = (ChannelSftp)session.openChannel("sftp");
sftp.connect();
sftp.cd(DIRECTORY);
Vector v = null;
v = sftp.ls("*.txt"); //txt files only

キーファイルで使用:
JSch jsch = new JSch();
jsch.setKnownHosts(myKonfig.getKnownHostsFile());
String privKeyFile = myKonfig.getPrivateKeyFile();
jsch.addIdentity(privKeyFile);

于 2011-03-30T10:44:27.313 に答える
1

おっと、作成時間ではなく、変更時間だけが返されることを確認しました。

リモートシステムからファイル情報を取得するだけの場合は、sshj内で提供されるSFTPClientクラスを使用することをお勧めします。

使用:

SFTPClient.ls(directory)

コマンドを使用してすべてのリモートファイルを検索し、次を使用します。

SFTPClient.stat(file)

変更日を含むすべての情報をリモートファイルから取得します。

于 2011-03-30T10:39:00.717 に答える