Script para Configurar IP Adicional no Linux

Um script simples em python para cadastrar um ip adicional no Red Hat/Centos, Fedora e distros baseadas nas mesmas.

O script cria um arquivo ifcfg-eth0:nomeinformado em /etc/sysconfig/network-scripts/



#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys

def verificaLogin(login_):
    """Verifica o tamanho em caracteres do nome da interface, aparentemente um bug no kernel 
         não permite adicionar interfaces que tenham o nome com mais de
         10 caracteres. por exemplo eth0:nomegrandedainterface """
    global login
    if len(login_) >=11:
        login = login[:10]
        return True
    return True
    
def verifica_IP_MASC(ip_masc):
    """Verifica o formato em que o ip ou a máscara foi passado"""
    if len(ip_masc.split()) == 0:
        return False
    elif len(ip_masc.split()) == 1:
        ip_masc_l = ip_masc.split(".")
        if len(ip_masc_l) == 4:
            for n, elemento in enumerate(ip_masc_l):
                if n == 0:
                        try:
                            if int(ip_masc_l[0]) == 0:
                                return False
                            else:
                                pass
                        except:
                            return False
                try:
                    if int(elemento):
                        pass
                except:
                    return False
            return True
        else:
            return False
    else:
        return False
        
def verifica_arquivo(arquivo):
    """Verifica se o arquivo com o nome informado já existe"""
    import os.path
    if os.path.exists("/etc/sysconfig/network-scripts/ifcfg-eth0:%s" % login):
        return False
    else:
        return True
                  
def validaIP(ip):
    """Verifica se o ip já está sendo utilizado em outra interface"""
    import subprocess as sp
    processo = sp.Popen(["grep %s /etc/sysconfig/network-scripts/*" % ip], shell=True, stdout=sp.PIPE)
    saida = processo.communicate()[0].strip("\n")
    if len(saida) > 1:
        return False
    else:
        return True

try:
    login, ip, masc = sys.argv[1:]
    login_original = login

    if verificaLogin(login):
        if verifica_IP_MASC(ip):
            if validaIP(ip):
                if verifica_IP_MASC(masc):
                    if  verifica_arquivo(login_original):
                        file = open("/etc/sysconfig/network-scripts/ifcfg-eth0:%s" % (login_original), "w")
                        file.write("DEVICE=eth0:%s\n" % login)
                        file.write("BOOTPROTO=static\n")
                        file.write("IPADDR=%s\n" % ip)
                        file.write("NETMASK=%s\n" % masc)
                        file.write("ONBOOT=yes\n")
                        file.close()
                        print("Interface eth0:%s adicionada!" %  login)
                    else:
                        print("O arquivo ifcfg-eth0:%s já existe, operação cancelada!" % login_original)
                else:
                    print("Máscara informada inválida! %s" % masc)
            else:
                print("IP: %s já está sendo utilizado neste servidor!" % ip)
        else:
            print("IP informado inválido! %s" % ip)
except:
    print("Infome login, ip e mascara. Ex:  adicionar_ip.py usuario 192.168.0.10 255.255.255.0")


A sintaxe de utilização é simples execute o script conforme exemplo abaixo:

# python adicionar_ip.py  Interface  IP  Máscara

Ou de permissão ao arquivo:

# chmod +x adicionar_ip.py

E execute com o comando:

# ./adicionar_ip.py  Interface  IP  Máscara

Baixe o script aqui 



Deixe um comentário