Facilitando algumas tarefas no CentOS 7

Publicado por Bruno Ricardo Rodrigues (última atualização em 09/08/2016)

[ Hits: 7.414 ]

Homepage: Não Possuo

Download 6461.script.sh




Olá pessoal,

Passei as últimas horas me dedicando a criar um script para automatizar/facilitar algumas tarefas que realizo com freqüência no CentOS 7, tais como Firewall, SElinux, hostname, Configuração de interface de rede entre outras. Nada impede de executar o script em outras versões do CentOS ou outras distros, porém até o momento somente testei no CentOS 7.

Como para mim foi e será muito útil, tive a ideia de divulgar aqui no VOL, quem sabe não ajudo mais alguém :)

  



Esconder código-fonte

#!/bin/bash

#### DEPENDÊNCIAS ####

type dialog 1> /dev/null
if [ "$?" = 0 ]; then
   echo "Dependencias Instaladas..."
else
   echo "Instalando Dependencias!"
   yum install -y dialog
fi

#### FUNÇÕES ####

sistema_operacional_func()
{
        SO=$(dialog --stdout --title 'Sistema Operacional' --menu 'Escolha seu Sistema Operacional:' 0 0 0 1 'CentOS 7')
   menu_func
}
hostname_func()
{
   HostName=$(dialog --stdout --title 'Hostname' --inputbox 'Informe o novo HOSTNAME:' 0 0)
   [ $? -eq 1 ] && menu_func
   echo $HostName > /etc/hostname
   /bin/hostname $HostName
   dialog --title 'Aviso' --msgbox 'Operação realizada com sucesso!' 5 35
   menu_func
}
interfaces_rede_func()
{
dinamico()
{
FILE='/etc/sysconfig/network-scripts/ifcfg-'$INTERFACE
cat > $FILE << EOM
DEVICE=$i
BOOTPROTO=dhcp
ONBOOT=yes
EOM
dialog --title 'Aguarde' --infobox '\nReiniciando interfaces de rede...' 0 0
/etc/init.d/network restart
dialog --title 'Aviso' --msgbox 'Operação realizada com sucesso!' 5 35
menu_func
}

statico()
{
IP=$( dialog --stdout --inputbox 'Informe o IP:' 0 0 )
[ $? -eq 1 ] && interfaces_rede_func
MASK=$( dialog --stdout --inputbox 'Informe a Máscara:' 0 0 )
[ $? -eq 1 ] && interfaces_rede_func
GATEWAY=$( dialog --stdout --inputbox 'Informe o Gateway:' 0 0 )
[ $? -eq 1 ] && interfaces_rede_func
DNS1=$( dialog --stdout --inputbox 'Informe o DNS Primário:' 0 0 )
[ $? -eq 1 ] && interfaces_rede_func
DNS2=$( dialog --stdout --inputbox 'Informe o DNS Secundário:' 0 0 )
[ $? -eq 1 ] && interfaces_rede_func
dialog --title 'Informações de Rede' --yesno '\nIPADDR='$IP'\nNETMASK='$MASK'\nGATEWAY='$GATEWAY'\nDNS Primário='$DNS1'\nDNS Secundario='$DNS2'\n\nAs informações estão corretas?' 0 0
[ $? -eq 1 ] && interfaces_rede_func
FILE='/etc/sysconfig/network-scripts/ifcfg-'$INTERFACE
cat > $FILE << EOM
DEVICE=$INTERFACE
TYPE=Ethernet
IPADDR=$IP
NETMASK=$MASK
GATEWAY=$GATEWAY
ONBOOT=yes
EOM
echo "nameserver $DNS1" > /etc/resolv.conf
echo "nameserver $DNS2" >> /etc/resolv.conf
dialog --title 'Aguarde' --infobox '\nReiniciando interfaces de rede...' 0 0
/etc/init.d/network restart
dialog --title 'Aviso' --msgbox 'Operação realizada com sucesso!' 5 35
menu_func
}

INTERFACES=`ip a | grep \< | cut -d ':' -f 2`
COMANDO="dialog --stdout --title 'Interfaces de Rede' --menu 'Selecione a interface a ser editada: ' 0 0 0 "
for i in $INTERFACES
do
if [ "$i" != "lo" ]; then
        COMANDO=$COMANDO"'$i' '' "
fi
done

INTERFACE=$(eval $COMANDO)
[ $? -eq 1 ] && menu_func

RESPOSTA=$(dialog --stdout --title 'Modo de Operação' --menu 'Selecione o modo de operação ' 0 40 0 \
1 'Static' \
2 'Dinâmico')

case $RESPOSTA in
        1) statico ;;
        2) dinamico ;;
        *) interfaces_rede_func ;;
