Facilitando algumas tarefas no CentOS 7
Publicado por Bruno Ricardo Rodrigues (última atualização em 09/08/2016)
[ Hits: 7.480 ]
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
Script que envia email para um Relay sem autenticação.
Script FIREWALL IPTABLES com 3 (três) interfaces (Int, Ext e DMZ)
Cluster multi-master com MariaDB 10.1 + Galera
Criando Boot pelo USB para o VirtualBox no Linux KDu5
Backup diario rotativo MySQL + Backup semanal mantendo uma cópia local e remota
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Meus HDs não aparecem mais no boot da placa mãe (6)
Compartilhando uma ideia sobre computação quantica (0)
DICAS: Abrir arquivos em lotes no terminal usando o LibreOffice (1)