I'm trying to send a simple command over SSH using SSH.NET. Even the simplest test code fails. Here is a snippet.
using (var ssh = new SshClient("ip", port, "username", "password"))
{
ssh.Connect();
while (true)
{
var result = ssh.RunCommand("AT").Execute();
Console.Out.WriteLine(result);
}
}
The AT
command should echo back OK but doesn't. Instead I receive a custom timeout message issued by the SSH target. I see the device name in the timeout message which corresponds to the prompt it uses and from that i can conclude that the login works (also tested with various SSH programs) but the command itself is not executed. I tried adding
and
to the commands but to no results. What am I doing wrong?
Edit 1:
output from result is
Command Line Interface
DeviceName> Custom idle timeout
I think the line endings are converted to Windows ones by Visual Studio.
Edit 2:
Using Plink plink.exe username@ip -pw password "AT" > log.txt
results in the same output as Visual Studio. Plink waits till timeout and terminates and log.txt
contains
Command Line Interface
DeviceName> Custom idle timeout
.
Using PuTTY I see that
Using username "username".
username@host's password:
Entering character mode
Escape character is '^]'.
Command Line Interface
DeviceName>
is written before you can start entering commands. Might it be that the command is entered before the host is ready to receive it and as a result the command hangs until some reaction comes?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…