esac
}

nome_interfaces()
{
   INTERFACES=`ip a | grep \< | cut -d ':' -f 2`
   sed -i 's/rhgb quiet/rhgb quiet net.ifnames=0 biosdevname=0/' /etc/default/grub
   grub2-mkconfig -o /boot/grub2/grub.cfg
   INT=0
for i in $INTERFACES
do
if [ "$i" != "lo" ]; then
   sed -i "s/$i/eth$INT/g" /etc/sysconfig/network-scripts/ifcfg-$i
        mv /etc/sysconfig/network-scripts/ifcfg-$i /etc/sysconfig/network-scripts/ifcfg-eth$INT
        INT=`expr $INT + 1`
fi
done
   dialog --title 'Aviso' --msgbox 'Operação realizada com sucesso! NÃO ESQUEÇA DE REINICIAR AO SAIR!' 5 70
}

firewall_func()
{
   limpa_regra_func()
   {
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
   }
   inicializacao_func()
   {
limpa_regra_func
cat > /etc/init.d/firewall.sh << EOM
#!/bin/bash

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
EOM
chmod +x /etc/init.d/firewall.sh
chmod +x /etc/rc.d/rc.local
echo "/etc/init.d/firewall.sh" >> /etc/rc.d/rc.local
   }
   MENU=$(dialog --stdout --title 'Firewall' --menu 'Selecione uma opção:' 0 0 0 \
1 'Limpar regras de Fiewall' \
2 'Adicionar script para limpar regras de Firewall na inicialização do sistema' \
3 'Voltar ao Menu Anterior')

   case $MENU in
           1) limpa_regra_func ;;
           2) inicializacao_func ;;
           3) menu_func ;;
      *) menu_func ;;
   esac
   dialog --title 'Aviso' --msgbox 'Operação realizada com sucesso!' 5 35
   firewall_func
}
selinux_func()
{
   MODO_ATUAL=`cat /etc/selinux/config | grep ^SELINUX= | cut -d '=' -f 2`
   echo $MODO_ATUAL
   MENU=$(dialog --stdout --title 'Menu' --menu 'Modo Atual: '$MODO_ATUAL'\nNovo Modo:' 0 0 0 \
1 'Disabled (Necessário Reiniciar)' \
2 'Permissive' \
3 'Enforcing (Necessário Reiniciar)' \
4 'Voltar ao Menu Anterior')

   case $MENU in
                1) sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config ;;
                2) sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config; setenforce 0 ;;
      3) sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config ;;
                4) menu_func ;;
                *) menu_func ;;
        esac
   dialog --title 'Aviso' --msgbox 'Operação realizada com sucesso!' 5 35
   menu_func
}

exit_func()
{
dialog --title 'Reiniciar' --yesno '\nVocê deseja reiniciar o sistema operacional?' 0 0
if [ $? -eq 1 ]; then
   clear
   exit
else
   shutdown -r now
fi
}

menu_func()
{
   MENU=$(dialog --stdout --title 'Menu' --menu 'Selecione uma opção:' 0 0 0 \
1 'Alterar Hostname' \
2 'Interfaces de Rede' \
3 'Firewall' \
4 'SElinux' \
5 'Alterar o nome das interfaces de rede para ethX' \
6 'Alterar Sistema Operacional' \
7 'Exit')

case $MENU in
        1) hostname_func ;;
        2) interfaces_rede_func ;;
        3) firewall_func ;;
        4) selinux_func ;;
   5) nome_interfaces ;;
        6) sistema_operacional_func ;;
        7) exit_func ;;
   *) menu_func ;;
esac
}


#### INICIO DO PROGRAMA ####

dialog --title 'Obrigado!' --msgbox 'Designed and Developed by Bruno Ricardo Rodrigues.' 5 55

sistema_operacional_func
menu_func

Scripts recomendados

Monitorando seus daemon de impressão...

ORACLE 10.2g - Fazendo Restore

Atualizar KDE para a versão 3.5.4

Postfix - Listar usuários com over quota

Bashblog v1.0 0 - cria um microblog em HTML5


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts