0

プログラムは .RunCommand() でハングします。本当に基本的なものが欠けていますか?これは他の人にとっても同じコードのようで、コマンドが正しいことはわかっています。

.runco​​mmand() をコメントアウトすると、プログラムはエラーなしで実行されます。

static void Main(string[] args)
    {
       PrivateKeyFile key = new PrivateKeyFile("private");
       using (var client = new SshClient("host", "user", key))
        {
            client.Connect();
            client.RunCommand("command");
            client.Disconnect();
        }
    }

高度なヘルプに感謝します。

4

1 に答える 1

0

何に接続しようとしているのかを知っておくと役立ちます。また、コード内のエラーのチェックを検討することもできます。接続に成功したことを検証するための準備が整っていないようです...私はそこから始めます. ユーザー名とパスワードを失敗するはずのものに変更し、エラーが表示されるかどうかを確認します。

perl、python、.NET など、さまざまな SSH ライブラリを試してみました。ネットワーク デバイスへの変更を自動化するために名前を付けました。私が遭遇した最も一般的なことは、一部の接続は機能し、ログインは正常に機能しましたが、コマンドを渡そうとするとタイムアウトするか失敗するということでした. さまざまなバージョンの SSH を使用して調べましたが、違いはないようです。一部のデバイスでは、コマンドを受け入れる前に「\n」または「\l\r」のいずれかを送信する必要があるようです。Linuxボックスをテストサーバーとして使用して動作させることはできましたが、スイッチまたはWAPに接続するとコマンドを渡すことができません.

結局、私はあきらめて、AutoIT を使用して何かをまとめるか、telnet を使用しようとしました。これはほとんどの環境では悪い考えですが、perl、python、および .NET は telnet 接続で素晴らしく機能します。PHPも同様です。

多くのアプリケーション(パテ、私が思うに、およびOpenSSH)でサポートされているSSHスクリプト(ログインの成功時に渡されるコマンドを含むフラットテキストファイル)を使用してコマンドを渡すことさえできませんでした。

于 2015-04-23T11:49:50.817 に答える