[英]How to telnet from remote server - c#
telnet的新手。 有一個服務器列表,我需要檢查每個服務器是否能夠通過端口(25)成功地telnet某個服務器(10.20.30.100)。
這個想法是讓一個控制台應用程序從一個地方運行,它將檢查所有列出的服務器。
遵循@freedomn -m的解決方案,但仍然存在。
var centralServer = "10.20.30.100";
var centralPort = 25;
var servers = "11.12.13.201,11.12.13.202,11.12.13.203";
var telnetPort = 23;
foreach (var server in servers.Split(','))
{
TcpClient tc = null;
try
{
tc = new TcpClient(server, telnetPort);
tc.Client.Send(System.Text.Encoding.ASCII.GetBytes("telnet " + centralServer + " " + centralPort));
}
catch (SocketException se)
{
// telnet failed on 'server'
}
finally
{
if (tc != null)
{
tc.Close();
}
}
}
即使中央服務器或中央端口無效/不正確,也不會發生異常。 代碼仍然繼續完成for循環。 我不知道服務器是否能夠成功進行telnet。 我應該如何進一步。
考慮一下沒有代碼怎么做。
正如您所描述的,您有許多服務器,每個服務器都需要能夠遠程登錄到中央服務器-您想從一個地方檢查它們是否可以。
如果沒有代碼,您將遠程登錄到遠程服務器,然后在該服務器上通過遠程登錄客戶端將遠程登錄請求發送到目標服務器。 (如果僅使用telnet,則還有其他方法,例如RPC)。
除非在遠程服務器上部署您的應用程序(這是c的選項),否則您無法在遠程服務器上執行C#代碼。
更新代碼:
var centralServer = "10.20.30.100";
var centralPort = 25; // 25 as per OP
var servers = "11.12.13.201,11.12.13.202,11.12.13.203";
var telnetPort = 23;
foreach (var server in servers.Split(','))
{
TcpClient tc = null;
try
{
tc = new TcpClient(server, telnetPort);
tc.Client.Send(System.Text.Encoding.ASCII.GetBytes("telnet " + centralServer + " " + centralPort));
// tc.Client.Receive
}
catch (SocketException se)
{
// telnet failed on 'server'
}
finally
{
if (tc != null)
{
tc.Close();
}
}
}
由於此問題與如何通過telnet發送/接收無關,因此我將其留給您完成。
另外:有許多C#telnet庫使連接/發送命令/接收響應變得更加容易。
編輯:更新了端口以使用telnet端口。 http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers中央服務器端口可能是23或25,具體取決於原始帖子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.