Я работаю в C# и пытаюсь использовать Renci.Ss hNet для создания соединения, чтобы я мог запускать команды S SH на устройстве в моей сети. Раньше все отлично работало в программе, но когда я пытаюсь создать соединение и соединить его с ошибками, а try-catch выдает это сообщение об ошибке
System. Net .Sockets.SocketException (0x80004005) : Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, так как подключенный хост не смог ответить
в Renci.Ss hNet .Abstractions.SocketAbstraction.Connect (IPEndPoint remoteEndpoint, TimeSpan connectTimeout)
в Renci.Ss hNet .Session.Connect () в Renci.Ss hNet .BaseClient.
в Renci.Ss *1044* .Session.Connect (). Подключите ()
в SAS.JuniperCTPDriver.RemoveBundle (String IPAddr, Int32 bundleNum) в D: \ Devices \ Juniper - CTP \ Код драйвера C # \ JuniperCTPDriver.cs: строка 1028
Обновление после попытки исправить это больше.
Другое выдаваемое сообщение об ошибке:
Система. Net .Sockets.SocketE xception (0x80004005): Запрошенный адрес недопустим в своем контексте
в Renci.Ss hNet .Abstractions.SocketAbstraction.Connect (IPEndPoint remoteEndpoint, TimeSpan connectTimeout)
в Renci.Ss hNet .Session. SocketConnect (хост String, порт Int32)
в Renci.Ss hNet .Session.Connect ()
в Renci.Ss hNet .BaseClient.Connect ()
в SAS.JuniperCTPDriver.tuneJuniper ( Строка destIP, Int32 destBundle, Строка destName, Строковое устройство, Строка srcIP, Int32 srcBundle, Строка srcName, Строка srcInfo, Строка srcCircIDs, Строка destCircIDs, Строка newBundles, Драйвер Int32 srcOldBndl \ Intl \ DTP в папке Jun: DI_DIPSD_IND_IND_DINS_DINS_DINS_DINS_IND_DINS_DINS_IND_IND_DINS_IND_IND_IND_IND_IND_IND_IND_IND_IND_IND_DINS_IND_IND: in_d_D_D_IND: in_DB: Код C # \ JuniperCTPDriver.cs: строка 1074
Если у кого-то есть понимание этой проблемы, оно будет очень признательно.
string srcIP = "FD52:A651:105:40::503";
string destIP = "an IPv6 address like the first";
int srcBundle = 1;
int destBundle = 3;
int rSrcCircID = -1;
string srcName = "se-0/0";
string destName = "se-0/1";
//make sure that any already set up connections are removed
if (rSrcCircID <= -1) {
bool res = RemoveBundle(srcIP, srcBundle);
if (!res) {
Console.WriteLine("was not able to remove old connection");
}
}
//create the bundles if they do not exist yet
if (newSrcBndl == "y")
{
CreateBundle(srcIP, srcBundle, srcName);
}
if (newDestBndl == "y")
{
CreateBundle(destIP, destBundle, destName);
}
using (var destClient = new SshClient(destIP, "usrname", "pw"))
{
destClient.Connect(); //THIS IS LINE 1074
//set bundle direction for the destination
result = ExecuteSSHCommand(destClient, "cmd bndl " + destBundle + " cfg flags simplex_dst");
if (result == "false")
{
LogMsg(3, "-- destination direction flag set failed.");
return "failed3";
}
.
.
.
destClient.Disconnect();
}
Поскольку первая ошибка происходит именно в client.Connect (); оператор.
private static bool RemoveBundle(string IPAddr, int bundleNum) {
try {
using (var client = new SshClient(IPAddr, "ctp_cmd", "ctp_cmd")) {
string result;
Console.WriteLine("in using section for RemoveBundle");
client.Connect(); //ERROR IS HERE
Console.WriteLine("after connect to SSH client");
//make sure that any already set up connections are removed
result = ExecuteSSHCommand(client, "cmd bndl " + bundleNum + " disable");
Console.WriteLine("after first ExecuteSSHCommand");
result = ExecuteSSHCommand(client, "cmd bndl " + bundleNum + " delete");
if (result == "false") {
LogMsg(3, "-- source bundle deletion failed.");
return false;
}
client.Disconnect();
}
} catch (Exception ex) {
Console.WriteLine("RemoveBundle function error: \n" + ex);
return false;
}
return true;
} //end function RemoveBundle
Другая функция, на которую отправляются все команды S SH, выглядит следующим образом
private static string ExecuteSSHCommand(SshClient s, string scmd) {
try {
var command = string.Format(scmd);
var cmd = s.CreateCommand(command);
var result = cmd.Execute();
return result;
} catch {
return "false";
}
}
I все время искали кого-то с той же проблемой, но ни один из ответов не был полезен, или это была не та же самая проблема. Пожалуйста, помогите, если у вас есть опыт для этого.