2016-10-12 25 views
2

私はSSH.NETを使ってSSH経由で簡単なコマンドを送信しようとしています。最も簡単なテストコードでさえ失敗します。ここにスニペットがあります。SSH.NETがデバイス上でコマンドを実行していません

using (var ssh = new SshClient("ip", port, "username", "password")) 
{ 
    ssh.Connect(); 
    while (true) 
    { 
     var result = ssh.RunCommand("AT").Execute(); 
     Console.Out.WriteLine(result); 
    } 
} 

ATコマンドはエコーバックする必要がありますが、そうしないでください。代わりに、私はSSHターゲットによって発行されたカスタムタイムアウトメッセージを受け取ります。私は、それが使用するプロンプトに対応するタイムアウトメッセージのデバイス名を見ることができます、そして、私はログインが動作する(様々なSSHプログラムでもテストされますが)コマンド自体は実行されないと結論づけることができます。コマンドには\n\r\nを追加しようとしましたが、結果は表示されませんでした。私は間違って何をしていますか?

編集1: 結果は\r\nCommand Line Interface\r\nDeviceName> Custom idle timeoutです。私は、行末がVisual StudioによってWindowsの行末に変換されると思います。

編集2: Plinkを使用すると、という結果がVisual Studioと同じ出力になります。 Plinkはタイムアウトまで待って終了し、log.txtには\r\nCommand Line Interface\r\nDeviceName> Custom idle timeoutが含まれています。パテを使用して

私はあなたがコマンドの入力を開始する前に、

Using username "username". 
[email protected]'s password: 

Entering character mode 
Escape character is '^]'. 

Command Line Interface 
DeviceName> 

が書かれていることがわかります。ホストがそれを受け取る準備が整う前にコマンドが入力され、その結果、何らかの反応が生じるまでコマンドがハングアップすることがありますか?

+1

それは私達にメッセージを表示する?「カスタムタイムアウト・メッセージ」とは何を意味しているの! –

+0

あなたが任意のスタンドアロンSSHクライアントを使用して 'AT'コマンドを自動化することができますか?PuTTYの?OpenSSHの'ssh'?Plink? –

+0

私はまだ"カスタムアイドルタイムアウト "出力に表示されます。 –

答えて

0

あなたのサーバーは、明らかにSSHの「0125」の後ろに使用されている「exec」チャンネルと、PLinkのplink.exe commandの構文をサポートしていません。

実際にはサポートしていますが、間違っています。コマンドを実行する代わりに、対話型セッション(シェル)を開始するようです。

この仮定を確認するには、PLINKでこれを試してみてください。

をそれが動作する場合、これは一般的ですが、あなたが代わりにSshClient.RunCommandSshClient.CreateShell(SSH「シェル」チャンネル ")を使用する必要があるかもしれません。 wrong approachは、あなたが原因あなたの壊れたサーバーにこのアプローチを取る必要があります。

関連する問題