Enviado em 06/08/2011 - 11:47h
Sou iniciante em desenvolvimento de SHELL SCRIPT e no geral rsrs.#!/bin/bash # # - Faz acesso exclusivo a um determinado arquivo e atualiza seu contador. # retorna info do contador e dispara processos em arquivos. # Esta rotina tem a finalidade de eliminar serviços residentes no cron. # Hoje temos mais de 350 serviços no cron e isto é insustentável. #------------------------------------------------------------------------------ # name: CheckContador.sh # since: 2011-08-04 17:58 (GMT -03:00) # author: Geraldo T. Albuquerque - Twitter: @AprendiNoLinux # more: http://aprendinolinux.wordpress.com/ # ############################################################################### # TODO: Script de estações até solucionar controle de processos remotos. # ----------------------------------------------------------------------------- # XXX: Cenário ideal: Serviço roda no servidor e verifica pasta virtual ssh. # Cada estação deve fazer solicitações de contadores. # Serviço rodando no server deve fazer processamento e devolver retorno. # Estações recebem retorno e executam seus processamentos. # São mais de 50 máquinas que tentam acesso a vários arquivos de contadores. # ----------------------------------------------------------------------------- # TODO - Indica uma tarefa a ser feita ou pendência. # FIXME - Use para indicar um bug conhecido e precisa ser arrumado # XXX - Enviar um recado importante no ponto. # ----------------------------------------------------------------------------- # Convenções padronizadas no Script. Padrao.txt contém todas as convenções. # ----------------------------------------------------------------------------- # Variáveis GLOBAIS serão MAIÚSCULAS. Se forem liga desliga 0=desliga 1=ligado. # Variáveis locais ou temporárias sempre em minúsculo. "_" separa nomes. # Nome de função sempre iniciar com "_" e capitalizada ex: _MinhaFuncao() # Dentro das funções, sempre definir a variável como local ao nomea-las. # Sempre incluir pelo menos as opções -h, --help, -v, -V, e -q # ----------------------------------------------------------------------------- # Qualquer Alteração efetivada deve ser notificada no Alteracoes.txt. # A cada NOVA versão deve ser atualizado o arquivo Noticias.txt # Registrar em Noticias.txt os créditos de contribuidores da versão. # # ----------------------------------------------------------------------------- ###
Enviado em 06/08/2011 - 14:43h
Atente para as 80 colunas. Seu código está esta ultrpassando o frame de postagemEnviado em 06/08/2011 - 17:43h
Obrigado pelo feedback inicial @ronin seguindo...Enviado em 06/08/2011 - 22:33h
Versão para sugestões e críticas. Comentários no final.#!/bin/bash # #: package: Acessos (nome de exemplo p/ Script ou executável final) (***) #: file: CheckContador.sh (Do Script atual) #: since: 2011-08-04 17:58 (GMT -03:00) #: author: Geraldo T. Albuquerque - Twitter: @AprendiNoLinux #: co-author: Meu chefe mesmo sem fazer porra nenhuma. ;) opcional (***) #: contributors: créditos a colaboradores (***) #: site: http://aprendinolinux.wordpress.com/ (propaganda a desgraça do negócio) #: version: 1.0b (atual release.) #: download: [link para baixar a versão atual] #: support: [Link para local de suporte] (***) #: e-mail: canabrava@sotomandouma.com.br (***) #------------------------------------------------------------------------------ #: objectives: Resumo prático e rápido sobre o Script. De 1 a 5 linhas. #------------------------------------------------------------------------------ #: features: Alguma coisa miraculosa que inventou a roda. (***) #: + retorna info do contador e dispara processos em arquivos. #: + Verifica status do usuário. #: + Alerta sobre sobrecarga nos contadores. #------------------------------------------------------------------------------ #: comments: Comentários que julgar útil e até agradecimentos. #: #: #------------------------------------------------------------------------------ #: charset: UTF-8 #: end line: Linux #: more: Veja Acessos.leiame.txt Acessos.alteraçoes.txt Acessos.ajuda.txt #: dependencies: Caso exista algum dependência informe. (***) #: Language: Default: lang.acessos.pt_br , lang.acessos.en (***) # (***) = opcionais #------------------------------------------------------------------------------ #--Se o Script for em um único arquivo usar changelog interno------------------ #: changelog: Mesmo externo, informe sobre a última versão aqui. #: date: 2011-08-04 23:58 (GMT -03:00) #: + Adicionada a capacidade de errar na divisão #: - Removido teste da dentadura. #: [fixed] Trocado o programador. #: [changed] Alterado ou melhorado algum funcionamento anterior. #: version: 1.1a #: autor: autor do release [ link ] (Pode ter autor diferente entre versões.) #: #: date: 2011-08-06 08:12 (GMT -03:00) #: + Adicionada a capacidade de retornar o resto da divisão #: - Removido teste de hora. #: [fixed] algum bug relatado e corrigido. #: [changed] Alterado ou melhorado algum funcionamento anterior. #: version: 1.1b #: autor: autor do release [ link ] (Pode ter autor diferente entre versões.) #: ps: Manter links de versões anteriores é uma responsa danada rsrs. #------------------------------------------------------------------------------ #: WARNING! downloading or installing the Software, you is responsable for all #: problem. Cannot guarantee that no harm will be done to your computer or #: you operating system, ... blá blá blá.... La garantia sou jô :) #: ############################################################################### #: TODO: Script de estações até solucionar controle de processos remotos. #------------------------------------------------------------------------------ #: XXX: ALERTA: Serviço roda no servidor e verifica pasta virtual ssh. #: Cada estação deve fazer solicitações de contadores. #: Serviço rodando no server deve fazer processamento e devolver retorno. #: Estações recebem retorno e executam seus processamentos. #: São mais de 50 máquinas que tentam acesso a vários arquivos de contadores. #------------------------------------------------------------------------------ #: TODO: Indica uma tarefa a ser feita ou pendência. #: FIXME: Use para indicar um bug conhecido e precisa ser arrumado #: XXX: Enviar um recado importante no ponto. # ------Fim das convenções. Abaixo resumo do Padrao.txt ----------------------- # Convenções padronizadas no Script. Padrao.txt contém todas as convenções. # -Incluído abaixo mas ficará no Padrao.txt, só pra lembrar ------------------- # Variáveis GLOBAIS serão MAIÚSCULAS. Se forem liga desliga 0=desliga 1=ligado. # Variáveis locais ou temporárias sempre em minúsculo. "_" separa nomes. # Nome de função sempre iniciar com "_" e capitalizada ex: _minhaFuncao() # Dentro das funções, sempre definir a variável como local ao nomea-las. # Sempre incluir pelo menos as opções -h, --help, -v, -V, e -q # ----------------------------------------------------------------------------- # Qualquer Alteração de código efetivada notificar no Acessos.alteracoes.txt. # A cada NOVA versão deve ser atualizado o arquivo Acessos.noticias.txt # Registrar em Noticias.txt os créditos de contribuidores da versão. # Informações a outros desenvolvedores estarão no leiame.txt # Informações a usuários estarão no arquivo Ajuda.txt # ex: Acessos.ajuda.txt - Acessos.leiame.txt - Acessos.alteracoes.txt # arquivo Padrao.txt contém todas as infos sobre as convenções. # ----------------------------------------------------------------------------- # ps: Trocar nomes em português nos docs esta no escopo. # Acessos.ajuda.txt p/ Acessos.help.txt - dependerá das configs. # Vai doer a 1ª vez, mas se for padronizado é 100% reaproveitável. ###
#!/bin/bash # #: file: CheckContador.sh (Do Script atual) #: since: 2011-08-04 17:58 (GMT -03:00) #: author: Geraldo T. Albuquerque - Twitter: @AprendiNoLinux #: site: http://aprendinolinux.wordpress.com/ (propaganda a desgraça do negócio) #: version: 1.0b (atual release.) #: download: [link para baixar a versão atual] #------------------------------------------------------------------------------ #: objectives: Resumo prático e rápido sobre o Script. De 1 a 5 linhas. #------------------------------------------------------------------------------ #: charset: UTF-8 #: end line: Linux #------------------------------------------------------------------------------ #: changelog: O que eu lembrei eu marquei o resto só eu e Deus sabemos. #: date: 2011-08-04 23:58 (GMT -03:00) #: + Adicionada a capacidade de errar na divisão #: - Removido teste da dentadura. #: [fixed] Trocado o programador. #: [changed] Alterado ou melhorado algum funcionamento anterior. #: version: 1.1a #: autor: autor do release [ link ] (Pode ter autor diferente entre versões.) #: #: date: 2011-08-06 08:12 (GMT -03:00) #: + Adicionada a capacidade de retornar o resto da divisão #: - Removido teste de hora. #: [fixed] algum bug relatado e corrigido. #: [changed] Alterado ou melhorado algum funcionamento anterior. #: version: 1.1b #: autor: autor do release [ link ] (Pode ter autor diferente entre versões.) #------------------------------------------------------------------------------ #: ps: Descontraindo. Link de suporte ? e-mail ? Empresa ? Salve-se quem puder. #: WARNING! La garantia soi Jô meu cumpadre. Pode usar sem medo em ser feliz. #: Qualquer problema, vá no forum http://www.vivaolinux.com.br/ e reze.
Enviado em 07/08/2011 - 12:26h
Feedback necessário para inclusão de variáveis úteis quando se carrega o SHELL que podem ser de uso geral.#!/bin/bash # # #: package: biblioteca.includes.sh (***) #: file: ambiente.bash.include.sh #: since: 2011-08-07 11:18 (GMT -03:00) #: author: Geraldo T. Albuquerque - Twitter: @AprendiNoLinux #: version: 0.01 Alfa #------------------------------------------------------------------------------ #: objectives: Capturar o ambiente primário do usuário no bash #------------------------------------------------------------------------------ #: comments: coleta o máximo de infos do bash do usuário. #: Qualquer variável especial de aplicativo não é neste local. #: Arquivo pode ser reaproveitado em vários Scripts. #------------------------------------------------------------------------------ function _ambiente.bash { # Contém o editor preferencial, ex: nano, mcedit, etc... _EDITOR="$EDITOR" # Contém o caminho completo ao home do usuário. _HOME="$HOME" # LANG=Idioma e codificação, exemplo: pt_BR.UTF-8 # LANGUAGE=Sigla do idioma usado e o inglês, ex: pt_BR:en _LANG="$LANG" _LANGUAGE="$LANGUAGE" # Diretório atual PWD formato: /home/administrador/v1 # Diretório ANTERIOR formato: /home/administrador _DIRETORIO_ATUAL="$PWD" _DIRETORIO_ANTERIOR="$OLDPWD" # Caminho PATH, formato: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin _PATH="$PATH" # _PATH_SHELL="$SHELL" #/bin/bash # PID do AGENTE ativo de SSH, formato: pid NNNN _SSH_AGENT_PID="$SSH_AGENT_PID" # Nome do usuário conectado, USER ou USERNAME, ex: meunome _USER="$USER" _USERNAME="$USERNAME" # Qual o Id do usuário atual. Nas duas formas básicas. Se 0 (zero) é root. _USER_ID=$(id -u) _USER_UID="$UID" # Linhas definidas para uso de histórico. _LINHAS_DE_HISTORICO="$HISTSIZE" # 500 # HOSTNAME ou nome da máquina. _HOSTNAME="$HOSTNAME" # Controle de separador padrão do shell. Cuidado com esta variável. # Para atribuir novo valor: IFS=: ( padrão normal é: ' \t\n' ) # Após usar, lembrar de retornar ao original: IFS="_IFS_ORIGINAL" _IFS_ORIGINAL="$IFS" # Salvando SO real. Não é a distribuição, formato: linux-gnu _OSTYPE="$OSTYPE" } _ambiente.bash return #------------------------------------------------------------------------------ #: Notas: Que outras infos de ambiente importantes para estar aqui. #: FIXME: Falta variável que indica qual é a distribuição usada. #: TODO: Endereço completo de acesso será passado pelo pacote de biblioteca. #: XXX: ATENÇÃO, não usa biblioteca? Coloque este no diretório de seu Script. #------------------------------------------------------------------------------
Enviado em 07/08/2011 - 23:14h
Continuando o desenvolvimento, chegou a hora das configs.#!/bin/bash # #: package: Acessos (nome de exemplo p/ Script ou executável final) (***) #: file: config.pastas.sh #: since: 2011-08-08 22:18 (GMT -03:00) #: author: Geraldo T. Albuquerque - Twitter: @AprendiNoLinux #: site: http://aprendinolinux.wordpress.com/ (propaganda desgraça do negócio) #: version: 0.02 ALFA (atual release.) #------------------------------------------------------------------------------ #: objectives: Definir todas configurações de diretórios dos aplicativos. #------------------------------------------------------------------------------ #: features: Modularizando as configurações. (***) #: TODO Precisa ser feito os verificadores dos diretórios. #: XXX Padrão de variáveis precisa ser melhorado. Verificadores irão falhar. #: FIXME Não verifica as dependências para receber valores. #------------------------------------------------------------------------------ #: comments: Onde eu fui me meter. #: #------------------------------------------------------------------------------ #: charset: UTF-8 #: end line: Linux #------------------------------------------------------------------------------ # Todas as variáveis de controle de diretórios serão movidas para # arquivo especial de CONFIGS. # Serão separadas em 2 tipos de arquivos. # As variáveis também estão sendo feitas para serem portáveis. # Se alguém tiver uma opção melhor, é sempre bem vindo para opinar. #------------------------------------------------------------------------------ # Faz teste se a variável e o caminho do diretório existem. # Se for desconhecido, pode ter sido chamado isoladamente. # Vai avisar e abortar. if test -e "$_HOME" ; then : else echo "Vairável OBRIGATÓRIA _HOME não foi definida, verifique !!!" echo "Não pode carregar este arquivo sem as definições de AMBIENTE." read -t 5 exit fi # TODO: Desenvolver função de teste para arquivos e diretórios. # Usar em todas configs. # Parâmetros (V=verificar ou (C)=Criar) function _config.pastas { # Raiz do diretório absoluto para todos arquivos temporários. # Qualquer diretório temporário será criado abaixo dele. # Caso não exista, diretório será criado. CONF_TMP="${_HOME}/tmp" DIR_TMP="${CONF_TMP:-${HOME}/tmp}" # Local onde estarão todos arquivos para a instalação dos Scripts. # Para facilitar a base de testes, local padrão ao BASE. # Quando finalizado, o instalador irá fazer o seu trabalho e irá solicitar # o local de instalação ao usuário final. DIR_INSTALL="/TESTES" # Local base para alocação das caixas de comunicação. DIR_BASE="/TESTES" # Local base onde irã ficar os Scripts personalizados. # Cada tipo de aplicação deverá ter o seu próprio diretório para os Scripts. # Muitas vezes poderá ser o próprio diretório do DIR_BASE. # Note, a pasta de SCRIPTS é idenpendente de onde está sendo feito o trabalho. DIR_SCRIPTS="/TESTES/SCRIPTS" # Local onde ficarão todas as bibliotecas reaproveitáveis de código. # Todos Scripts deverão compartilhar este endereço. # Para o desenvolvimento, a variável está em sub-diretório do DIR_BASE # Será movida futuramente após liberação da versão a outro local. # Não tem importância o local onde estão os outros Scripts. # As bibliotecas não precisam saber de seus diretórios. # Quem precisa saber são os Scripts. # Bibliotecas poderão verificar se o código que está solicitando seu # trabalho é incompatível. Restrições de versão serão impostas. DIR_LIBS="/TESTES/LIBS" # local físico onte estarão os Scripts especializados das tarefas. # Se nova versão no servidor remoto, atualização será automática. # Este é o local REAL onde os Scripts estarão. # Dependem da variável DIR_SCRIPTS e não de DIR_BASE, faz grande diferença. # Neste momento, Scripts deverão estar ao alcance do usuário. # Só um facilitador para os testes. Serão movidos a outro local furamente. DIR_APLICATIVO="${_HOME}${DIR_SCRIPTS}" # Diretório de bibliotecas de código reaproveitável. # Se nova versão no servidor remoto, atualização será automática. DIR_BIBLIOTECAS="${_HOME}${DIR_LIBS}" # Caixa de entrada da máquina que solicita contador. Local RELATIVO. # Se não existe, será criada. # Na versão final, a caixa de entrada tem um arquivo de assinatura. # Dentro do arquivo, várias linhas contendo as assinaturas e os serviços. # Outro Script rodando em Cron na máquina, varre a caixa de entrada em # busca de serviços a realizar. CONF_ENTRADA="/CAIXA_DE_ENTRADA" # Diretório físico da caixa posta de entrada. DIR_CX_ENTRADA="${_HOME}${DIR_BASE}${CONF_ENTRADA}" # Caixa de saida contém os serviços realizados. Local RELATIVO. # O Script envia o conteúdo da caixa de saída para a caixa de entrada virtual. CONF_SAIDA="/CAIXA_DE_SAIDA" #Diretório físico da caixa de saída local. DIR_CX_SAIDA="${_HOME}${DIR_BASE}${CONF_SAIDA}" # Local RELATIVO para alocação das caixas de comunicação. DIR_BASE_SERVER="/VIRTUAL" # Local base onde irãO ficar os Scripts personalizados. # Este diretório não será criado pelos Scripts locais. # Só está sendo mencionado por questões de entendimento. DIR_SCRIPTS_SERVER="/IGNORADO/SCRIPTS" # Local onde ficarão todas as bibliotecas reaproveitáveis de código. # Vide dica do DIR_SCRIPTS_SERVER. DIR_LIBS_SERVER="/IGNORADO/LIBS" # Caixas de entrada virtual. Opera em servidor remoto. # Para realizar os testes, será criada caso não exista. # Vai receber os arquivos de testes das várias máquinas. # Rotinas em cron irão pegar o conteúdo dos arquivos e assinaturas. # Processarão as informações e enviarão retornos as caixas de saída. DIR_CX_ENTRADA_REMOTA="${_HOME}${DIR_BASE_SERVER}/CAIXA_DE_ENTRADA" # Caixa de saída irão conter as assinaturas e serviços realizados. # Coleta será feita por quem solicitou e irá a caixa de entrada local. # Nas sub-pastas também ficarão as novas versões dos Scripts. # Se encontrar novas versões, as máquinas irão baixar estes arquivos # Conforme as orientações contidas nos arquivos de serviço. DIR_CX_SAIDA_SERVER=${_HOME}${DIR_BASE_SERVER}"/CAIXA_DE_SAIDA" # Irá conter todos os 53 contadores de serviços. # Irá armazenar alguns logs das máquinas solicitantes e retornos. # Arquivos de travas estarão em suas sub-pastas. # Comanda a demanda de trabalho das estações automatizadas. DIR_TAREFAS=${_HOME}${DIR_BASE_SERVER}"/CONTADORES" } _config.pastas return
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela