Script de administração Linux

Este script inteiramente redigido para aqueles que desejam aprofundar seus conhecimentos em scripting Linux. Você pode retomar pedaços de código, o melhorar, ele está ai para isto mesmo !
NOTA :

  • Pode acontecer que tenha restos de caracteres especiais.
  • A indetação das notas pode ser decalada, elas são comentadas pelo #
#!/bin/bash   
#*********************************************************************************   
#************************************* SCRIPT DE ADMINISTRACAO Verão 1.2 ***********   
#*********************************************************************************   
#   
# Notas :   
#   
# este  script pode ser modificado ao implementar novas funções   
# A indentação deve ser clara e os comandos comentados  
# o menu principal de administração está no final do script   
# este  script só pode ser executado enquanto root   
# em caso de adição de função pense em lembrar a função no menu principal ou no sub menu ao qual    
# ela é implementada   
# em caso de modificação a  interface deve ficar no máximo intuitiva   
#    
#   
#   
#   
#   
#*************************************************************************************   
#***********************************************Função gestão dos usuários   
#*************************************************************************************   
função gestão_usuário () {   
função criação_supp_usuário () { # função criação_supp_usuário   
echo -e " \033[31m Suprimir ou criar um usuário ? \033[00m"   
echo " Digitar para suprimir / Digitar c para criar:"   
read escolha  
if [ $escolha = "c" ] ;                     
then   
   echo "Entrar o login do usuário desejado:"   
   read user   
   adduser -a $user 2>/dev/null  # 2>/dev/null redireção para o  
    if [ $? -eq 0 ]     # lixo do comando precedente   
    then          # se o resultado é falso   
      echo -e "\033[31m O usuário $user foi criado! \033[00m"   
    else   
      echo -e "\033[31m falha, o usuário $user não foi criado, verificar os dados... \033[00m"   
    fi   
   echo "Pressionar na tecla <Entre> para voltar ao menu..."   
   read tecla     # leitura da tecla entrada   
   case $tecla in   

  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac else if [ $escolha = "x" ] ; then echo "Dar o nome do usuário a suprimir:" read utildel userdel -r $utildel 2>/dev/null # supressão com userdel -r if [ $? -eq 0 ] # e verificação then echo -e "\033[31m A supressão do usuário $utildel é confirmada \033[00m" else echo -e "\033[31m Falha, da supressão do usuário $utildel, verificar seus dados...\033[00m" fi echo "Pressionar sua tecla <Entre> para voltar ao menu..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac else exit 0 fi fi menu_usuário # volta ao sub menu da função } função criação_sup_grupo () { echo -e " \033[31m Suprimir ou criar um grupo ? \033[00m" echo " Digitar x para Suprimir / Digitar c para criar :" read escolha if [ $escolha = "c" ] ; then echo "Entrar o nome do grupo desejado:" read grupo grupoadd $grupo 2>/dev/null if [ $? -eq 0 ] then echo -e "\033[31m O grupo $grupo foi criado ! \033[00m" else echo -e "\033[31m Falha do grupo $grupo não foi criado, verificar seus dados... \033[00m" fi echo "Você quer verificar guardando o arquivo /etc/grupo ? (y/n)" read rep if [ $rep = "y" ] ; then vi /etc/grupo # vi permite editar e cat é else # mais adaptado para esta echo "Pressionar sobre a tecla <Entre> para voltar ao menu..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_usuário fi else if [ $escolha = "x" ]; # segunda parte da escolha then echo "Dar o nome do grupo para Suprimir :" read grupo grupodel $grupo2>/dev/null # supressão com grupo de if [ $? -eq 0 ] then echo -e "\033[31m A supressão do grupo $grupo está confirmada \033[00m" else echo -e "\033[31m Falha, da supressão do grupo $grupo, verificar seus dados... \033[00m" fi echo "Você quer verificar guardando o arquivo /etc/grupo ? (y/n)" read rep if [ $rep = "y" ] ; then vi /etc/grupo else echo "Pressionar sobre a tecla <Entre> para voltar ao menu..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_usuário # volta ao menu da sub função fi else exit 0 fi fi menu_usuário # lembrete do sub menu da função } função ver_usuário () { who -q # mostra todos os logins dos usuários echo "Pressionar sobre a tecla <Entre> para continuar..." # conectados read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_usuário } função adição_user_samba () { echo "Dar o nome do usuário a implementar à Samba :" read nomee smbpasswd -a $nome 2>/dev/null # adição do usuário à samba por if [ $? -eq 0 ] # smbpasswd e verificação then echo -e "\033[31m O usuário $nome foi adicionado a Samba \033[00m" else echo -e "\033[31m falha do usuário $nome não foi adicionado a Samba, verificar o nome ... \033[00m" fi echo "Pressionar a tecla <Entre>para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_usuário } função adição_user_grupo () { echo "Dar o nome do usuário a adicionar no grupo :" # Nota: a interface deve ser read nome echo "Dá o nome do grupo ao qual você quer implementar este usuário :" read grupo adduser $nome $grupo 2>/dev/null # adição de um usuário à if [ $? -eq 0 ] # um grupo then echo -e "\033[31m O usuário $nome foi adicionada ao a grupo $grupo \033[00m" else echo -e "\033[31m Falha o usuário $nome não foi adicionada ao grupo $grupo, verificar seus dados... \033[00m" fi echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_usuário } função capacidade_user () { echo "O tamanho das pastas usuários é de:" du -s -h /home/* echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_usuário } função Menu_principal () { Menu } função menu_usuário () { # menu da sub função clear # "gestão dos usuários" echo "" echo -e "\033[36mProjet Linux eXia 2008 \033[00m" echo -e " \033[36m3a ano RIR \033[00m " echo -e " \033[37m________________________________\033[00m " echo -e " \033[37m| Gestão dos usuários |\033[00m " echo"" echo -e "\033[33m*** MENU *** :\033[00m" echo"" echo "1 - Criar / Suprimir um usuário" echo "2 - Criar / Suprimir um grupo" echo "3 - Veja os usuários conectados" echo "4 - Adicionar um usuário à Samba" echo "5 - Adição um usuário à um grupo" echo "6 - Ver o tamanho dos pastas dos usuários" echo "7 - Voltar ao menu Principal" echo "" echo "Entre sua escolha :" read ESCOLHA # leitura da escolha e chamado case $ESCOLHA in # da função concernida 1)criação_sup_usuário;; 2)criação_sup_grupo;; 3)veja_usuário;; 4)adição_user_samba;; 5)adição_user_grupo;; 6)capacidade_user;; 7)Menu_principal;;
  • )exit 0;;

esac } menu_usuário } # FIM da no função # gestão_usuário #********************************************************************************** #******************************************************Função matar um processo #********************************************************************************** função matar_proc () { ps ax --sort=tty,pid | more # desfilamentos dos processos pouco a pouco echo " QUEIRA DIGITAR O (S)) "PID" DO (DOS) PROCESSO A MATAR: " # para a utilização de |more read PROCESS da digitação antes do círculo PARA for TRUC in $PROCESS; do kill -9 $TRUC 2>/dev/null # parada dos processos para kill -9 if [ $? -eq 0 ] then echo -e "\033[31m O(s) processos $PROCESS foram parados \033[00m" else echo -e "\033[31m Falha do (s) processo $PROCESS não foram paradas, verificar o PID \033[00m" fi done echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac Menu } # *********************************************************************************** # *******************************************Função Recuperar os processos # *********************************************************************************** função recuperar_processo () { ps -aux >> processo_do_$(date +%d_%m_%y).log # recup e sup do antigo arquivo de log por >> echo -e "\033[31m O arquivo Log de recuperação dos processos foi criado criado no desktop \033[00m" echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac Menu } # *********************************************************************************** # ****************Função salvar / buscar pelo tamanho / nome arquivo ou diretório # *********************************************************************************** função sauv_busca_arquivo () { função sauv_resol_conf () { rsync -a /etc/resolv.conf /home/dyllan/Desktop/sauv_resol.conf_du_$(date +%d_%m_%y).log # utilização de rsync para uma echo -e "\033[31m O resolv.conf do $(date +%d_%m_%y) foi salva no desktop \033[00m" # salva distante mas não echo "Pressionar a tecla <Entre> para continuar..." # apresentada aqui read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_salv } função salv_supr_outro() { echo -e " \033[31m Suprimir ou Salvar? \033[00m" echo " Digitar x para Suprimir / Digitar s para salvar:" read escolha if [ $escolha = "s" ] ; then echo "Entre o caminho do diretório a salvar " # solicitação do caminho relativo a sup ou read caminho # la salvar echo "Entre o caminho do lugar onde você o salvou " read dest cp -r $caminho $dest 2>/dev/nulo # copia do diretório e todos os arquivos if [ $? -eq 0 ] # pela adição do -r para recursivo then echo -e "\033[31m O backup foi realizado \033[00m" else echo -e "\033[31m Falfa, o backup não foi realizado, verificar seus dados... \033[00m" fi echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac else if [ $escolha = "x" ]; # 2a parte da escolha : la supressão then echo "Entre o caminho do diretório a Suprimir" read chem rm -r $chem 2>/dev/null if [ $? -eq 0 ] then echo -e "\033[31m A supressão de $chem é confirmada \033[00m" else echo -e "\033[31m falha da supressão do $chem, verifique seus dados... \033[00m" fi echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac else exit 0 fi fi menu_sauv } função creer_rep () { echo "Qual é o nome do diretório ? (digite o nome) :" read nome if test -x $nome ; then echo -e "\033[31m falha, o diretório já existe !\033[00m" else mkdir "$nome" chmod 0733 $nome echo -e "\033[31m A pasta $nome foi criado com os direitos no Desktop \033[00m" fi echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_sauv } função busca_tamanho () { echo -e "\033[31m A busca é orientada superior ou inferior ao tamanho do arquivo ? \033[00m" echo " Digitar s para superior / Digitar i para inferior:" read escolha if [ $escolha = "s" ] ; then echo "Dar o tamanho mínimo (em kilo):" read tamanho echo -e "\033[37m Resultado com um tamanho mínimo de de $tamanho kilo :\033[00m" find /* -size +$tamanho -print # busca pelo tamanho orientado superior else # então solicitação de um tamanho mínimo if [ $escolha = "i" ]; then echo "Dar o tamanho máximo onner (em kilo):" read tamanho echo -e "\033[37m Resultado com um tamanho máximo de de $tamanho e kilo :\033[00m" find /* -size -$taille -print # busca pelo tamanho orientado else # então solicitação de um tamanho max exit 0 fi fi echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_sauv } função busca_nome () { echo " Qual é o arquivo ou diretório que você deseja buscar ?" read nome_fic echo -e "\033[37m resultado de sua busca :\033[00m" find /* -name $nome_fic # busca por tudo / pelo nome echo "Pressionar a tecla <Entre> para continuar..." # esta busca pode demorar um pouco read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac menu_sauv } função Menu_principal () { # volta au menu Principal du script Menu } função menu_sauv () { clear echo "" echo -e "\033[36mProjeto Linux eXia 2008 \033[00m" echo -e " \033[36m3° ano RIR \033[00m " echo -e " \033[37m______________________________\033[00m " echo -e " \033[37m| backup e Busca |\033[00m " echo"" echo -e "\033[33m*** MENU *** :\033[00m" echo"" echo "1 - Salvar o arquivo resolv.conf" echo "2 - Salvar/suprimir um arquivo ou diretório" echo "3 - Criar um diretório" echo "4 - Busca de um arquivo / diretório pelo seu tamanho" echo "5 - Busca de um arquivo / diretório pelo seu nome " echo "6 - Voltar ao menu Principal" echo "" echo "Entre sua escolha :" read ESCOLHA case $ESCOLHA in 1)sauv_resol_conf;; 2)sauv_supr_outro;; 3)criar_rep;; 4)busca_tamanho;; 5)busca_nome;; 6)Menu_principal;;
  • )exit 0;;

