Handling the Configuration Files and Extracting the Configuration Changes

Python 3: Automating Network Tasks Network Application #5 - Config File Management and E-mail Notifications
6 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$99.99
List Price:  $139.99
You save:  $40
€92.85
List Price:  €130
You save:  €37.14
£79.68
List Price:  £111.56
You save:  £31.87
CA$136.70
List Price:  CA$191.38
You save:  CA$54.68
A$151.38
List Price:  A$211.94
You save:  A$60.56
S$134.98
List Price:  S$188.98
You save:  S$54
HK$781.15
List Price:  HK$1,093.64
You save:  HK$312.49
CHF 90.48
List Price:  CHF 126.67
You save:  CHF 36.19
NOK kr1,087.35
List Price:  NOK kr1,522.33
You save:  NOK kr434.98
DKK kr692.92
List Price:  DKK kr970.11
You save:  DKK kr277.19
NZ$166.35
List Price:  NZ$232.90
You save:  NZ$66.55
د.إ367.25
List Price:  د.إ514.16
You save:  د.إ146.91
৳10,943.35
List Price:  ৳15,321.13
You save:  ৳4,377.77
₹8,337.18
List Price:  ₹11,672.39
You save:  ₹3,335.20
RM473.95
List Price:  RM663.55
You save:  RM189.60
₦123,487.65
List Price:  ₦172,887.65
You save:  ₦49,400
₨27,847.21
List Price:  ₨38,987.21
You save:  ₨11,140
฿3,675.50
List Price:  ฿5,145.85
You save:  ฿1,470.34
₺3,235.04
List Price:  ₺4,529.19
You save:  ₺1,294.14
B$507.19
List Price:  B$710.09
You save:  B$202.90
R1,850.71
List Price:  R2,591.07
You save:  R740.36
Лв181.51
List Price:  Лв254.13
You save:  Лв72.61
₩135,590.93
List Price:  ₩189,832.73
You save:  ₩54,241.80
₪371.66
List Price:  ₪520.34
You save:  ₪148.68
₱5,705.78
List Price:  ₱7,988.32
You save:  ₱2,282.54
¥15,304.96
List Price:  ¥21,427.56
You save:  ¥6,122.60
MX$1,696.83
List Price:  MX$2,375.63
You save:  MX$678.80
QR364.06
List Price:  QR509.70
You save:  QR145.64
P1,358.38
List Price:  P1,901.79
You save:  P543.40
KSh13,211.65
List Price:  KSh18,496.84
You save:  KSh5,285.18
E£4,788.95
List Price:  E£6,704.73
You save:  E£1,915.77
ብር5,723.72
List Price:  ብር8,013.44
You save:  ብር2,289.71
Kz83,591.64
List Price:  Kz117,031.64
You save:  Kz33,440
CLP$94,219
List Price:  CLP$131,910.38
You save:  CLP$37,691.37
CN¥723.65
List Price:  CN¥1,013.14
You save:  CN¥289.49
RD$5,794.19
List Price:  RD$8,112.10
You save:  RD$2,317.90
DA13,457.95
List Price:  DA18,841.67
You save:  DA5,383.72
FJ$225.30
List Price:  FJ$315.43
You save:  FJ$90.13
Q775.06
List Price:  Q1,085.12
You save:  Q310.05
GY$20,860.22
List Price:  GY$29,205.14
You save:  GY$8,344.92
ISK kr13,962.60
List Price:  ISK kr19,548.20
You save:  ISK kr5,585.60
DH1,005.73
List Price:  DH1,408.07
You save:  DH402.33
L1,766.28
List Price:  L2,472.87
You save:  L706.58
ден5,712.05
List Price:  ден7,997.10
You save:  ден2,285.05
MOP$802.57
List Price:  MOP$1,123.63
You save:  MOP$321.06
N$1,845.78
List Price:  N$2,584.16
You save:  N$738.38
C$3,670.67
List Price:  C$5,139.09
You save:  C$1,468.41
रु13,313.56
List Price:  रु18,639.52
You save:  रु5,325.95
S/372.22
List Price:  S/521.13
You save:  S/148.90
K385.44
List Price:  K539.63
You save:  K154.19
SAR375.01
List Price:  SAR525.03
You save:  SAR150.02
ZK2,689.66
List Price:  ZK3,765.63
You save:  ZK1,075.97
L462.03
List Price:  L646.86
You save:  L184.83
Kč2,326.92
List Price:  Kč3,257.79
You save:  Kč930.86
Ft36,193.38
List Price:  Ft50,672.18
You save:  Ft14,478.80
SEK kr1,078.64
List Price:  SEK kr1,510.15
You save:  SEK kr431.50
ARS$87,815.44
List Price:  ARS$122,945.14
You save:  ARS$35,129.69
Bs690.51
List Price:  Bs966.74
You save:  Bs276.23
COP$388,367.89
List Price:  COP$543,730.59
You save:  COP$155,362.69
₡50,962.55
List Price:  ₡71,349.61
You save:  ₡20,387.06
L2,463.20
List Price:  L3,448.58
You save:  L985.38
₲746,475.93
List Price:  ₲1,045,096.16
You save:  ₲298,620.23
$U3,821.56
List Price:  $U5,350.33
You save:  $U1,528.77
zł401.98
List Price:  zł562.79
You save:  zł160.80
Already have an account? Log In

