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