Я пытаюсь автоматизировать настройку удаленных хостов, у нас есть сотни таких устройств, мы обычно делаем это через USB-программирование, но если бы я мог получить скрипт для подключения к этим устройствам и сделать это программно, это освободило бы время.
На этих устройствах работает какой-то тип ОС Linux, я точно не уверен, но они имеют включенный SSH и подтверждают ключи хоста сервера при первом подключении к ним с помощью такой утилиты, как PuTTY.
На данный момент я просто пытаюсь инициировать сеанс 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 и просмотреть файл журнала, он показывает установленное соединение, но когда я прерываю выполнение и вижу значения переменных, выходная переменная показывает нуль.
Если я оставлю выполнение с открытым окном консоли (просто показывает мигающий курсор в левом верхнем углу), время ожидания соединения истекает через 10 минут, и соединение теряется, что я также вижу в журнале устройства.
Почему это не выполняет команду run и не сохраняет результаты в выходной переменной?
ssh admin@host 'show device details'
из командной строки и посмотрите, получите ли вы ожидаемый результат. - person Kenster   schedule 19.10.2016