Solved

Program Cisco switches by C#

Posted on 2009-05-17
3
2,437 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
  • 2
3 Comments
 
LVL 68

Accepted Solution

by:
Qlemo earned 250 total points
Comment Utility
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
Comment Utility
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 68

Expert Comment

by:Qlemo
Comment Utility
AFAIK there is no other way.
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
.NET Error 7 41
Replacing a switch in a 3com 5500 switch stack 2 39
Expando 4 33
XML & .net 5 16
A basic question.. “What is the Garbage Collector?” The usual answer given back: “Garbage collector is a background thread run by the CLR for freeing up the memory space used by the objects which are no longer used by the program.” I wondered …
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…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

771 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now