=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= UNIX GURU UNIVERSE DICA UNIX Dica Unix 2548 - 23 de dezembro de 2006 http://www.ugu.com/sui/ugu/show?tip.today =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ATUALIZAÇÕES MÚLTIPLAS DE SISTEMAS DE ARQUIVOS Esta dica vai lhe mostrar um dos vários métodos de atualizar múltiplos sistemas de arquivos com um só script : Há uma variedade de possibilidades para implementar isto, mas esta não tem necessidade de uma atualização do sistema de arquivos remoto, excetuando os arquivos que você precisa atualizar ( ex - não há atualização dos arquivos .rhosts ou hosts.equiv ). Eu utilizo macros de ftp como as abaixo : ------------------------------- CUT HERE --------------------------- #!/bin/ksh # # program: update-all-workstations # purpose: To ensure that all workstations have the same update of # specific programs. # # notes: We run a ping command also to see if host is alive # before we try to do the updates. # hosts=`ypcat hosts | grep col[d-f] | awk '{print $2}'` for host in $hosts do alive=`ping -v $host 1 | awk '{print $3}'` if [ $alive = "alive" ]; then echo $host >> live-hosts else echo $host >> dead-hosts fi done # A próxima sequencia não é requerida se as estações de trabalho possuirem o arquivo .rhosts # pois ele permite ao servidor ( ou sistema que roda o script ) o acesso root # Se o .rhosts é utilizado, há a eliminação do prompt para pedido de senha e a criação do arquivo #.netrc # # A linha posterior assume que todas as estações de trabalho possuem a mesma senha # Se isto não for o caso, a administração necessita de mais algumas arrumações. Mova as próximas # linhas para baixo depois do condicional do se as senhas são diferentes em cada estação de trabalho. echo "Please enter the root password for the workstations:\c" read password for host in `cat live-hosts` do echo "machine $host login root password $password" > $HOME/.netrc chmod 600 $HOME/.netrc echo "macdef init" >> $HOME/.netrc echo "prompt" >> $HOME/.netrc echo "binary" >> $HOME/.netrc echo "put /tmp/myfiles.tar /tmp/myfiles.tar" >> $HOME/.netrc echo "close" >> $HOME/.netrc echo "quit" >> $HOME/.netrc echo "\n\n" >> $HOME/.netrc # Os próximos passos são redundantes, mas necessários. # se você está utilizando um arquivo .netrc, este arquivo vai será utilizado depois do ftp # e antes do comando rexec rm $HOME/.netrc echo "machine $host login root password $password" > $HOME/.netrc chmod 600 $HOME/.netrc rexec $host "cd /usr/local; tar xvf /tmp/myfiles.tar" done # fim deste script ############################################ Agora, se você está utilizando o arquivo .rhosts, o processo é muito mais simples. Examine o script que procura o arquivo .rhosts em cada estação de trabalho para permitir que o servidor tenha acesso root em cada uma delas. ---------------------------- CUT HERE ----------------------------- #!/bin/ksh # # program: update-using-rhosts # função : ter certeza que todas as estações estão com a mesma versão # de um programa específico # # Nota : iremos rodar um ping para ver se o host está on line para # depois efetuar as atualizações # hosts=`ypcat hosts | grep col[d-f] | awk '{print $2}'` for host in $hosts do alive=`ping -v $host 1 | awk '{print $3}'` if [ $alive = "alive" ]; then echo $host >> live-hosts else echo $host >> dead-hosts fi done for host in `cat live-hosts` do # primeiramente, criamos um arquiv otar para a saída padrão, jogando via pipe para o rsh # que irá gerar o arquivo no hosts remoto # para logo depois extrair o mesmo no hosts reoto no lugar necessário. tar cvf - ./usr/local/bin | rsh $host "cd /; tar xvf -" done # End of this script Obviamento, o segundo método é muito mais fácil, mas o seu uso vai depender das características de sua estrutura. Se você precisar de assistência para este tipo de scripts, posso lhe ajudar, mas tenha em mente que eu não vou assumir nenhuma responsabilidade por qualquer coisa que possa vir a acontecer em sua estrutura com o uso dos mesmos. Somente um administrador experiente deve tentar o uso destes scripts, e por sua vez tomar todas as precauções necessárias para que não haja problemas posteriores. James A. (Jamie) Dennis jdennis@netset.com ---------------------------------------------------------------------- Para entrar : http://www.ugu.com/sui/ugu/show?tip.subscribe Para sair: http://www.ugu.com/sui/ugu/show?tip.unsubscribe Para enviar uma dica: http://www.ugu.com/sui/ugu/show?tip.today DECLARAÇÃO: TODAS AS DICAS DE UNIX SÃO PROPRIEDADE DA UNIX GURU UNIVERSE E NÃO SÃO PARA SER VENDIDAS, IMPRESSAS OU USADAS SEM O CONSENTIMENTO POR ESCRITO DA UNIX GURU UNIVERSE. TODAS AS DICAS SÃO "USADAS POR SEU PROPIO RISCO". UGU ADVERTE PARA TESTAR TODAS AS DICAS EM UM AMBIENTE QUE NÃO ESTEJA EM PRODUÇÃO.Unix Guru Universe - www.ugu.com - tips@ugu.com - Copyright 1994-2006