次のコードは、ファイルの末尾を決して管理しません。それは単に読者の入力を待つだけです。誰も似たようなことを試みましたか?Ganymed SSHライブラリを(Clojureの)ファイルの末尾に付けるにはどうしたらいいですか?
(def output (ref []))
(import 'ch.ethz.ssh2.Connection)
(import 'ch.ethz.ssh2.Session)
(import 'ch.ethz.ssh2.StreamGobbler)
(import 'java.lang.StringBuilder)
(import 'java.io.InputStream)
(import 'java.io.BufferedReader)
(import 'java.io.InputStreamReader)
(let [connection (new Connection "hostname")]
(. connection connect)
(let [ok (. connection authenticateWithPassword "username" "password")
session (. connection openSession)]
(. session execCommand "tail -f filename.txt")
(let [sb (StringBuilder.)
stdout (StreamGobbler. (. session getStdout))
br (BufferedReader. (InputStreamReader. stdout))
]
(future (loop [line2 (. br readLine)]
(if (= line2 nil)
nil
(do
(dosync (ref-set output (conj @output line2)))
(recur (. br readLine))))
)
)
)
)
)
私はこのようなことを試みましたが、今私は純粋なJavaで試しています。問題は、Ganymedが無作為に切断されてしまったため、なぜその理由が分からないということでした。とにかくありがとう – Zubair