Facilitando algumas tarefas no CentOS 7
Publicado por Bruno Ricardo Rodrigues (última atualização em 09/08/2016)
[ Hits: 7.686 ]
Homepage: Não Possuo
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 :)
#!/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
Desligando infraestrutura de ITM6
Enviar via FTP todos as pastas / sub-pastas e arquivos, a partir do diretorio de origem inclusive
SCRIPT PARA AUTOMAÇÃO DE ATUALIZAÇÃO EM AMBIENTE DEBIAN OU DERIVADOS.
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









