私は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>
が書かれていることがわかります。ホストがそれを受け取る準備が整う前にコマンドが入力され、その結果、何らかの反応が生じるまでコマンドがハングアップすることがありますか?
それは私達にメッセージを表示する?「カスタムタイムアウト・メッセージ」とは何を意味しているの! –
あなたが任意のスタンドアロンSSHクライアントを使用して 'AT'コマンドを自動化することができますか?PuTTYの?OpenSSHの'ssh'?Plink? –
私はまだ"カスタムアイドルタイムアウト "出力に表示されます。 –