問題タブ [sshj]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java: sshj を介してリモート マシンでプロセスを開始し、プログラムを続行し、その後プロセスを停止します (dstat)
を使用して、Java プログラムから ssh 経由でリモート マシン上で dstat を実行しようとしていますsshj library
。
私がする必要があるのは、リモート マシン (Linux) で dstat を開始し、プログラムを続行してリモート マシン (データベース サーバー) に負荷をかけ、dstat
その後ログを停止することです。
これまでに行ったこと:サーバーに接続し、dstatフォルダーをにコピーし/tmp/dstat
、ファイルを実行可能にしてから:
問題は、dstat
プロセスがリモートマシンで開始され、.csv
ファイルに記録されますが、Java プログラムはプロセスが終了するのを待ちます。そのため、次の行にsession.exec()
は到達しません。
また、コマンドだけを含むリモートサーバーでローカルスクリプトを実行しようとしましたdstat
が、それでも私のプログラムはdstat
終了するのを待っていますが、決して起こりません...
私の質問はdstat
、リモート マシンで実行中にプログラムを続行するにはどうすればよいかということです。そして、それが達成されたときdstat
、プログラムが本来行うべきことを終えた後、どうすれば停止できますか? 別のスレッドなどを実行する必要がありますか? それがどのように機能するのか本当にわかりません...
(コードを実行するマシンも Linux です)
java - scp コマンドの -f の意味は何ですか?
scp コマンドの送信にライブラリsshjを使用しています。サーバーから別のサーバーにダウンロードするには、オプション -f を使用します。man に -f オプションが見つかりません。
scp コマンドの -f の意味は何ですか?
java - runtime.exec を使用して SFTP コマンドを送信する
Java のクラス Runtime を使用して、sftp サーバーからファイルをダウンロードしたいと考えています。-B オプションを使用してバッファ サイズを増やす必要があるため、Jsch や SSHJ などのライブラリを使用できません。これまでにこのコードを試しました:
次のエラー メッセージが表示されます。「xxxxxx に接続しています...」の代わりにホスト名が表示されます。
コマンドをパテで直接試してみましたが、うまく機能しますが、Javaで使用するとまったく機能しません。また、sftp の代わりにダウンロードするために runtime.exec() を使用して scp コマンドを試しましたが、それは機能します。
なぜそれが機能しないのか、誰かが手がかりを持っていますか? この方法では例が見つかりません。または、誰かが -B オプションを設定できる sftp 転送用のライブラリを知っていますか? Jsch と Sshj のメソッドを見逃している可能性があります。
前もって感謝します
java - SSHJ が非標準ポートでアウトバウンド SFTP を開始するようにするにはどうすればよいですか?
私はこれを行っており、正常に動作しますが、22 以外のポートで sshd をヒットできるようにしたいと考えています。
java - SSH 経由で複数のコマンドをデバイスに送信する
SSHJ ライブラリを使用して複数のコマンドをデバイスに送信しようとしています。この形式で複数のコマンドを送信するオプションがあります。
これは機能しますが、私の場合は常に使用できるとは限りません。2番目の回答hereなどの他の提案を見つけました。
この提案を試みると、最初のコマンドは正常に機能し、次のエラーの間を循環します。
また
使用されるコードは次のとおりです。
必要に応じて、接続先のデバイス、および接続先のデバイスの大部分がシスコのネットワーク機器であることに注意してください。
ご協力ありがとうございます。-ジャロッド
java - sshj、長時間実行コマンドから InputStream を読み取る
長時間実行コマンドの stdout から読み取りたい。出力を送信するプログラムがあり、応答を送信する必要があります。
問題は、inputstream に何も届いていないことです。
私がやっていることは、コマンドを実行し、コマンドから InputStream を取得し、そこから読み取ろうとしていることです。
ここで、is.available()
は常にゼロです。その条件なしで読んだ場合、読み取りは永久にブロックされます。
実行中のプログラムの stdout を読み取るにはどうすればよいですか?
java - connect() 時の Android SSHJ 例外 - 「KeyFactory ECDSA 実装が見つかりません」
Android アプリから SSH クライアント セッションを開こうとしています。ローカル ネットワーク上のデバイス (Raspberry Pi) に接続しようとしています。SSHJライブラリ バージョン 0.10.0を使用しています。ssh.connect()
呼び出しに失敗し、TransportException
最終的には が原因NoSuchAlgorithmException
です。以下の例外ツリーを参照してください。
例外ツリー:
その他のシステム情報:
Android Studio の maven 依存関係サポートを使用して SSHJ JAR を取り込み、SSHJ v0.10.0 jar に加えて次の 3 つのライブラリを取り込みました...
この例外をどこから始めればよいかわかりません...どんな提案でも大歓迎です! ありがとう。
更新: 2014 年 10 月 31 日
LeeDavidPainterの提案に従って、SpongyCastle 1.51.0 JAR をインクルードし、上部に次の行を追加しました。
同じ行で別の例外が発生しています。
また、同じ結果で次の行も試したことに注意してください。
私の携帯電話には、基本的に私が達成したいことを正確に実行する別のアプリがあります-RaspberryPiControllerと呼ばれます-ユーザー名とパスワード認証を使用してSSH経由でRPiに接続します。これは正常に機能するため、ネットワークの問題ではないようです。
java - SSHJ がセッションを開始しようとすると、SSH_MSG_UNIMPLEMENTED になります
私は Windows マシンを使用しており、SSH を使用してリモートの Solaris マシンに接続し、コマンドを実行して出力を取得できる Java コードを作成する必要がありますが、認証に問題があります。(私は SSHJ 0.8.1 を使用しています)
セッションを接続して開始するためのコードは次のとおりです。
同じコードを使用して Apache Karaf のインスタンスに接続しようとすると (ただし、異なるホスト キー ベリファイア、アドレス、ポート、および資格情報を使用して) 動作するため、これにより接続が機能することが期待されます。代わりに、これは私が得る出力です:
また、これは Eclipse で取得したスタック トレースです。
PuTTY は、同じ資格情報を使用して、同じアドレスとポートに問題なく接続できますが、時間がかかります。ここでJavaとの接続を確立するにはどうすればよいですか?