Transcript

Welcome to this lecture. Now it's time to have our working environment organized and handled the configuration files that the application is saving to our local file system in a boon to. First of all, let me open up the Ubuntu virtual machine. Let's exit the Python interpreter for now. So I have created a separate directory inside my slash home slash Mihai directory called CFG files. So let's see the contents of my home folder.

And you can notice this directory right here. We're going to use this directory to store the configuration files that we extract from the switch, you can create your own directory using the Mk dir command in the Linux terminal. Now if we list the contents of this new directory, so let's do an ls CFG files. You can notice that I already have a couple of configuration files stored from previous tests of this application. However, When running the application for the first time, you won't have any configuration file saved. So I'll go ahead and delete these files right now.

So remove CFG files slash all. Yes, yes. Let's check the directory again. And it's now empty. When we will execute the script later in this section, Python will throw the file not found error or no such file or directory because there won't be any configuration file corresponding to yesterday's date to compare the today's file with. That's why we can use a simple trick here.

We know by looking at the code that the naming convention for each configuration file is IP underscore date, where the date is in ISO format. But what is this ISO format you may ask? Well, let's see it in the Python three interpreter by using the date time module. So I'm going to use import the time and let's use the time dot date dot today. dot ISO format. So the ISO format is this one right here where we have the year, the month and the day.

Now let's get back to the Ubuntu virtual machine. And let's create an empty file in our new directory following the naming convention we used inside the script meaning the IP address of the Arista switch and yesterday's date in ISO format. So I'm going to use the touch command touch CFG files 10 dot 10 dot 10 dot two, this is the IP address underscore and now the date of yesterday in ISO format, that would be 2018 dash 12 dash 11 enter. Okay, so now we have an empty file corresponding to yesterday's version of the configuration file for this switch. This is a trick that you should only perform once before the first execution of the application. Then each time you run the script on a daily basis, the script will automatically detect the File associated with the date of the previous day.

And we'll perform the comparison with the config file version of the current day. Now let's get back to the code. So first of all, we are defining a variable referencing yesterday's version of the configuration file. In order to properly locate the file, assuming we have the script in the home folder of the current user, we can use the name of the directory also located in the home folder of the same user. So cfg file slash, then we concatenate this with the value of the IP variable to add the IP address to the file name, then the underscore symbol and finally, to add yesterday's date to the filename we use today's date minus this date, time dot time delta. And the days equals one argument, which actually subtract one day from today's date.

Pretty straightforward. I think. Of course, we want the data in ISO format. So we will apply the ISO format method to yesterday. date and that's it. Next, it's time to save the configuration file version corresponding to today's date, we need to create this file on the local file system.

So we use the open function and the W access mode. That opens the file for writing and also create the file if it doesn't exist. Having this file open, we simply use the write method to write the output of the show running command to this newly created file. Great. The last thing to do here is to compare yesterday's file with today's version and store the differences using a variable in HTML format. So we open both files for reading this time using the open method twice, one method for each file.

So we have with open and this is the first file and then open the second file as well for reading within the same with statement separated by a comma as you can see right here, then using a variable that I called difference, we should use the make file method from within the HTML div class inside the diff lib module to compare the two files line by line. That's why I've also applied the red lines method to each file object, as you can see right here, so red lines to the old file and also the red lines method applied to the new file. Also, we have the front desk and to desk arguments to add a description to each of the two columns representing the configuration files, the old one and the new one that will be included in the email. Basically, the email that the network administrator receives each day will contain two columns, each of the columns corresponding to yesterday's and today's configuration files respectively, with all the differences highlighted.

Here is a preview of such an email so you'll know what to expect in the videos to come. So we have two columns, yesterday's configuration file, today's version of the configuration file, and all the changes are going to be highlighted if any, okay Having that said I'll see you in the next lecture.

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.