私はリモートホストの設定を自動化しようとしています。これらのデバイスは数多くあります。通常はUSBプログラミングで行いますが、それをプログラム的に行うと、時間がなくなります。SSH.NETを使用したリモートホストへの接続
これらのデバイスはいくつかのタイプのLinux OSを実行しますが、正確にはわかりませんが、PuTTYなどのユーティリティを使用して最初に接続すると、SSHが有効になり、サーバのホスト鍵を確認します。
今のところ、私はデバイスとのSSHセッションを開始しようとしています。私はかなりの研究をしており、これを思いついた:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Renci.SshNet;
using Renci.SshNet.Common;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//Connection information
string user = "admin";
string pass = "********";
string host = "IP Address";
//Set up the SSH connection
using (var client = new SshClient(host, user, pass))
{
//Accept Host key
client.HostKeyReceived += delegate (object sender, HostKeyEventArgs e)
{
e.CanTrust = true;
};
//Start the connection
client.Connect();
var output = client.RunCommand("show device details");
client.Disconnect();
Console.WriteLine(output.ToString());
Console.ReadLine();
}
}
}
}
問題は、このコマンドが実行されていないようです。コンソールウィンドウが表示され、WebGUIで同じデバイスにアクセスし、ログファイルを見ると接続が確立されていることがわかりますが、実行を中断して変数値を見ると出力変数にnullが表示されます。
コンソールウィンドウを開いたままで実行すると(左上に点滅するカーソルが表示されます)、10分後に接続がタイムアウトして接続が失われ、デバイスログにも表示されます。
なぜ、これは実行コマンドを実行して結果を出力変数に格納していないようですか?
これらのデバイスは、ssh exec要求をサポートしていない可能性があります。コマンド行から 'ssh admin @ host 'show device details''を実行して、期待される出力が得られるかどうか確認してください。 – Kenster