Facilitando algumas tarefas no CentOS 7

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

[ Hits: 7.422 ]

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

Script que envia email para um Relay sem autenticação.

Cálculo de intervalo de tempo

Biblioteca de funções de manipulação de arquivos CSV para shell script

Expect-Bash

Backup individual de contas no ZIMBRA MAIL


  

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