esac } menu_sauv } #******************************************************************************** #***********************************************Fonção Serviço Networking #******************************************************************************** função networking () { função restart () { /etc/init.d/networking restart # reinicialização do serviço networking echo "revenir au menu ? [y/n]" read resposta if [ $resposta = "y" ] ; then menu else echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac Menu fi } função stop () { /etc/init.d/networking stop # parada do service networking por stop echo "voltar ao menu ? [y/n]" read resposta if [ $resposta = "y" ] ; then menu else echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac Menu fi } função start () { # reinicialização do service networking por /etc/init.d/networking start # start echo "voltar ao menu ? [y/n]" read resposta if [ $resposta = "y" ] ; then menu else echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac Menu fi } função edit () { vi /etc/resolv.conf # vi permite editar em linha de comando clear # le arquivo resolv.conf echo"" echo "Voltar ao menu Administração do service Networking ? [y/n]" read resposta if [ $resposta = "y" ] ; then menu else echo "Pressionar a tecla <Entre> para continuar..." read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac Menu fi } função Menu_principal () { Menu } função menu () { # configuração da aparência e da clear # sintaxe do menu de administração echo "" # du service Networking echo -e "\033[36mProjeot Linux eXia 2008 \033[00m" echo -e " \033[36m3° ano RIR \033[00m " echo -e " \033[37m____________________________________________\033[00m " echo -e " \033[37m| Administração do serviço Networking |\033[00m " echo"" echo -e "\033[33m*** MENU *** :\033[00m" echo"" echo "1 - Restart" echo "2 - Stop" echo "3 - Start" echo "4 - Editar o arquivo resolv.conf" echo "5 - Voltar ao menu Principal" echo "" echo "Entre sua escolha :" read ESCOLHA case $ESCOLHA in 1)restart;; 2)stop;; 3)start;; 4)edit;; 5)Menu_principal;;
  • )exit 0;;

