Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Program Cisco switches by C#

Posted on 2009-05-17
3
Medium Priority
?
2,620 Views
Last Modified: 2013-12-17
Hi
I want to use System.Net.Sockets.TcpClient class in .Net framework to configure a Cisco switch or router. Does anyone has any samples or how to?
I already have written the below code. When I run it, I don't get what I expect.
public class Cisco
    {
        private TcpClient _client;
 
        //private event EventHandler<
 
        private TcpClient Client
        {
            get
            {
                if (_client == null)
                    _client = new TcpClient();
                return _client;
            }
        }
 
        public Cisco(IPEndPoint endPoint)
        {
            Client.Connect(endPoint);
            var s = Read();
        }
 
        public string RunCommand(string command)
        {
            if (!command.EndsWith("\r\n"))
                command = string.Format("{0}\r\n", command);
            var buffer = ASCIIEncoding.ASCII.GetBytes(command);
            Client.GetStream().Write(buffer, 0, buffer.Length);
            var s = Read();
            return s;
        }
 
        private string Read()
        {
            var buffer = new Byte[Client.ReceiveBufferSize];
            var read = new List<string>();
            while (Client.GetStream().DataAvailable)
            {
                var state = new object[] { Client.GetStream(), buffer, null };
                var ia = Client.GetStream().BeginRead(buffer, 0, buffer.Length, new AsyncCallback(Read), state);
                ia.AsyncWaitHandle.WaitOne();
                read.Add(ASCIIEncoding.ASCII.GetString(buffer.Take((int)((object[])ia.AsyncState)[2]).ToArray()));
            }
            return string.Concat(read.ToArray());
        }
 
        private void Read(IAsyncResult ar)
        {
            var state = ar.AsyncState as object[];
            var stream = state[0] as NetworkStream;
            var buffer = state[1] as byte[];
            var br = stream.EndRead(ar);
            state[2] = br;
        }
    }
 
     static void Main(string[] args)
        {
             Cisco c = new Cisco(new IPEndPoint(IPAddress.Parse("172.16.1.147"), 23));
            Console.Write(c.RunCommand("PASSWORD"));
            Console.Write(c.RunCommand("enable"));
            Console.Write(c.RunCommand("ENABLE PASSWORD"));
            Console.Write(c.RunCommand("show run"));
            Console.Write(c.RunCommand("exit"));
            Console.Read();
        }

Open in new window

0
Comment
Question by:TheMehrdad
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 71

Accepted Solution

by:
Qlemo earned 750 total points
ID: 24406886
Telnet expects some negotiation of options like emulation, echo aso. If you like, you can have a look at the netcat source, it is a tool for streaming stuff thru a telnet connection, but be warned, it is complex and the source comments are rude :-|.

0
 
LVL 5

Author Comment

by:TheMehrdad
ID: 24412267
Dear Qlemo,
Thanks for your comment. Is there any other way to configure a Cisco Switch/Router programatically? If Telnet is the only solution, so I will deal with this netcat.
0
 
LVL 71

Expert Comment

by:Qlemo
ID: 24413387
AFAIK there is no other way.
0

Featured Post

New benefit for Premium Members - Upgrade now!

Ready to get started with anonymous questions today? It's easy! Learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question