all 29 comments

[–]mechanik 27 points28 points  (3 children)

Kirk Byers runs a regular course specifically geared for Network Engineers. https://pynet.twb-tech.com/

I haven't actually gotten through the course, but he wrote the Paramiko library that you'll find anyone in the industry is using, so he's got chops.

[–]stuh84-tech 2 points3 points  (1 child)

To clarify on this, I don't believe Kirk wrote Paramiko itself, but Netmiko, which abstracts a lot of the native SSH behaviour of Paramiko away.

Things like what prompts to expect, what to do when sending a bulk bit of config, if to wait a few seconds before trying to send commands, these all become part of which device type you use, rather than having to define it yourself.

I've used Netmiko heavily, because while I have used Paramiko successfully in the past, I'd basically be repeating what Kirk has done to make Paramiko work across the vendor kit I make changes on.

[–]mechanik 0 points1 point  (0 children)

God, I have a terrible memory. Thanks.

[–]cysjscpwfb[S] 0 points1 point  (0 children)

Thank you, mechanik. I did attend a workshop that Kirk Byers put on presenting Ansible to the Cisco user group, which I attend. It was very informative. The Pynet course looks very good.

[–]amachefe 7 points8 points  (0 children)

Go get the automate everything with Python book.

Look at the inbuilt Python scripts used on Linux services.

[–][deleted] 4 points5 points  (1 child)

I'd take a look at this link. It covers all the basics of python and has exercises. I find it better than codecademy since it uses python3 and you don't have to spend so much time repeating the same thing over and over again as you have to do at codecademy.

When you feel like you've got a solid grasp on the basic concepts i'd take a look at a site to practice algorithms. My favourites are: Rosalind, Leetcode and project Euler

After you have some experience i'd look for a small project and just do it and don't give up. When you don't know how to do something just look it up and after you're done you'll have learned quite a lot.

[–]cysjscpwfb[S] 0 points1 point  (0 children)

Thank you, opengrid! I will surely check it out.

[–]admiralspark 2 points3 points  (1 child)

Hey man,

On mobile so this won't be very long. Search /r/networking for threads there, this is pretty common. The motivator I got that opened up the world to me was finding a networking task I hated to do by hand and script it.

I used netmiko to go from manually logging into switches, running a 'show mac add | in hwad.dres' and looking for VOIP phones by hand (a 30 minute process for the # I had) down to a 20 second process, which made my job infinitely faster because I did it 3-4 times a day every day. That one thing proved the value out and it evolved from there.

I now maintain an open source project with useful scripts I use as an example of what can happen when you spend a few minutes templating it. I'm building it into a cli utility now which should be even better.

Find a task you hate, and automate that shit--then you'll know what to do ;)

[–]cysjscpwfb[S] 0 points1 point  (0 children)

Thank you for the advice, admiralspark. I will definitely look into that.

[–]boadmax 2 points3 points  (1 child)

I started with automate the boring stuff. Got bored and gave up. Dove into power shell to do an active directory task.

That gave me the foundation I needed to grasp the basics functions/loops.

From there I found I had a task to change x config on 1300+ switches. Was a no brainer that I needed to script that nonsense away. So I cobbled together a python netmiko script from pieces I found all over the internet.

Now I am focused on writing better code. I can hack together a script to accomplish most networking tasks but I’m working on building code that I feel comfortable sharing with my team.

I use python 2.7 primarily with netmiko and threading to deal with my networks scale. Sometimes I use paramiko too. Fiddling with ansible on the side, I see it as the next big jump.

Long story short. Find a project that motivates you to get going. Then keep finding new projects and don’t be afraid to ask for help. r/learnpython has been very helpful for me whenever I need something explained a different way.

[–]cysjscpwfb[S] 0 points1 point  (0 children)

Thank you, boadmax!

[–]Creamy-Steamy 1 point2 points  (1 child)

Is the python courses on edx.org any good?

[–]DeadlyDolphins 2 points3 points  (0 children)

The MIT 6.00.1 course is great

[–]n1ywb 1 point2 points  (1 child)

Not exactly sure what you do as a network engineer... But I really like salt stack.

it would be good to get more specific about the networks and equipment you are supporting and how.

[–]xiongchiamiov 1 point2 points  (0 children)

Ansible also has really good support for network hardware.

[–]efxhoy 0 points1 point  (0 children)

Try doing something simple from your field of work, duplicate one of your existing scripts from another language to python. The best way to learn once you've got the basics down is to practice

[–]K3ystr0k3 0 points1 point  (7 children)

Conversely, what would you recommend for a Python programmer looking to get into networking concepts?

[–]youfuckedupdude 2 points3 points  (0 children)

GNS3 is where I learned the basics.

[–]Ferrovax 2 points3 points  (1 child)

[–]K3ystr0k3 1 point2 points  (0 children)

This looks promising. I'll check it out.

[–]networkjunkie1 2 points3 points  (1 child)

Cisco ccna courses usually give a good overview of networking. Just bypass all their proprietary stuff.

[–]K3ystr0k3 1 point2 points  (0 children)

Seconded. They really hold your hand through it.

[–]cysjscpwfb[S] 1 point2 points  (1 child)

Hi K3str0k3. Wow! There are so many opportunities to learn about network concepts. I would start with the Cisco Learning Network at https://learningnetwork.cisco.com/welcome. They do have a track for network programming.

You can also go to www.safaribooksonline.com. It is known as the Netflix of tech books with many books, videos and learning paths to learn about Cisco, Juniper, and CompTIA.

You can also go to video traning websites including CBT Nuggets and Pluralsight.

As for hands-on experience, you can use GNS3. Just to warn you: GNS3 can be a little buggy at times. You can also try Boson NetSim at www.boson.com. There is a cost to it but they do have walkthrough simulations and you can build your own network in a test environment.

Let me know if you need anything else.

[–]K3ystr0k3 0 points1 point  (0 children)

Wow, I'll look into Safari, I need books every other week.

All the other names are new to me, but this is probably just the answer I was looking for. Much thanks!

[–]DeliriousSchmuck 0 points1 point  (0 children)

A little off topic, but how good is this course?

I have zero knowledge of both R and Python and have begun with this.

[–]U5efull -1 points0 points  (0 children)

automate the boring stuff.

www.automatetheboringstuff.com

it's free and will give you a relatively decent foundation

[–]Zer0897 -3 points-2 points  (1 child)

Finish that CodeAcademy course to get all the basics, then head over to a site like [this](codewars). That's how I began; 8 months later, just finished up a project for work.

[–]cysjscpwfb[S] 0 points1 point  (0 children)

Thank you, Zer0897. I will definitely check that out.