Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Program Cisco switches by C#

Posted on 2009-05-17
3
Medium Priority
?
2,657 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 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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Arrow Electronics was searching for a KVM  (Keyboard/Video/Mouse) switch that could display on one single monitor the current status of all units being tested on the rack.
Hello there! As a developer I have modified and refactored the unit tests which was written by fellow developers in the past. On the course, I have gone through various misconceptions and technical challenges when it comes to implementation. I would…
In a question here at Experts Exchange (https://www.experts-exchange.com/questions/29062564/Adobe-acrobat-reader-DC.html), a member asked how to create a signature in Adobe Acrobat Reader DC (the free Reader product, not the paid, full Acrobat produ…
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …
Suggested Courses

879 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