Skip to main content

Program to validate IPv4 Private Address and print the class


#!/usr/bin/python3 

#Program to Validate the IP Address and Print the class of the IPV4 Address
#  - 10.0.0.0 - 10.255.255.255 -Class A - NetId 8 Bits , Host Id 24 Bits 
#   - 172.16.0.0 - 172.31.255.255 - Class B - NetID 12 Bits, Host ID 20 Bits 
#   - 192.168.0.0 - 192.168.255.255 - Class C - NetID 16 Bits , Host ID 16 Bits 
#   - 127.0.0.0 to 127.255.255.255 - LocalHost / LoopBack 


'''
Steps -
        Read Input
        Validate IP
        split and map the input to integer
        From list items 0 to 3 , check for IP Range Conditions
'''

import re

def validate_ip(ip_addr):

 if re.search('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}',ip_addr):
          lst = list(map(int,ip_addr.split('.')))
          
          #CLASS A Range - 10.0.0.0 - 10.255.255.255    
  if((lst[0] == 10) and (lst[1] >= 10 and lst[1] <= 255) and (lst[2] >= 0 and lst[2] <= 255) and (lst[3] >= 0 and lst[3] <= 255)):
            print("IP",ip_addr,"is Class A")
          
          #CLASS B Range - 172.16.0.0 - 172.31.255.255  
   elif((lst[0] == 172) and (lst[1] >= 16 and lst[1] <= 31) and (lst[2] >= 0 and lst[2] <= 255)and (lst[3] >= 0 and lst[3] <= 255)):
            print("IP",ip_addr,"is Class B")
        
          #CLASS C Range - 192.168.0.0 - 192.168.255.255        
   elif((lst[0] == 192) and (lst[1] == 168) and (lst[2] >= 0 and lst[2] <= 255)and (lst[3] >= 0 and lst[3] <= 255)):
            print("IP",ip_addr,"is Class C")          
                     
          #Loop Back Range - 127.0.0.0 - 127.255.255.255         
  elif((lst[0] == 127) and (lst[1] >= 0 and lst[1] <= 255) and (lst[2] >= 0 and lst[2] <= 255) and (lst[3] >= 0 and lst[3] <= 255)): 
            print("IP",ip_addr,"is Loop Back Host Address") 
    else: 
            print("Invalid Private IP Address Range")            
  else: 
            print("Invalid Ip Adress String") 

if __name__ == "__main__": 
        ip_addr = input("Enter Ip Address :-") 
        validate_ip(ip_addr)


Execution -

suri@suri-Aspire-R3-471T:~/Python_Programs$ python3 validate_ip.py  
Enter Ip Address :-10.10.10.10
IP 10.10.10.10 is Class A

suri@suri-Aspire-R3-471T:~/Python_Programs$ python3 validate_ip.py  
Enter Ip Address :-10.xx.12.10
Invalid Ip Adress String


Comments

Popular posts from this blog

Sampling and FFT Size derivation in LTE

Sampling and FFT Size derivation in LTE Ts = 1 / (15000 x 2048) seconds, which corresponds to the 30.72 MHz sample clock for the 2048 point FFT used with the 20 MHz system bandwidth. In the frequency domain, the number of sub-carriers N ranges from 128 to 2048, depending on channel bandwidth with 512 and 1024 for 5 and 10 MHz, respectively, being most commonly used in practice. The sub-carrier spacing is ∆f = 1/T u = 15 kHz. The sampling rate is fs = ∆f · N = 15000 N. This results in a sampling rate that’s multiple or sub-multiple of the WCDMA chip rate of 3.84 Mcps: LTE parameters have been chosen such that FFT lengths and sampling rates are easily obtained for all operation modes while at the same time ensuring the easy implementation of dual-mode devices with a common clock reference. Sampling frequency is Multiple's of 2, For 15 Mhz Bandwidth - Sampling Frequency = 23.04 (6 * 3.84). FFT SIZE = S

C Programming Questions – Part 1

1. W hat do curly braces denote in C? Why does it make sense to use curly brac es to surround the body of a function?   Answer: The curly braces denote a block of code, in which variables can be declared. Variables declared within the block are valid only until the end of the block, marked by the matching right curly brace ’}’. The body of a function is one such type of block, and thus, curly braces are used to describe the extent of that block . 2.Describe the difference between the literal values 7, "7", and ’7 ’ ?   Answer: The first literal is integer 7.Second literal is null terminated string value '7'.Third literal is character '7' having ASCII character code (55). 3. Consider the statement double ans = 10.0+2.0/3.0−2.0∗2.0; Rewrite this statement, inserting parentheses to ensure that ans = 11.0 upon evaluation of this statement ? Answer: double ans = 10.0+2.0/ (( 3.0−2.0 ) ∗2.0 ) ; 4 .C

C Programming Questions - Part 2

1) How do you determine the size and range of the following data types ? char unsigned char short int unsigned int unsigned long float Ans:- limits.h header file defines the minimum and maximum range macros for each of the data types , sizeof(datatype) returns the number of bytes used by the datatype in current machine. 2) Write logical expressions that tests whether a given character variable c is lowercase letter uppercase letter digit white space(includes space,tab,newline) Ans:- lowercase letter = (c >= 'a' && c <= 'z') uppercase letter = (c >= 'A' && c <= 'Z') digit = (c >= '0' && c <= '9') white space(includes space,tab,newline) = (c == ' ' || c == '\t' || c == '\n') 3) Consider unsigned int val=0xCAFE; Write expressio