esac } menu } #**************************************************************************** #*************************************************Função fechar #**************************************************************************** função fechar () { exit } #**************************************************************************** #************************************************Fonção MENU #**************************************************************************** função Menu () { # concepção do menu Principal do script que chama echo "" # as sub funções echo -e "\033[36mProjeot Linux eXia 2008 \033[00m" echo -e " \033[36m3° ano RIR \033[00m " echo -e " \033[37m _______________________________ \033[00m " echo -e " \033[37m| Script da administração |\033[00m " echo"" echo -e "\033[33m*** Menu Principal *** :\033[00m" echo"" echo "1 - Gestão dos usuários" echo "2 - Gérer les processus" echo "3 - Recuperar os processos" echo "4 - Backup e Busca" echo "5 - Administração do serviço Networking" echo "6 - Fechar" echo "" echo "Entre sua escolha :" read ESCOLHA # leitura da escolha e chamada das funções case $ESCOLHA in 1)gestão_usuário;; 2)matar_proc;; 3)recuperar_processo;; 4)sauv_busca_arquivo;; 5)networking;; 6)quitter;;
  • )exit 0;;

esac } # FIM da função do menu Principal if [ ! 'id -u' = 0 ]; # Verificação do identificador do user then # se o idetinficador não foi aquele do root echo -e "\033[31m Este script deve ser executado em root \033[00m" # o script não foi executado, echo"" # Senão acesso ao Menu principal echo "**********************************************" echo "Pressionar a tecla <Entre>para fechar..." echo "**********************************************" read tecla case $tecla in
  • )echo -e "\033[37m**** Retomada do script... ****\033[00m";;

esac exit 0 else Menu fi

Tradução feita por Ana Spadari

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Este documento, intitulado 'Script de administração Linux', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade