1

SSH.NETを使用して (ユーザー名 + パスワードで) サーバーに接続し、いくつかのコマンドを実行しています。Cisco Application Control Software 経由で一部のコンポーネントを管理するためにサーバーに接続されますが、コマンドはそのまま送信されるため問題ありません。

サーバーへの接続は正常に機能し、他のすべてのコマンドも機能しますが、特定の 2 つのコマンドが機能しません。その理由がわかりません。
失敗するコマンドは、changeto Productionおよびterminal length 0です。
私のコードは非常に単純です(質問のために単純化されていますが、同じフローです):

using (var client = new SshClient(serverIP, port, username, password)
{
    client.Connect();
    var cmd = Client.RunCommand("terminal length 0");
    cmd = client.RunCommand("changeto Production");
    // Other command follow
}

パテを介して同じコマンドを実行している間は機能しますが、そうでchangetoはありませんchange to
ここでの問題は、コードを介してスコープを変更すること (プロダクションに変更すること) だと思いますが、その理由がわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

SSH.NET ライブラリの CodePlex フォーラムを検索して質問した結果、RunCommand()関数が呼び出しごとに新しいシェルを作成するという問題を理解しました。
新しいシェルはデフォルトの環境で作成されます。 および は次のコマンドのランタイム環境を変更するためterminal length 0changeto Productionこれは では実現できませんRunCommand()
最終的には、シェル ストリームから直接読み書きし (を使用)、必要な出力を取得して解析するためにSshClient.CreateShellStream()遊んでいました。Expect()このようにして、すべてのコマンドが同じシェルで実行されます。

于 2013-08-10T10:39:37.597 に答える