Re: [shell-script] Controle de Usuários no Unix,
Primeiro, se quiseres retorno do script(1), é melhor utilizar o source para executar "dentro" do script(2). E para passar vários parâmetros, podes utilizar $1, $2 Assim: #script(1) var1=$1 var2=$2 ... #script(2) source ./script(1) valor_var1 valor_var2 ... 2008/6/3 Petry <[EMAIL PROTECTED]>: > Srs., > > Alguém possui algum script que ajude a administrar a criação/manutenção de > usuários em unix?? Se alguém puder recomendar algum favor entrar em > contato! > > Como não encontrei nenhum, comecei um. Já criei um que cria usuário com > todas as minhas necessidades( vamos chamar de script(1). Não quero mais > editar esse script. Comecei um outro(vms chamar de script(2) que com o > comando "at" programa o desbloqueio/bloqueio de usuário de acordo com a > data-horário que informo. > > Agora nesse que programa bloqueio/desbloq.(script(2)) quero criar uma opção > de criar o usuário chamando o script(1) que criei para isso. Neste > script(1) > ao ser executado ele faz algumas perguntas, o que quero é que script(2) > envie esses parâmetros automaticamente. > > Ou seja, preciso que o script(2) execute o script(1), passe um parâmetro e > "aperte" ENTER, passe outro parâmetro e "aperte" ENTER, e espera o > script(1) > finalizar. > > Obrigado, > > JP > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Controle de Usuários no Unix,
Se você não pode mudar o script(1), faça da seguinte forma no script(2): #script(1) #!/bin/bash read a read b echo "val a - $a" echo "val b - $b" #script(2) #!/bin/bash ./script1 << fim valorA valorB fim Resultado: val a - valorA val b - valorB 2008/6/3 Flavio Junior <[EMAIL PROTECTED]>: > Melhor opção: > > Só faça a pergunta se os dados nao foram passados via linha de comando > do script1, algo como: > > if [ x"LOGIN" == x ]; then > read -p "Login: " LOGIN > fi > > Segunda opção: > > Leia/use o expect ... > > > -- > > Flávio do Carmo Junior aka waKKu > > 2008/6/3 Petry <[EMAIL PROTECTED] >: > > > Opa, > > > > O script(1) ao ser chamado pergunta, por exemplo: > > > > Nome do usuário: [ entro com o nome e aperto ENTER ] > > Senha: [ entro com a senha e aperto ENTER ] > > > > E isso não posso mudar devido outros usos.. o que quero no script(2) é > que > > ele chame script(1), e envie os parametros necessários... algo como: > > > > bash $diretorio/script1.sh > > Nome do usuario: teste\n > > Senha: teste\n > > > > continua outras funções... > > > > obrigado! > > > > Em 03/06/08, Édnei Rodrigues <[EMAIL > > PROTECTED]> > escreveu: > >> > >> Bah tche, explique melhor o que você não consegue fazer. > >> Mas antecipando: > >> Chamada de um arquivo SH => bash $diretorio/nomedoarquivo.sh > >> parametro1 o sh $diretorio/nomedoarquivo.sh parametro1 > >> aí, nesse teu arquivo nomedoarquivo.sh a variável $1 guarda o primeiro > >> parametro da chamada...assim, vc pode trabalhar com esse parametro > >> como quiser. > >> Que mais vc nao sabe? > >> > >> 2008/6/3 Petry <[EMAIL PROTECTED] 40gmail.com>>: > >> > Srs., > >> > > >> > Alguém possui algum script que ajude a administrar a > criação/manutenção > >> de > >> > usuários em unix?? Se alguém puder recomendar algum favor entrar em > >> contato! > >> > > >> > Como não encontrei nenhum, comecei um. Já criei um que cria usuário > com > >> > todas as minhas necessidades( vamos chamar de script(1). Não quero > mais > >> > editar esse script. Comecei um outro(vms chamar de script(2) que com o > >> > comando "at" programa o desbloqueio/bloqueio de usuário de acordo com > a > >> > data-horário que informo. > >> > > >> > Agora nesse que programa bloqueio/desbloq.(script(2)) quero criar uma > >> opção > >> > de criar o usuário chamando o script(1) que criei para isso. Neste > >> script(1) > >> > ao ser executado ele faz algumas perguntas, o que quero é que > script(2) > >> > envie esses parâmetros automaticamente. > >> > > >> > Ou seja, preciso que o script(2) execute o script(1), passe um > parâmetro > >> e > >> > "aperte" ENTER, passe outro parâmetro e "aperte" ENTER, e espera o > >> script(1) > >> > finalizar. > >> > > >> > Obrigado, > >> > > >> > JP > >> > > >> > [As partes desta mensagem que não continham texto foram removidas] > >> > > >> > > >> > >> > >> > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Pegar usuários bloqueados
Thiago, o ideal é sempre colocar a tua tentativa para que possamos entender melhor o que estas fazendo. Se está procurando ajuda, claro que tua tentativa não deu certo. Mas, pra isso que serve a lista. Vê se isso ajuda: grep ':!' /etc/shadow 2008/6/3 Thiago Rodines <[EMAIL PROTECTED]>: > Na verdade eu não tenho nada pronto ainda... eu fiz algumas tentativas > mas > não obtive sucesso. > > O funcionamento é o seguinte: > > assim que um usuário é bloqueado, o caracter ! é adicionado no arquivo > /etc/shadow, conforme abaixo (em negrito): > usuario:*!*$1$g4lfVLhW$5SChIADmVKkuoLQ20u9cm1:13600:0:9:7::: > > Ou seja, se conseguirmos ler todas as linhas do arquivo /etc/shadow e, nas > linhas que possuirem ! depois do :, conseguimos pegar todos os usuários > bloqueados. > > abraços > > 2008/6/3 MrBiTS <[EMAIL PROTECTED] >: > > > > -BEGIN PGP SIGNED MESSAGE- > > Hash: SHA1 > > > > > > | Estou pesquisando e tendo dificuldades para montar um script que liste > os > > | usuários que estão bloqueados no Linux. > > | Alguém tem isso pronto ou consegue dar uma luz. > > > > O que você já tem pronto ? Qual a linha que você está seguindo ? Qual o > > critério que você utiliza para bloquear um usuário ? > > > > - -- > > > > Um abraço > > > > .0. MrBiTs - [EMAIL PROTECTED] 40linuxmasters.info> > > ..0 GnuPG - > > > http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186 > > 000 http://www.mrbits.com.br > > > > -BEGIN PGP SIGNATURE- > > Version: GnuPG v1.4.5 (Cygwin) > > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > > > iD8DBQFIRU77rDdxWm3R8YYRAlBjAJ9E18HHt6aC2ghRs3kuLO94B7mNqwCfVCmu > > x5jIzNpqrVUPdadfC6fc12s= > > =cUus > > -END PGP SIGNATURE- > > > > > > -- > Thiago Rodines > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Listar somente nomes dos subdiretórios
O "do" do for é outro comando. Deve estar em nova linha ou precedido de ";" 2008/6/3 Daniel Barros <[EMAIL PROTECTED]>: > Valew André > > Isso no shell funciona blz, é exatamente o que eu preciso. > > Mas tentei montar um script utilizando essa linha q vc passou, mas não > tô conseguindo rodar ele. > > Tô tentando automatizar umas tarefaz repetitivas > > Segue o código, por enquanto seria isso... > > #!/bin/bash > > for i in `ls -l / | grep ^d | awk '{print $NF}'` do > chmod 777 $i > cd $i > chmod 666 *.txt > cd.. > done > > Valew > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Listar somente nomes dos subdiretórios
Sim. If condição then ação 1 else #opcional ação 2 fi ou If condição;then ação 1;else ação 2 ; fi ou condição && ação 1 || ação 2 2008/6/4 miranda <[EMAIL PROTECTED]>: > On Wed, 2008-06-04 at 10:47 -0300, Daniel Barros wrote: > > >O "do" do for é outro comando. Deve estar em nova linha ou precedido > > de ";" > > o then do if também ?? > > > > > > > > > - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > - > Sair da lista: [EMAIL PROTECTED] > - > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Listar somente nomes dos subdiretórios
Na verdade, não sei se podemos chamar de outro comando. Mas, na prática deve ser utilizado como postei anteriormente. Dá uma olhada nos links abaixo http://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarPapo003 http://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarPapo004 2008/6/4 miranda <[EMAIL PROTECTED]>: > Desculpe, fui lacônico na pergunta . > o Then do if é outro comando ? > > On Wed, 2008-06-04 at 09:44 -0300, César Vianna wrote: > > Sim. > > > > If condição > > then > > ação 1 > > else #opcional > > ação 2 > > fi > > > > ou > > > > If condição;then ação 1;else ação 2 ; fi > > > > ou > > > > condição && ação 1 || ação 2 > > > > 2008/6/4 miranda <[EMAIL PROTECTED]>: > > > > > On Wed, 2008-06-04 at 10:47 -0300, Daniel Barros wrote: > > > > >O "do" do for é outro comando. Deve estar em nova linha ou > > precedido > > > > de ";" > > > > > > o then do if também ?? > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Esta lista não admite a abordagem de outras liguagens de > > programação, como > > > perl, C etc. Quem insistir em não seguir esta regra será moderado > > sem prévio > > > aviso. > > > -- > > > Sair da lista: [EMAIL PROTECTED] > > > ------ > > > Esta lista é moderada de acordo com o previsto em > > > http://www.listas-discussao.cjb.net > > > -- > > > Servidor Newsgroup da lista: news.gmane.org > > > Grupo: gmane.org.user-groups.programming.shell.brazil > > > > > > Links do Yahoo! Grupos > > > > > > > > > > > > > -- > > César Vianna > > [ -n $ser ] || [ ! -n $ser ] && echo eis a questão > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > - > Sair da lista: [EMAIL PROTECTED] > - > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] verificar string dentro de outra string
Lucas, não sei se entendi tua dúvida. Mas, segue uma sugestão. saida=`echo "getstate() = on"|cut -d" " -f3` # altere o "echo "getstate() = on"" pelo comando que gera a tua saída. # o cut -d" " -f3 pega a terceira coluna da saída, tendo como separador um espaço. # para testar a saída: if [ $saida = "off" ]; then echo off; else echo on; fi ou [ $saida = "off" ] && echo "esta off" || echo "esta on" 2008/6/4 Lucas Mocellin <[EMAIL PROTECTED]>: > Pessoal, > > sou iniciante e tenho uma duvida basica, > > tem um comando que retorna: > [EMAIL PROTECTED]:~$ /usr/bin/vmware-cmd /home/vmware/base.vmx getstate > getstate() = off > ou > getstate() = on > > gostaria de tratar essa saida, entao encontrei o expr: > > expr index $saida "on" > > para saber se eh on, ou substituo por off, se a saida for diferente de 0 eh > verdadeiro, se nao eh falso.. > > muita gambiarra o que estou fazendo? > > bom, nem funciona olha soh: > [EMAIL PROTECTED]:~$ asdf=`/usr/bin/vmware-cmd /home/vmware/base.vmx getstate` > vmware@:tcheka~$ echo $asdf > getstate() = off > [EMAIL PROTECTED]:~$ expr index $asdf on > expr: syntax error > > estou achando que a saida nao fica uma "string". certo? o que esta errado > na > minha colocacao? ou sugestoes melhores? > > aproveitando, como verifico o tipo de uma variavel? > > obrigado, > > Lucas. > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Arrumar permissão do diretório automaticamente
Olha só... linha=0 linha=$linha+1 echo $linha 0+1 Uma maneira de fazer incremento é linha=`echo $(($linha+1))` 2008/6/4 Jean Rafael Schultz <[EMAIL PROTECTED]>: > Olá, > > Acho que não me fiz compreender. > Tenho um servidor samba que autentica no OpenLdap, ele é um servidor de > dominio/arquivos. > Neste servidor possuo cerca de 3.000 usuários que possuem o seu respectivo > diretório pessoal. Não sei por que as vezes as permissões dos diretórios > pessoais não estão com as permissões de dono corretas. > Como o nome do usuario e o nome do diretorio são iguais preciso de um > script > que arrume as permissões do diretório do usuario. > > Fiz o seguinte script, mas não está funcionando. > Se alguem puder me ajudar > > #!/bin/bash > arquivo=$(ls) > linha=0 > for i in $arquivo; do > linha=$linha+1 > usuario=$(ls | grep -n ^ | grep ^$linha: | cut -d: -f2) > chown $usuario -R /home/$usuario > > done > > 2008/6/4 Flavio Junior <[EMAIL PROTECTED] >: > > > > A resposta a sua duvida é simples Jean. Eu só vi o problema na forma > > como ela foi exposta. > > > > Ou seja, eu vou te ajudar ao invés de te dar a solução pronta. > > > > Se fosse pra eu fazer isso, eu usaria o "for" > > > > Veja um exemplo: > > > > #!/bin/bash > > for nome in /etc /home /boot; do > > echo "O valor da variavel nome e: $nome" > > done > > > > Espero ter ajudado > > > > -- > > > > Flavio do Carmo Junior aka waKKu > > > > 2008/6/4 Jean Rafael Schultz <[EMAIL PROTECTED] > > 40gmail.com>>: > > > > > Olá, > > > > > > Preciso de um script que de um chown nomedousuario no diretório pessoal > > de > > > cada usuário automaticamente sendo que o nome do usuário é igual ao > nome > > do > > > diretorio. > > > > > > Constantemente o samba perde as permissões de alguns usuários. > > > > > > Abraços > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Re: Escrever numa linha especifica de um arquivo
sed 's/padrao/padrao\nnovalinha1\nnovalinha2/' arquivo trocando padrao por InstalaPacote LibPostGres.tgz ou o que tu quizer 2008/6/5 cristianoeinar <[EMAIL PROTECTED]>: > Ops.. Desculpe me expressei mal. São arquivos txt, a linha onde > necessito inserir é baseado em um padrão. Exemplo tenho que > acrescentar duas linhas abaixo da linha que contiver a string > InstalaPacote LibPostGres.tgz. Obrigado > > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Inverter sequencia de caracteres de um String
rev <<< BADCFEHG GHEFCDAB 2008/6/10 Petry <[EMAIL PROTECTED]>: > Bom dia, > > Tenho uma sequência de caractares alfanuméricos invertidos da seguinte > forma: > > BADCFEHG > > E quero transforma-lo em: > > ABCDFEGH > > Uso awk para pegar esse campo de um arquivo, se der para desinverte-lo > usando awk fica mais prático. > > Tentei achar uma função do awk no estilo do split, mas que pegasse cada > letra de uma string e armazenasse num array, que daí eu consegueria colocar > em ordem com um for.. > > Agradeço qualquer idéia, > > Valeu > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Inverter sequencia de caracteres de um String
Desculpe, li errado a pergunta. 2008/6/10 César Vianna <[EMAIL PROTECTED]>: > rev <<< BADCFEHG > > GHEFCDAB > > > > > 2008/6/10 Petry <[EMAIL PROTECTED]>: > > Bom dia, >> >> Tenho uma sequência de caractares alfanuméricos invertidos da seguinte >> forma: >> >> BADCFEHG >> >> E quero transforma-lo em: >> >> ABCDFEGH >> >> Uso awk para pegar esse campo de um arquivo, se der para desinverte-lo >> usando awk fica mais prático. >> >> Tentei achar uma função do awk no estilo do split, mas que pegasse cada >> letra de uma string e armazenasse num array, que daí eu consegueria >> colocar >> em ordem com um for.. >> >> Agradeço qualquer idéia, >> >> Valeu >> >> [As partes desta mensagem que não continham texto foram removidas] >> >> >> > > > > -- > César Vianna > [ -n $ser ] || [ ! -n $ser ] && echo eis a questão -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] apagar 2 linhas e adicionar 3
Se o número das linhas forem fixos, o exemplo abaixo funciona. [~]$ cat txt Resultado: #-- # DOMAIN: dominio.com.br #-- .dominio.com.br:192.168.0.1:a:259200 .dominio.com.br:192.168.0.2:b:259200 Cwebmail.dominio.com.br:webmail-cluster.exemplo.com.br:86400 [EMAIL PROTECTED] ~]$ sed '4,5d' [~]$ sed '4,5d' txt|sed '3a\ .dominio.com.br::ns1.exemplo.com.br:259200\ .dominio.com.br::ns2.exemplo.com.br:259200\ .dominio.com.br::ns3.exemplo.com.br:259200' Resultado: #-- # DOMAIN: dominio.com.br #-- .dominio.com.br::ns1.exemplo.com.br:259200 .dominio.com.br::ns2.exemplo.com.br:259200 .dominio.com.br::ns3.exemplo.com.br:259200 Cwebmail.dominio.com.br:webmail-cluster.exemplo.com.br:86400 2008/6/12 Thiago Alencar <[EMAIL PROTECTED]>: > Olá a todos, > > Primeira vez que escrevo na lista. Primeiramente bom dia a todos. > > Galera tenho estudado os comandos em SED no site "só sed" mas até agora não > consegui o que preciso. > > Eu preciso mudar varios arquivos onde muda o dominio, segue abaixo exemplos > do começo dos arquivos: > > Arquivo atual: > > #-- > # DOMAIN: dominio.com.br > #-- > .dominio.com.br:192.168.0.1:a:259200 > .dominio.com.br:192.168.0.2:b:259200 > Cwebmail.dominio.com.br:webmail-cluster.exemplo.com.br:86400 > > Arquivo pretendido: > > #-- > # DOMAIN: dominio.com.br > #-- > .dominio.com.br::ns1.exemplo.com.br:259200 > .dominio.com.br::ns2.exemplo.com.br:259200 > .dominio.com.br::ns3.exemplo.com.br:259200 > Cwebmail.dominio.com.br:webmail-cluster.exemplo.com.br:86400 > ... > > Eu só sabia até então como mudar uma linha pela outra, ou parte da linha, > mas neste caso to quebrando a cabeça aqui e não consigo. Peço a ajuda de > vocês! > > Grato, > > Thiago Alencar > > __ > Fale com seus amigos de graça com o novo Yahoo! Messenger > http://br.messenger.yahoo.com/ > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna [ -n $ser ] || [ ! -n $ser ] && echo eis a questão [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Arquivos no Servidor
Arquivos com o que repetidos?? Nomes? Como eles estão organizados? Seria interessante detalhar melhor seu ambiente e sua necessidade. Abraços 2008/6/24 Eduardo Miranda - EFSM Solutions <[EMAIL PROTECTED]>: > Bom dia a todos do Grupo; > > Na empresa onde trabalho, existe aproximadamente 550 Gigas de informação. > > Seria muito complexo montar um script para fazer uma listagem dos > arquivos com repetidos? > Como faria essa busca? > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Usuarios Linux
Pelo exemplo abaixo, acredito que consigas. Apenas altere o echo pelos comandos que desejas (chmod, chown, etc) for i in `cut -d: -f1 /etc/passwd` do echo user - $i done Resultado user - root user - bin user - daemon user - adm user - lp user - sync user - shutdown user - halt user - mail 2008/7/8 Allan Carvalho <[EMAIL PROTECTED]>: > Prezados. > > Tenho um servidor de arquivos linkado à um AD via ADS, estou fazendo > migração das pastas dos usuários para o servidor de arquivos. > O problema é que tenho mais de 100 usuários cadastrados, digitar chown e > chmod para cada um vai ser muito cansativo, existe um script que liste os > usuários e os guarde num array? Acredito que colocando um array num laço for > eu consigo setar as permissões dos usuários. > > Agradeço desde já. > > -- > Atenciosamente, > Allan Carvalho > MSN: [EMAIL PROTECTED] > -- > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua > cara @ymail.com ou @rocketmail.com. > http://br.new.mail.yahoo.com/addresses > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Usuarios Linux
Allan, antes que os moderadores se pronunciem, podemos tentar auxiliar na questão de shell. Para tanto, precisas informar qual formato estão os teus dados (por colunas, por linhas, com qual caracter separador, etc), quais comandos precisas utilizar e qual a dúvida pontual. Abraços 2008/7/8 Allan Carvalho <[EMAIL PROTECTED]>: > Então... os usuários não estão cadastrados no máquina local, estão no > AD, consigo visualizar os usuários pelo wbinfo -u, só que não sei como > manipular os dados da resposta do comando, tipo adicionar as linhas da > resposta em um array para que assim eu possa passar as permissões da pasta > via chown e chmode. > > > -- > Atenciosamente, > Allan Carvalho > MSN: [EMAIL PROTECTED] > -- > > - Mensagem original > De: César Vianna <[EMAIL PROTECTED] > > Para: shell-script@yahoogrupos.com.br > Enviadas: Terça-feira, 8 de Julho de 2008 10:37:58 > Assunto: Re: [shell-script] Usuarios Linux > > > Pelo exemplo abaixo, acredito que consigas. Apenas altere o echo pelos > comandos que desejas (chmod, chown, etc) > > for i in `cut -d: -f1 /etc/passwd` > do > echo user - $i > done > > Resultado > > user - root > user - bin > user - daemon > user - adm > user - lp > user - sync > user - shutdown > user - halt > user - mail > > 2008/7/8 Allan Carvalho : > > > Prezados. > > > > Tenho um servidor de arquivos linkado à um AD via ADS, estou fazendo > > migração das pastas dos usuários para o servidor de arquivos. > > O problema é que tenho mais de 100 usuários cadastrados, digitar chown e > > chmod para cada um vai ser muito cansativo, existe um script que liste os > > usuários e os guarde num array? Acredito que colocando um array num laço > for > > eu consigo setar as permissões dos usuários. > > > > Agradeço desde já. > > > > -- > > Atenciosamente, > > Allan Carvalho > > MSN: [EMAIL PROTECTED] com > > -- > > > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua > > cara @ymail.com ou @rocketmail. com. > > http://br.new. mail.yahoo. com/addresses > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > -- > César Vianna > --- > "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo > entre a realidade que existe e o sonho, que é a realidade que não existe." > Fernando Pessoa > > [As partes desta mensagem que não continham texto foram removidas] > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua > cara @ymail.com ou @rocketmail.com. > http://br.new.mail.yahoo.com/addresses > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Criação de arquivos de usuários baseado no /etc/passwd
Opa Allan Vamos desmembrar esse cut d é o delimitador f é o campo Segue um exemplo, pegando o 5º campo $ cut -d: -f5 <<< "teste:x:18325:18325:NOME DO USUARIO:/home/teste:/bin/bash" NOME DO USUARIO 2008/7/10 Allan Carvalho <[EMAIL PROTECTED]>: > Prezados. > > Tenho o seguinte caso: > > Preciso criar um arquivo com o login e o nome completo do usuário, pegando > estas informações do /etc/passwd, aproveitando a dica do César Vianna, > consigo pegar o login do usuário pelo laço for: > > for i in `cut -d: -f1 /etc/passwd` > > Bom, consigo pegar o login do usuário, como implementar para que eu consiga > pegar também o nome do usuário, já que, após o primeiro ":", existem mais > três campos até o nome do usuário. > > Agradeço desde já. > > -- > Atenciosamente, > Allan Carvalho > MSN: [EMAIL PROTECTED] > -- > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua > cara @ymail.com ou @rocketmail.com. > http://br.new.mail.yahoo.com/addresses > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Criação de arquivos de usuários baseado no /etc/passwd
É por isso que sugeri fazer separado. Meu amigo Júlio talvez discorde. Mas, as soluções de "uma linha" por vezes complicam a vida. Sugestão: #!/bin/bash for i in `cat /etc/passwd` do campo1=`cut -d: -f1 <<< $i` campo5=`cut -d: -f5 <<< $i` #agora você faz o que quiser com cada um dos valores done 2008/7/10 Allan Carvalho <[EMAIL PROTECTED]>: > César. > > Mais uma vez muito obrigado por sua ajuda. > > Tive um problema ao executar o script, abaixo transcrevo o script que > produzi: > > #!/bin/bash > > for i in `cut -d: -f1,5 /etc/passwd` > do > echo $i >> /root/user/usuarios.txt > done > > Agora, vou pegar somente a linha do usuario que criei no /etc/passwd > > allan:x:1002:1003:Allan Carvalho,,,:/home/allan:/bin/bash > > E agora, o resultado no arquivo usuarios.txt > > allan:Allan > Carvalho,,, > > Note que ele tratou o espaço existente entre o primeiro e o segundo nome > como o início de uma nova linha, e na verdade, eu queria que ficasse como > allan:Allan Carvalho . > > Como eu poderia corrigir isso? > > -- > Atenciosamente, > Allan Carvalho > MSN: [EMAIL PROTECTED] > -- > > - Mensagem original > De: César Vianna <[EMAIL PROTECTED] > > Para: shell-script@yahoogrupos.com.br > Enviadas: Quinta-feira, 10 de Julho de 2008 9:22:57 > Assunto: Re: [shell-script] Criação de arquivos de usuários baseado no > /etc/passwd > > > Opa Allan > > Vamos desmembrar esse cut > > d é o delimitador > f é o campo > > Segue um exemplo, pegando o 5º campo > > $ cut -d: -f5 <<< "teste:x:18325: 18325:NOME DO > USUARIO:/home/ teste:/bin/ bash" > NOME DO USUARIO > > 2008/7/10 Allan Carvalho : > > > Prezados. > > > > Tenho o seguinte caso: > > > > Preciso criar um arquivo com o login e o nome completo do usuário, > pegando > > estas informações do /etc/passwd, aproveitando a dica do César Vianna, > > consigo pegar o login do usuário pelo laço for: > > > > for i in `cut -d: -f1 /etc/passwd` > > > > Bom, consigo pegar o login do usuário, como implementar para que eu > consiga > > pegar também o nome do usuário, já que, após o primeiro ":", existem mais > > três campos até o nome do usuário. > > > > Agradeço desde já. > > > > -- > > Atenciosamente, > > Allan Carvalho > > MSN: [EMAIL PROTECTED] com > > -- > > > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua > > cara @ymail.com ou @rocketmail. com. > > http://br.new. mail.yahoo. com/addresses > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > -- > César Vianna > --- > "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo > entre a realidade que existe e o sonho, que é a realidade que não existe." > Fernando Pessoa > > [As partes desta mensagem que não continham texto foram removidas] > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua > cara @ymail.com ou @rocketmail.com. > http://br.new.mail.yahoo.com/addresses > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Criação de arquivos de usuários baseado no /etc/passwd
Desculpe, esqueci de um detalhe. O IFS - é o separator tabajara No exemplo abaixo, altero o caracter separador padrão para um "enter" #!/bin/bash IFS=" " for i in `cat /etc/passwd` do login=`cut -d: -f1 <<< $i` nome=`cut -d: -f5 <<< $i` echo $login ":" $nome done 2008/7/10 Allan Carvalho <[EMAIL PROTECTED]>: > César. > > Mais uma vez agradeço pela sua ajuda, porém, escrevi o script conforme sua > sugestão e obtive o mesmo resultado, ele está considerando o espaço entre os > nomes como o início de uma nova linha. > > > #!/bin/bash > > for i in `cat /etc/passwd` > do > login=`cut -d: -f1 <<< $i` > nome=`cut -d: -f5 <<< $i` > echo $login ":" $nome >> /root/user/usuarios.txt > done > > -- > Atenciosamente, > Allan Carvalho > MSN: [EMAIL PROTECTED] > -- > > - Mensagem original > De: César Vianna <[EMAIL PROTECTED] > > Para: shell-script@yahoogrupos.com.br > Enviadas: Quinta-feira, 10 de Julho de 2008 13:06:12 > Assunto: Re: [shell-script] Criação de arquivos de usuários baseado no > /etc/passwd > > É por isso que sugeri fazer separado. Meu amigo Júlio talvez discorde. Mas, > as soluções de "uma linha" por vezes complicam a vida. > > Sugestão: > > #!/bin/bash > > for i in `cat /etc/passwd` > do > campo1=`cut -d: -f1 <<< $i` > campo5=`cut -d: -f5 <<< $i` > #agora você faz o que quiser com cada um dos valores > done > > 2008/7/10 Allan Carvalho : > > > César. > > > > Mais uma vez muito obrigado por sua ajuda. > > > > Tive um problema ao executar o script, abaixo transcrevo o script que > > produzi: > > > > #!/bin/bash > > > > for i in `cut -d: -f1,5 /etc/passwd` > > do > > echo $i >> /root/user/usuarios .txt > > done > > > > Agora, vou pegar somente a linha do usuario que criei no /etc/passwd > > > > allan:x:1002: 1003:Allan Carvalho,,,: /home/allan: /bin/bash > > > > E agora, o resultado no arquivo usuarios.txt > > > > allan:Allan > > Carvalho,,, > > > > Note que ele tratou o espaço existente entre o primeiro e o segundo nome > > como o início de uma nova linha, e na verdade, eu queria que ficasse como > > allan:Allan Carvalho . > > > > Como eu poderia corrigir isso? > > > > -- > > Atenciosamente, > > Allan Carvalho > > MSN: [EMAIL PROTECTED] com > > -- > > > > - Mensagem original > > De: César Vianna > > > Para: shell-script@ yahoogrupos. com.br com.br> > > > Enviadas: Quinta-feira, 10 de Julho de 2008 9:22:57 > > Assunto: Re: [shell-script] Criação de arquivos de usuários baseado no > > /etc/passwd > > > > > > Opa Allan > > > > Vamos desmembrar esse cut > > > > d é o delimitador > > f é o campo > > > > Segue um exemplo, pegando o 5º campo > > > > $ cut -d: -f5 <<< "teste:x:18325: 18325:NOME DO > > USUARIO:/home/ teste:/bin/ bash" > > NOME DO USUARIO > > > > 2008/7/10 Allan Carvalho : > > > > > Prezados. > > > > > > Tenho o seguinte caso: > > > > > > Preciso criar um arquivo com o login e o nome completo do usuário, > > pegando > > > estas informações do /etc/passwd, aproveitando a dica do César Vianna, > > > consigo pegar o login do usuário pelo laço for: > > > > > > for i in `cut -d: -f1 /etc/passwd` > > > > > > Bom, consigo pegar o login do usuário, como implementar para que eu > > consiga > > > pegar também o nome do usuário, já que, após o primeiro ":", existem > mais > > > três campos até o nome do usuário. > > > > > > Agradeço desde já. > > > > > > -- > > > Atenciosamente, > > > Allan Carvalho > > > MSN: [EMAIL PROTECTED] com > > > -- > > > > > > Novos endereços, o Yahoo! que você conhece. Crie um email novo com a > sua > > > cara @ymail.com ou @rocketmail. com. > > > http://br.new. mail.yahoo. com/addresses > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > -- > > César Vianna > > --- > > "Talvez porque eu pense demais ou sonhe demais, o certo é que não > distingo > > entre a realidade que existe e o sonho, que é a realidade que não > existe." > > Fernando Pessoa > > > > [As partes desta mensagem que não continha
Re: [shell-script] Lower em um caractere
tr [:lower:] [:upper:] <<< $n 2008/7/16 felipee_catojo <[EMAIL PROTECTED]>: > Olá pessoal. Sou novo aqui na lista, e queria parabeniza-los pela > organização do grupo e pela ajuda mútua ao proximo. > > Estou com um problema bem simples, na realidade queria apenas saber > como faço para que com qualquer caractere armazenado na variavel n, > sendo uma letra minuscula recebida pelo comando read, vire maiuscula. > > Grato desde já. > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Lower em um caractere
Complementando, tem uma boa discussão no histórico da lista. http://br.groups.yahoo.com/group/shell-script/message/26774 2008/7/16 César Vianna <[EMAIL PROTECTED]>: > > tr [:lower:] [:upper:] <<< $n > > > > 2008/7/16 felipee_catojo <[EMAIL PROTECTED]>: > > Olá pessoal. Sou novo aqui na lista, e queria parabeniza-los pela >> organização do grupo e pela ajuda mútua ao proximo. >> >> Estou com um problema bem simples, na realidade queria apenas saber >> como faço para que com qualquer caractere armazenado na variavel n, >> sendo uma letra minuscula recebida pelo comando read, vire maiuscula. >> >> Grato desde já. >> >> >> > > > > -- > César Vianna > --- > "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo > entre a realidade que existe e o sonho, que é a realidade que não existe." > Fernando Pessoa > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Organizar entradas em um arquivo...
Podes utilizar o comando sort $cat tmp.txt b c a $ sort tmp a b c 2008/7/16 georgerobinsonbr <[EMAIL PROTECTED]>: > Olá Pessoal, sou um novo associado... fui recomendado por um amigo > para entrar aqui e tentar dirimir algumas duvidas... Por gentileza, > gostaria de saber como eu poderia organizar um arquivo em ordem > alfabética... > > tenho um arquivo que controla minha whitelist no squid, porém todos os > dias eu adiciono novas entradas... e gostaria de organizar > alfabeticamente os endereços ali listados... Ja pensei em fazer com o > sed, mas eu nao cheguei a lugar alguem... Se alguem puder ajudar... > > Att > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Ignorar erros em um laço
Opa, tenho um script que deve fazer a leitura de um arquivo com um for e executar um sed para cada linha for i in `cat arquivo` do sed ... $i ... done O problema é quando o arquivo indicado pelo $i não existe, o laço é interrompido. Queria que ele ignorasse e continuasse a execução. A única alternativa que encontrei foi testar a existência do arquivo antes, mas como é uma lista muito longa queria evitar mais um test -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Ignorar erros em um laço
Com o while ocorre o mesmo... 2008/7/17 Marcos Notari Junior <[EMAIL PROTECTED]>: > Cesar, > > Utilize o while neste caso... Acho que vai te ajudar mais. > > cat arquivo |while read line > do > echo $line |sed ... ... 2> /dev/null > : > done > > Att. > > Marcos > > Em 17/07/08, César Vianna <[EMAIL PROTECTED]> > escreveu: > > > > > Opa, > > tenho um script que deve fazer a leitura de um arquivo com um for e > > executar > > um sed para cada linha > > > > for i in `cat arquivo` > > do > > sed ... $i ... > > done > > > > O problema é quando o arquivo indicado pelo $i não existe, o laço é > > interrompido. Queria que ele ignorasse e continuasse a execução. > > A única alternativa que encontrei foi testar a existência do arquivo > antes, > > mas como é uma lista muito longa queria evitar mais um test > > > > -- > > César Vianna > > --- > > "Talvez porque eu pense demais ou sonhe demais, o certo é que não > distingo > > entre a realidade que existe e o sonho, que é a realidade que não > existe." > > Fernando Pessoa > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Ignorar erros em um laço
Realmente, tentei simplificar a pergunta, mas faltaram dados. Segue o script completo. #!/bin/bash NOVA_QUOTA=30720 for i in `cat perfil0.txt` do utilizado=`head -1 /var/lib/imap/quota/q/user.$i` n_quota_bytes=$(($NOVA_QUOTA*1024)) if [ $n_quota_bytes -gt $utilizado ] then mv /var/lib/imap/quota/q/user.$i /var/lib/imap/quota/q/user.$i.old sed "2s/.*/$NOVA_QUOTA/" /var/lib/imap/quota/q/user.$i.old > /var/lib/imap/quota/q/user.$i;chown cyrus.mail /var/lib/imap/quota/q/user.$i else echo $i - $(($utilizado/1024/1024)) >> quotas-cheias.txt fi done 2008/7/17 MrBiTS <[EMAIL PROTECTED]>: > -BEGIN PGP SIGNED MESSAGE- > Hash: SHA1 > > > | tenho um script que deve fazer a leitura de um arquivo com um for e > executar > | um sed para cada linha > | > | for i in `cat arquivo` > | do > | sed ... $i ... > | done > | > | O problema é quando o arquivo indicado pelo $i não existe, o laço é > | interrompido. Queria que ele ignorasse e continuasse a execução. > | A única alternativa que encontrei foi testar a existência do arquivo > antes, > | mas como é uma lista muito longa queria evitar mais um test > > Estranho o laço ser interrompido. Fiz um teste aqui e ele não > interrompeu nada. Tive mensagens de erro, é claro, mas o laço foi > executado até o final. > > Se o seu script for somente isso, o laço não vai ser interrompido. Como > você nos deu o que eu imagino seja um exemplo genérico e não mostrou > mensagens de erro, fica mais dificil adivinhar. > > - -- > > Um abraço > > .0. MrBiTs - [EMAIL PROTECTED] > ..0 GnuPG - > http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186 > 000 http://www.mrbits.com.br > > -BEGIN PGP SIGNATURE- > Version: GnuPG v1.4.9 (Cygwin) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iEYEARECAAYFAkh/fncACgkQrDdxWm3R8YYnMACfScwZM5m1nMjB2b7VdLw2S0ko > gToAnioAi0eR1lY3eD2oefwtJsSuIWIy > =8abb > -END PGP SIGNATURE- > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Ignorar erros em um laço
Exato. Segue o erro. $ bash -x ./script.sh ++ cat perfil0.txt + for i in '`cat perfil0.txt`' ++ head -1 /var/lib/imap/quota/q/user.a head: não foi possível abrir `/var/lib/imap/quota/q/user.a' para leitura: Arquivo ou diretório não encontrado + utilizado= ./script.sh: line 6: *1024: syntax error: operand expected (error token is "*1024") Acabei colocando mais um test. Aumentou o tempo de execução, mas funcionou. #!/bin/bash NOVA_QUOTA=30720 for i in `cat perfil0.txt` do if [ -e /var/lib/imap/quota/q/user.$i ] then utilizado=`head -1 /var/lib/imap/quota/q/user.$i` n_quota_bytes=$(($NOVA_QUOTA*1024)) if [ $n_quota_bytes -gt $utilizado ] then mv /var/lib/imap/quota/q/user.$i /var/lib/imap/quota/q/user.$i.old sed "2s/.*/$NOVA_QUOTA/" /var/lib/imap/quota/q/user.$i.old > /var/lib/imap/quota/q/user.$i;chown cyrus.mail /var/lib/imap/quota/q/user.$i else echo $i - $(($utilizado/1024/1024)) >> quotas-cheias.txt fi fi done 2008/7/17 MrBiTS <[EMAIL PROTECTED]>: > -BEGIN PGP SIGNED MESSAGE- > Hash: SHA1 > > | Realmente, tentei simplificar a pergunta, mas faltaram dados. Segue o > script > | completo. > | > | #!/bin/bash > | NOVA_QUOTA=30720 > | for i in `cat perfil0.txt` > | do > | utilizado=`head -1 /var/lib/imap/quota/q/user.$i` > | n_quota_bytes=$(($NOVA_QUOTA*1024)) > | if [ $n_quota_bytes -gt $utilizado ] > | then > | mv /var/lib/imap/quota/q/user.$i > | /var/lib/imap/quota/q/user.$i.old > | sed "2s/.*/$NOVA_QUOTA/" > /var/lib/imap/quota/q/user.$i.old > > | /var/lib/imap/quota/q/user.$i;chown cyrus.mail > /var/lib/imap/quota/q/user.$i > | else > | echo $i - $(($utilizado/1024/1024)) >> quotas-cheias.txt > | fi > | done > > Simplificar nem sempre é o melhor caminho, ainda mais numa descrição de > problemas. > > Vejamos. Você havia dito que, quando um arquivo ( $i ) não existe, o > laço é interrompido. Na verdade, nunca teremos um $i sozinho, mas sempre > um user.$i. Nesse caso, se user.$i não existe, a variável $utilizado não > ~ terá nenhum valor e a comparação $n_quota_bytes -gt $utilizado dará um > erro e, aí sim, quebrará o laço. Creio ser esse o seu problema. Falto a > mensagem de erro. > > Para certificar-se, rode o seu script com um bash -x ./script e > analise/poste o resultado. > > Do resto, não há nada que faça o laço ser quebrado. Os comandos mv e sed > não quebram laços quando falham, a não ser que você mande o script fazer > isso explicitamente. > > - -- > > Um abraço > > .0. MrBiTs - [EMAIL PROTECTED] > ..0 GnuPG - > http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186 > 000 http://www.mrbits.com.br > > -BEGIN PGP SIGNATURE- > Version: GnuPG v1.4.9 (Cygwin) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iEYEARECAAYFAkh/hYIACgkQrDdxWm3R8YajywCfTxcoqP0QJA5CyRLIv4XcXThK > MLwAn0jKIBfbwE0/o8yJPQSK4Espe2R3 > =LqRt > -END PGP SIGNATURE- > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Bash simplesmente fecha em função de um comando.
Não seria o comando abaixo? tr "a-z" "A-Z" < /etc/gentoo-release 2008/7/23 Felipe <[EMAIL PROTECTED]>: > Bom dia, lista. > > Estou executando o seguinte comando: > > cat /etc/gentoo-release < <(tr [a-z] [A-Z]) > > E na realidade o que acontece é que: quando o executo, o terminal > simplesmente fecha. Pluft, fechou. > > Alguem saberia me dizer por qual motivo a bash teve essa reação ? > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Script para reonomear arquivos?
Opa... vou listar os comandos necessários.. depois dá uma tentada e manda as dúvidas... acho que assim a lista pode te auxiliar melhor. Renomear - mv Trocar caracter - tr Buscar - find (opção -r para recursivo) Podes colocar dentro de um laço Ex. for i in `find -iname "* *.*"` do novo_nome=`tr " " "_" <<< $i` done É por aí... 2008/7/23 Rafael Tomelin <[EMAIL PROTECTED]>: > Olá pessoal, > > Gostaria de ver com vocês, como que faço um script que busca dentro de um > determinado diretório "/home/dados" e sub-diretórios > "/home/dados/contabilidade", *arquivos* que contenham espaço no nome ou > "\". Ex.: "contabilidade discal" ou "contabilidade\patrimonial" ou > "contabilidade\sei lah \ o que". > > E alterar-se essas caracteres por "_". > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Script para reonomear arquivos?
Faltou um detalhe no laço. No caso do espaço, o find vai separar os arquivos que tem espaço, logo, o $i ficará errado Então, altere o IFS, conforme abaixo: IFS=" " for i in `find -iname "* *.*"` do novo_nome=`tr " " "_" <<< $i` done 2008/7/23 César Vianna <[EMAIL PROTECTED]>: > Opa... vou listar os comandos necessários.. depois dá uma tentada e manda > as dúvidas... acho que assim a lista pode te auxiliar melhor. > > Renomear - mv > Trocar caracter - tr > Buscar - find (opção -r para recursivo) > > Podes colocar dentro de um laço > > Ex. > > for i in `find -iname "* *.*"` > do > novo_nome=`tr " " "_" <<< $i` > done > > > É por aí... > > > > > > > 2008/7/23 Rafael Tomelin <[EMAIL PROTECTED]>: > > Olá pessoal, >> >> Gostaria de ver com vocês, como que faço um script que busca dentro de um >> determinado diretório "/home/dados" e sub-diretórios >> "/home/dados/contabilidade", *arquivos* que contenham espaço no nome ou >> "\". Ex.: "contabilidade discal" ou "contabilidade\patrimonial" ou >> "contabilidade\sei lah \ o que". >> >> E alterar-se essas caracteres por "_". >> >> [As partes desta mensagem que não continham texto foram removidas] >> >> >> > > > > -- > César Vianna > --- > "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo > entre a realidade que existe e o sonho, que é a realidade que não existe." > Fernando Pessoa > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] operador em bash
Podemos "encolher" o if com a construção abaixo [ $a -gt $b ] && echo "a eh maior" || echo "b eh maior" Mais detalhes em http://twiki.softwarelivre.org/TWikiBar/TWikiBarPapo004 2008/7/25 miranda <[EMAIL PROTECTED]> > existe em bash o análogo do operador da linguagem C : > ( a > b ? a : b ) ?? > > > > > - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > - > Sair da lista: [EMAIL PROTECTED] > - > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Dificuldade em enviar comandos para uma conexão socket
Teste a solução abaixo. nc -vv localhost 123 << FIM > comando1 > comando2 > FIM 2008/7/29 Édnei Rodrigues <[EMAIL PROTECTED]> > Bom dia a todos. > Estou tentando fazer um script que envie comandos e strings para uma > conexão socket criada. > O que acontece: > > O config_teste.txt tem a configuração os quais o CRM interpreta > arq=`cat config_teste.txt | sed 'N;s/\n//' | sed 's/ //g'` - retiro os > espaços e quebra de linha > > Faço a conexão via Ncat, pois não achei outra alternativa > > Aqui que fica a dificuldade...preciso enviar esses comandos para que o > CRM esteja preparado para receber a configuração > echo "SWRCFG`echo -n $arq | wc -m`" - Aqui estou enviado o tamanho > total dos caracteres > echo "SCFG${arq}" - Cabeçalho do pacote + os caracteres > > Pensei em dar um echo " cat comandos.txt | nc -vv 192.168.11.6 50002" > , no entanto, ele só lê o primeiro comando. ( lembrando que o arquivo > possui os comandos acima, em linhas separadas ) > Já pensei em colocar nc -vv 192.168.11.6 50002 < comandos.txt , mas > também só lê o primeiro comando. > E , por último, tentei inserir os comandos um de cada vez no socket, > mas é preciso que seja enviado os dois na mesma conexão. > > Vocês tem alguma idéia para ajudar? > > Obrigado > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Verificar Código ASCII
Pessoal, existe um comando em shell que retorne o valor ascii de um caracter? -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Substituir um Arquivo Com Informação de Outros Dois
Segue uma sugestão: Formato do arquivo usuarios.txt x;Nome Completo Formato do arquivo grupos.txt grupo:x:y Script para substituição: IFS=" " for i in `cat usuarios.txt` do user=`cut -d";" -f1 <<< $i` nc=`cut -d";" -f2 <<< $i`#nc é o nome completo echo $user - $nc cat grupos.txt|sed "s/$user/$nc/" done 2008/8/13 Anderson - Listas <[EMAIL PROTECTED]> > Pessoal, estou precisando de uma ajuda com um pequeno script que estou > montando. > > Não é algo complicado de se fazer, mas algo que com pouco experiência > não estou conseguindo. > > Vamos ao problema: > > Tenho dois arquivos: > > grupos.txt, que o conteudo dele é o seguinte: > grupo:*:usuario1,usuario2,usuario3 (resultado do comando # getent group > > grupos.txt) > > usuarios.txt, que tem as informações dos usuários (resultado do comando > # getent passwd > usuarios.txt) > > Tratei o usuarios.txt da seguinte forma: # cat usuarios.txt | cut -d: > -f1,5 | tr : ' ' para que pegasse apenas o nome de usuário e o nome > completo das pessoas, e substituisse os : por espaço, ficando o arquivo > com o seguinte formato: > usuario Nome Completo do Usuário, o que também tratei e deixei assim: > usuario "Nome Completo do Usuário". > > Agora o que quero fazer: > > pegar todos os usuários pelo username e substituir pelo nome completo no > arquivo grupos.txt, para que, ao invés de ficar vomo está, ele me > mostre o nome completo de cada pessoa que faz parte do grupo, ficando > assim: > > Grupo1:*:Nome Completo, Nome Completo 2, Nome Completo 3 > > Então o que pensei, pego a primeira referência de cada arquivo, e com um > sed eu substituo. Se fosse fazer na mão, ficaria algo como: > # cat grupos.txt | sed 's/usuario/\"Nome Completo\"/' > > Isso funciona para cada um, mas se fosse para fazer manualmente não > estaria fazendo um script ;-) > > Com isso resolvi fazer um laço para pegar o conteúdo de cada linha e > jogar em uma variável para fazer a substituição do arquivo, o que > começou mais ou menos assim: > > #!/bin/bash > for i in $(cat usuarios.txt | cut -d' ' -f1) ; > do > VAR1=$i > done ; > > for j in $(cat usuarios.txt | cut -d\" -f2) ; > do > VAR2=$j > done ; > > E foi ai que me enrosquei. Pois, somente com isso, ele irá listar as > linhas e jogá-las nas variáveis, mas com esse laço for vai ocorrer que > as variáveis irão armazenar, dessa forma, a ultima ocorrência dos dois > laços, correto? Então pensei que esses laçoes devam estar dentro de um > while, talves, checando algo como: > > CONT=`cat usuarios.txt | wc` > while [ $CONT -ge 0 ] ... > > E com isso pegar cada linha do cat, para que ele faça algo como, pege a > VAR1 e compare com a linha do grupo que possua o mesmo nome de usuário e > substitua por VAR2. > > Mas depois disse me enrosquei e fiquei na mão. Talvés existam formas, e > acredito que sim, muito mais fáceis de fazer isso, mas didaticamente > falando, poderiam dizer como terminar esse script, e se puderem oferecer > uma solução amigável além da explicação seria bom para o aprendizado e > para que da próxima vez eu não tenha que escrever um romance para obter > ajuda. > > Obrigado pela atenção. > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Substituir um Arquivo Com Informação de Outros Dois
Complementando IFS=" " for i in `cat usuarios.txt` do user=`cut -d";" -f1 <<< $i` nc=`cut -d";" -f2 <<< $i` cat grupos.txt|sed "s/$user/$nc/" > temp.txt cat temp.txt > grupos.txt echo done rm temp.txt Obs. Tem um parâmetro do sed que joga a saída no mesmo arquivo de entrada, mas não recordo agora e na pesquisa rápida que fiz na lista não encontrei. 2008/8/13 César Vianna <[EMAIL PROTECTED]> > Segue uma sugestão: > > Formato do arquivo usuarios.txt > > x;Nome Completo > > > Formato do arquivo grupos.txt > > grupo:x:y > > > Script para substituição: > > > IFS=" > " > for i in `cat usuarios.txt` > do > user=`cut -d";" -f1 <<< $i` > nc=`cut -d";" -f2 <<< $i`#nc é o nome completo > echo $user - $nc > cat grupos.txt|sed "s/$user/$nc/" > done > > > > > > > > 2008/8/13 Anderson - Listas <[EMAIL PROTECTED]> > > Pessoal, estou precisando de uma ajuda com um pequeno script que estou >> montando. >> >> Não é algo complicado de se fazer, mas algo que com pouco experiência >> não estou conseguindo. >> >> Vamos ao problema: >> >> Tenho dois arquivos: >> >> grupos.txt, que o conteudo dele é o seguinte: >> grupo:*:usuario1,usuario2,usuario3 (resultado do comando # getent group >> > grupos.txt) >> >> usuarios.txt, que tem as informações dos usuários (resultado do comando >> # getent passwd > usuarios.txt) >> >> Tratei o usuarios.txt da seguinte forma: # cat usuarios.txt | cut -d: >> -f1,5 | tr : ' ' para que pegasse apenas o nome de usuário e o nome >> completo das pessoas, e substituisse os : por espaço, ficando o arquivo >> com o seguinte formato: >> usuario Nome Completo do Usuário, o que também tratei e deixei assim: >> usuario "Nome Completo do Usuário". >> >> Agora o que quero fazer: >> >> pegar todos os usuários pelo username e substituir pelo nome completo no >> arquivo grupos.txt, para que, ao invés de ficar vomo está, ele me >> mostre o nome completo de cada pessoa que faz parte do grupo, ficando >> assim: >> >> Grupo1:*:Nome Completo, Nome Completo 2, Nome Completo 3 >> >> Então o que pensei, pego a primeira referência de cada arquivo, e com um >> sed eu substituo. Se fosse fazer na mão, ficaria algo como: >> # cat grupos.txt | sed 's/usuario/\"Nome Completo\"/' >> >> Isso funciona para cada um, mas se fosse para fazer manualmente não >> estaria fazendo um script ;-) >> >> Com isso resolvi fazer um laço para pegar o conteúdo de cada linha e >> jogar em uma variável para fazer a substituição do arquivo, o que >> começou mais ou menos assim: >> >> #!/bin/bash >> for i in $(cat usuarios.txt | cut -d' ' -f1) ; >> do >> VAR1=$i >> done ; >> >> for j in $(cat usuarios.txt | cut -d\" -f2) ; >> do >> VAR2=$j >> done ; >> >> E foi ai que me enrosquei. Pois, somente com isso, ele irá listar as >> linhas e jogá-las nas variáveis, mas com esse laço for vai ocorrer que >> as variáveis irão armazenar, dessa forma, a ultima ocorrência dos dois >> laços, correto? Então pensei que esses laçoes devam estar dentro de um >> while, talves, checando algo como: >> >> CONT=`cat usuarios.txt | wc` >> while [ $CONT -ge 0 ] ... >> >> E com isso pegar cada linha do cat, para que ele faça algo como, pege a >> VAR1 e compare com a linha do grupo que possua o mesmo nome de usuário e >> substitua por VAR2. >> >> Mas depois disse me enrosquei e fiquei na mão. Talvés existam formas, e >> acredito que sim, muito mais fáceis de fazer isso, mas didaticamente >> falando, poderiam dizer como terminar esse script, e se puderem oferecer >> uma solução amigável além da explicação seria bom para o aprendizado e >> para que da próxima vez eu não tenha que escrever um romance para obter >> ajuda. >> >> Obrigado pela atenção. >> >> > > > > -- > César Vianna > --- > "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo > entre a realidade que existe e o sonho, que é a realidade que não existe." > Fernando Pessoa > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Duvida utilização grep e exercicio
Se entendi tua dúvida, segue um script. Ele lê o arquivo palavras e altera o arquivo texto, retirando todas as ocorrências encontradas for i in `cat palavras` do sed "s/$i//g" texto > temp mv temp texto done rm temp Exemplo: $cat palavras b e $cat texto a b c d e f g Após rodar o script $cat texto a c d f g 2008/8/15 romano <[EMAIL PROTECTED]> > Ae gente eu tenho um exercicio para fazer mas não estou conseguindo. > > estou me batendo com o seguinte. > > parte dele é para eu pegar 2 arquivos. > > 1 deles tem uam especie de palavras que não é para ser pesquisado. > > exemplo: > de do mas uma > esse arquivo se chama palavras_comuns > > e eu tenho outro arquivo que seria um arquivo que é o trabalho de uma > pessoa. la com tudo os textos e tals. > > Eu preciso pegar esse trabalho e retirar toda essa lista de > palavras_comuns que existe no arquivo palavras_comuns assim eu teria um > arquivo só com palavras refinadas do mesmo. > > Eu estou fazendo da seguinte forma mas não esta dando certo. > Ele ate um ponto da certo mas, um arquivo de 1000 palavras ele da um > resultado de 2000 sendo que as ultimas 1000 são repetidas. > > Bom vai como eu estou fazendo. > > # arquivo que contem o trabalho completo, itero ele para retirar as > #palavras que não me interressam > for palavra in `more $TRABALHO_ALUNO.txt` > do > #pesquiso se o result for diferente de nada é pq existe a #palavra > result=`cat $PALAVRAS_COMUM | grep $palavra` > if [[ $result = "" ]]; > then > #adiciono em um novo arquivo, as palavras que posso usar > conteudo=`more $file`; > echo "$conteudo $palavra" >> $file > count=`expr $count + 1` > if [[ $count -eq 8 ]]; > then > count=0 > echo >> $file > fi > fi > done > > as variaveis file, $PALAVRAS_COMUM, $TRABALHO_ALUNO` são definidas em > cima... > > ai tem outras clausulas no exercicio por isso existe o 8 ali pois > preciso pesquisar essas palavras no google de 8 em 8 usando o lynx e > depois baixar somente os doc, pdf zipar isso gerar log... > > E mais um monte de coisa mas não consigo pegar só as palavras que > interressam... > > QUe estou errando plz...Se puderem só corrigir o que eu fiz de errado eu > agradeceria > > Bom Brigado > Att: Bruno > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Pegar posicao num array
Here Strings http://twiki.softwarelivre.org/TWikiBar/TWikiBarBirinaite#Here_Strings 2008/8/25 Danilo Egea <[EMAIL PROTECTED]> > Muito obrigado Julio, resolve meu problema. > Mas vc poderia me explicar esses <<< ? > heheh > > abracos... > > > Julio C. Neves wrote: > > > > Fala Danilo, > > provavelmente acharão uma forma melhor, mas só me ocorreu essa: > > > > $ echo $[$(tr ' ' '\n' <<< "[EMAIL PROTECTED]" | cat -n | grep 'tu$' | cut > > -f1) - > 1] > > 1 > > > > -- > > Abraços, > > Julio > > *Em setembro estarei dando um treinamento > > Shell em Brasília (em 2 fins de semana). > > Mais informações: www.tecnologiabr.com.br > > Tel: (61) 3354-3162 > > * > > > > 2008/8/25 Danilo Egea <[EMAIL PROTECTED] > > <mailto:daniloegea%40yahoo.com.br >> > > > > > Olá amigos, > > > > > > alguem sabe se é possivel determinar a posicao de um determinado valor > > > num array em bash ? > > > > > > por exemplo, tenho o array A=( 'eu' 'tu' 'nos' ) é possivel saber que > > > 'tu' esta na posicao 1 do array sem precisar percorrer todo ele usando > > > um contador ? > > > > > > Muito Obrigado ! > > > > > > > > > ___ > > > Yahoo! Mail - Sempre a melhor opção para você! > > > Experimente já e veja as novidades. > > > http://br.yahoo.com/mailbeta/tudonovo/ > > <http://br.yahoo.com/mailbeta/tudonovo/> > > > > > > > > > > > > > > > > -- > > Abraços, > > Julio > > Em setembro estarei dando um treinamento > > Shell em Brasília (em 2 fins de semana). > > Mais informações: www.tecnologiabr.com.br > > Tel: (61) 3354-3162 > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > ___ > Yahoo! Mail - Sempre a melhor opção para você! > Experimente já e veja as novidades. > http://br.yahoo.com/mailbeta/tudonovo/ > > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Extrair apenas uma palavra
Cole aqui algumas linhas do arquivo. Assim, é possível saber qual padrão inserir em uma expressão regular. Do contrário, só por bola de cristal. 2008/9/10 semar.depin14 <[EMAIL PROTECTED]> > São linhas retiradas do access.log do squid, onde extrai para um outro > arquivo apenas as linhas com um determinado IP. agora necessito, mas não sei > como, extrair apenas os usuários que logaram na máquina que recebe aquele > IP. > > > - Original Message - > From: jimmy > To: shell-script@yahoogrupos.com.br > Sent: Wednesday, September 10, 2008 10:22 AM > Subject: Re: [shell-script] Extrair apenas uma palavra > > seria necessário um exemplo da estrutura do seu arquivo. > > On Wed, Sep 10, 2008 at 09:35:42AM -0300, semar.depin14 wrote: > > Bom dia a todos, > > > > O que estou precisando fazer é o seguinte: > > > > Criei um arquivo qualquer a partir de um arquivo de logs contendo as > linhas de um determinado IP com o "cat arquivo_de_log | grep IP > > arquivo_qualquer"; > > Preciso agora extrair apenas os nomes de usuários que estão nesse > arquivo_qualquer, mas não a linha inteira; > > Por exemplo, desse arquivo_qualquer que está com as linhas que contém > determinado IP, necessito > > extrair a palavra "usuario.usuario0-90-9". > > > > Agradeço desde já a ajuda de todos. > > > > Att. > > > > João Luis > > __= > > > > > > Prefeitura Municipal de Indaiatuba > > Telefone: (19) 3834-9000 > > Site: http= > > ://www.indaiatuba.sp.gov.br/ > > > > Esta mensagem, incluindo seus anexos, contÿm i= > > nformaÿÿes confidenciais > > destinadas ao usuÿrio do endereÿo eletrÿnico e a pr= > > opÿsitos especÿficos, > > Caso vocÿ nÿo seja o citado usuÿrio, deve apagar esta = > > mensagem. > > ÿ terminantemente proÿbida a utilizaÿÿo, acesso, cÿpia ou divulga= > > ÿÿo nÿo > > autorizada das informaÿÿes presentes nesta mensagem. > > As informaÿÿes = > > contidas nesta mensagem e em seus anexos sÿo de responsabilidade > > de seu auto= > > r. > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > -- > > Esta lista não admite a abordagem de outras liguagens de programação, > como perl, C etc. Quem insistir em não seguir esta regra será moderado sem > prévio aviso. > > -- > > Sair da lista: [EMAIL > > PROTECTED] > > -- > > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > > -- > > Servidor Newsgroup da lista: news.gmane.org > > Grupo: gmane.org.user-groups.programming.shell.brazil > > > > Links do Yahoo! Grupos > > > __ > > -- > > Prefeitura Municipal de Indaiatuba > Telefone: (19) 3834-9000 > Site: http://www.indaiatuba.sp.gov.br/ > > Esta mensagem, incluindo seus anexos, contém informações confidenciais > destinadas ao usuário do endereço eletrônico e a propósitos específicos. > Caso você não seja o citado usuário, deve apagar esta mensagem. > É terminantemente proíbida a utilização, acesso, cópia ou divulgação não > autorizada das informações presentes nesta mensagem. > As informações contidas nesta mensagem e em seus anexos são de > responsabilidade > de seu autor. > > __= > > > Prefeitura Municipal de Indaiatuba > Telefone: (19) 3834-9000 > Site: http= > ://www.indaiatuba.sp.gov.br/ > > Esta mensagem, incluindo seus anexos, contÿm i= > nformaÿÿes confidenciais > destinadas ao usuÿrio do endereÿo eletrÿnico e a pr= > opÿsitos especÿficos, > Caso vocÿ nÿo seja o citado usuÿrio, deve apagar esta = > mensagem. > ÿ terminantemente proÿbida a utilizaÿÿo, acesso, cÿpia ou divulga= > ÿÿo nÿo > autorizada das informaÿÿes presentes nesta mensagem. > As informaÿÿes = > contidas nesta mensagem e em seus anexos sÿo de responsabilidade > de seu auto= > r. > > > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Guardar parâmetros em um vetor
Uma maneira simples é alterar o separador padrão, assim: IFS=" " vparm=($@) for (( i = 0; i < $#; i++ )); do echo ${vparm[i]} done 2008/9/10 Victor LGomes <[EMAIL PROTECTED]> > Boa tarde pessoal! > > Estou com a seguinte dúvida: > Montei um script que recebe alguns parâmetros e os armazena em um vetor. > Posteriormente uso cada um dos valores armazenados no vetor para montar uma > nova linha de comando. O exemplo abaixo serve para ilustar a minha dúvida: > > vparm=($@) > for (( i = 0; i < $#; i++ )); do > echo ${vparm[i]} > done > > Supondo que eu forneça os seguintes parâmetros: a b c d "qualquer coisa" > > O vetor fica assim: > vparm[0]=a > vparm[1]=b > vparm[2]=c > vparm[3]=d > vparm[4]=qualquer > vparm[5]=coisa > > O que eu preciso é que a posição vparm[4] me traga "qualquer coisa", > conforme foi passado no parâmetro. Estou usando vetor porque não consegui > encontrar outra forma de armazenar os parâmetros (que são variáveis). > > Alguém poderia me ajudar nesse caso ? > > Obriagdo! > Victor > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo entre a realidade que existe e o sonho, que é a realidade que não existe." Fernando Pessoa [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Listar total de determinados arquivos
Acredito que o histórico abaixo ajude: http://br.groups.yahoo.com/group/shell-script/message/27303 http://br.groups.yahoo.com/group/shell-script/message/27302 2008/9/19 mendes_gre <[EMAIL PROTECTED]> > Caros, > > Estou tentando listar o total (bytes) de alguns dterminados arquvios,, > uso o comando abaixo > > ls -lRh /opt/ngin/vssp/edrs/7* | grep -i "Sep 16" > > estou obtendo o vlr de cada arquivo, mas quero uma soma de bytes de > todos esses arquivos.. > > Alguem tem uma idea.?? > > Att, > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuza & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Retornar tamanho da pasta do usuário
Uma alternativa: cd /home; ls -a . | xargs du -h --max-depth=0 ; cd - 2008/9/25 Darkzad <[EMAIL PROTECTED]> > Olá pessoal, > > Gostaria de saber como eu faço para ver o tamanho das pastas de cada > usuário no linux. > Estou usando o comando abaixo mas não está funcionando. > > ls -a /home/ | du -h -s > > Eles só retorna > . 775MB > > Era para mostrar > José 10 MB > João 15 MB > Maria 20 MB > > Assim por diante > > Valeu Pessoal > > Darkzad > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuza & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Script para Logs do Iptables
Opa, Anderson! A lista serve para auxílio, não tele-entrega. Dá uma tentada e vai mandando as dúvidas. Abraços 2008/9/26 Anderson <[EMAIL PROTECTED]> > Opa Fabiano!! bom dia!! > > Amigão, eu não fiz nada ainda não, estou aqui na lista aceitando sugestões > ;-) > > Obrigado! > > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuza & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Duvida If.....
A negação deve vir antes da comparação: if [! $1 = "diario" ] ... 2008/9/27 Redes - Hábil Tecnologia <[EMAIL PROTECTED]> > Olá lista estou com certo problema no if... > > if [ $1 != "diario" ] !! [ $1 != "semanal" ] || [ $1 != "mensal" ] > then > echo "Nao eh diario nem semanal nem mensal !!!" > else > echo "eh diario nem semanal nem mensal " > fi > > meu problema é que != não esta funcionando como negação se for somente = > funciona... > > alguem tem algum dica? > > Roberro > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuza & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] script para limpar arquivos texto
Dá uma olhada nesses tópicos, vai ajudar: http://twiki.softwarelivre.org/TWikiBar/TWikiBarPapo001#Comando http://twiki.softwarelivre.org/TWikiBar/TWikiBarPapo001#Caracteres_de_redirecionamento Abraço 2008/9/29 Flavio Junior <[EMAIL PROTECTED]> > Tu não pode redirecionar a saida de um arquivo pra ele proprio.. > Ou seja, o teu > $1 ali ta ferrando o arquivo. > > ou usa um temporario, ou usa o sed -i > > -- > > Flavio do Carmo Junior aka waKKu > > 2008/9/29 Ricardo Vendramini <[EMAIL PROTECTED] > >: > > > > > Ola > > > > Esta é minha primeira participacao nesta lista, e gostaria de > > aperfeicoar um pequeno script que fiz para limpar um arquivo texto. > > > > Usando o sed, ele remove espacos em branco e tabs do final de cada > > linha de texto. Tambem remove o caracter 0x0D dos finais de linha, > > convertendo a quebra de linha do padrao DOS/Win (0x0D,0x0A) para padrao > > Unix (0x0A). > > > > No script, dentro dos colchetes [ tc] tem um espaco em branco, um TAB > > (0x09) e um LF (0x0D), que substitui por 'tc' ja q esses caracteres nao > > daria pra enviar por email diretamente (dá pra substitui-los por codigos > > ASCII?) > > > > Os ls antes e depois é para ver o tamanho do arquivo antes e depois da > > limpeza, para comparacao. > > > > #!/bin/bash > > ls -l $1 > > cat $1 |sed 's/[ tc]*$//g' >$1 > > ls -l $1 > > > > Mas ha alguma falha que nao consegui descobrir, as vezes quando executo > > o script em algum aquivo texto, o resultado é um arquivo vazio (0 bytes > > de tamanho), perdendo todo seu conteudo. > > > > Alguem enxerga algum erro ou tem alguma sugestao pra melhora-lo? > > > > Abraco > > > > Ricardo Vendramini > > > > > > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuza & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Coletar domínio
O cut resolve, mas não seria necessário redirecionar a saída do cat Basta cut -d"@" -f2 arquivo.txt 2008/11/13 Wagner_D <[EMAIL PROTECTED]> >Dê uma olhada no comando cut (man cut), abaixo um exemplo que > deve resolver o problema: > > $ cat e-mails.txt |cut -d"@" -f2 > > 2008/11/13 Caio Abreu Ferreira <[EMAIL PROTECTED] >: > > > Lista > > > > Algum saberia me dizer como faço para coletar os domínios de uma lista de > > e-mail? Por exemplo, do e-mail [EMAIL PROTECTED] estou > > querendo as > informações yy.zz > > > > Procurei no histórico da lista se existia uma mensgem, mas ficou meio > difícil > > procurar pela palavra arroba ou pelo simbolo @. > > > > Desde já obrigado. > > > > > > -- > > > > > > .''`. Caio Abreu Ferreira > > : :' : [EMAIL PROTECTED] > > `. `'` Debian User > > `- > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > -- > > Esta lista não admite a abordagem de outras liguagens de programação, > como perl, C etc. Quem insistir em não seguir esta regra será moderado sem > prévio aviso. > > -- > > Sair da lista: [EMAIL > > PROTECTED] > > -- > > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > > -- > > Servidor Newsgroup da lista: news.gmane.org > > Grupo: gmane.org.user-groups.programming.shell.brazil > > > > Links do Yahoo! Grupos > > > > > > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] sed com múltiplos padrões
Pessoal, quero fazer um sed para substituir caracteres especiais por seus respectivos códigos HTML. Por exemplo, sed 's/é/\é\;/' arq.html sed 's/ç/\ç\;/' arq.html Agora se eu quiser colocar todos caracteres no mesmo sed? -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Verificar se existe um determindado arquivo nos respectivos diretórios
Pode usar o test com o -f if [ -f arq.txt ] then echo existe else echo não existe fi Para verificar vários diretórios pode usar um laço, por exemplo while read nome_arq do if [ -f $nome_arq ] then echo existe else echo não existe fi done 2008/12/23 Airton Martins > > Boa Tarde, > > Senhores, alguém poderia me ajudar, tenho o seguinte scipt: > > while true > do > echo " > Menu > > Opcao Acao > = > 1 Listar diretorio /i6/opt/apl/vld/conv > 2 Listar diretorio /f45/test > 3 Sair > Informe sua opcao:\c " > read Opc > case $Opc in > 1) clear; ls -ltr /i6/opt/apl/vld/conv | more ;; > 2) clear; ls -ltr /f45/test | more ;; > 4) exit ;; > esac > done > > O usuário precisa saber se existe um determinado arquivo nos diretórios > acima, como faria isto para atender tal necessidade. > > Grato. > > > Aírton Martins > > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbuscados.yahoo.com > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Retornar linhas anteriores ao padrão
Opa! Tenho um arquivo de log e preciso que um script que retorne sempre a quinta linha anterior ao padrão localizado. O formato é o seguinte: login_do_usuarioA status-da-ação1=false status-da-ação2=true status-da-ação3=true status-da-ação4=false status-da-ação5=true login_do_usuarioB status-da-ação1=true status-da-ação2=false status-da-ação3=false status-da-ação4=true status-da-ação5=false ... O que preciso é * Se status-da-ação5=false Então Retorna/Imprima a quinta linha anterior ( isto é, o login do usuário)* Obs. Não tive nem uma idéia para iniciar... Grato, -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Qual a sintae correta?
expr1 && expr2 Pode dar uma lida no link abaixo para mais detalhes http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo004#E_tome_de_test 2009/1/20 Rafael Tomelin > Olá pessoal, > > Gostaria de sbaer qual a sintaxe correta para: > > No shell script qual é a sibntaxe do "e" ? > > COUNT=2 > SIM=true > > if [ $COUNT -eq 2 ]* E *[ $SIM -eq true ]; then > echo "aqui" > fi > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Re: Executar comandos remotamente via SSH.
Depois de configurar as chaves, faça o script dessa forma ssh usua...@ip << FIM_SCRIPT #conteúdo do script FIM_SCRIPT 2009/1/27 deniscostadsc > Eu já consegui conectar mas não consigo executar comando pelo script, > eu tenho que pegar dados em um server e depois sai acessa outro via > ssh e assim sucessivamente. > > --- Em shell-script@yahoogrupos.com.br , > Tiago F Bianchini > escreveu > > > > Em Segunda 10 Março 2003 15:12, Valdinei Santos escreveu: > > > "Valdinei Santos" > > > > na maquina q tem o script inicializa o server ssh > > > > na maquina q vai chamar o script, usa: ssx xxx.xxx.xxx.xxx > /caminho/script.sh > > > > é importante colocar o caminho completo da localizacao do script > > > > > > a preparacao da autenticacao sem senha é simples: > > > > a) gera a chave publica/privada na maquina que chama o script, > deixando o > > pasphrase em branco (se colocar algo aqui, vai pedir sempre o > pasphrase). pra > > isso usa ssh-keygen -t rsa > > > > b) copia o arquivo id_rsa.pub pro dir .ssh do user da maquina q ta o > script > > (/home/fulano/.ssh) e renomeia ele pra authorized_keys2. cuida pra > deixar > > direitos 600 pra esse arquivo, e deixar o user e grupo do proprio > usuario > > > > e ta pronto > > testa primeiro um ssh direto pra maquina pra ver se pede senha > > se nao pedir, testa o comando depois. > > > > qqer duvida pergunta > > > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Transformar cada 3 linhas em uma
Utilize o paste paste -d"," - - - < nome_do_arquivo 2009/3/5 Petry > Pessoal, > > Tenho um arquivo com a seguinte informação: > > (...) > 2,5,1,1 > 3 > 5 > 3,7,1,1 > 2 > 8 > (...) > > Quero transformá-lo para o seguinte: > 2,5,1,1,3,5 > 3,7,1,1,2,8 > > Ou seja, a cada 3 linhas, transformar em uma separando por , > > no AWK poderia usar o FS = \n, mas o que poderia usar como separador de > blocos? > > []s > JP > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Iniciante
http://wiki.softwarelivre.org/bin/view/TWikiBar/WebHome 2009/3/26 Patrícia Costerus > > Olá, > > Sou nova nessa area, queria saber onde consigo material > > basico pra iniciante na net... > > Obrigada ! > > __ > Cansado de espaço para só 50 fotos? Conheça o Spaces, o site de > relacionamentos com até 6,000 fotos! > http://www.amigosdomessenger.com.br > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Dados de dois arquivos.
On line paste -d"\n" arqa.txt arqb.txt 2009/3/30 Flavio Torres > -BEGIN PGP SIGNED MESSAGE- > Hash: SHA1 > > > Edmilson Menezes wrote: > > Bom dia pessoal, gostaria da seguinte ajuda, tenho dois arquivos com um > número de linhas iguais e gostaria de fazer um laço que pegasse a > primeira linha do arquivo A e a primerira do arquivo B, depois a segunda > linha do arquivo A e a segunda linha do arquivo B e assim por diante, eu > cheguei a fazer um for para ler o primeiro arquivo mais na hora de ler o > segundo ele só termina o for e passa para o primeiro arquivo depois de > ler o segundo arquivo inteiro. A saida ficaria assim: > > > > primeira linha arquivo A > > primeira linha arquivo B > > segunda linha arquivo A > > segunda linha arquivo B > > . > > Tente algo com o paste... > > paste arquivo1 arquivo2 > > te retornara: > arqA-linha1 arqB-linha1 > arqA-linha2 arqB-linha2 > > e entao use um for... > > for i in $(paste arq1 arq2);do > > talvez precise alterar o IFS > > abs > > - -- > > > /*---*/ > /* * Flavio Torres - Administrador de Sistemas*/ > /* /_\ */int y,z;main(x){x=(x>0?-9:x);z=((z=(x+5) > /* o. .o */)>0?z:-z);printf(!x&&++y?"\n":z?z>y%3+y/ > /* ((Y)) */3?" ":x<-5?"/":"\\":y?"|":"*");y-9?main( > /* ()) (() */++x):puts(" _|_|_")&&puts(" \\___/");} > /* ()^() A party animal isn't just for Christmas.*/ > -BEGIN PGP SIGNATURE- > Version: GnuPG v1.4.9 (GNU/Linux) > > iEYEARECAAYFAknQwtIACgkQNRQApncg297VMwCgteMddTP22CJb7Hy7S6WYc5fl > 5dcAoJy3eGQyBKLF4BnfnWFPFDsBLOpH > =6xIR > -END PGP SIGNATURE- > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Ajuda Iniciante
r assim ele manda o e-mail mas ai não está monitorando: > > > > > > #!/bin/bash > > > > > > tail -5 /var/log/apache2/ access.log | grep "10.1.1.31" | mail -s > "teste" > > skf...@gmail. com > > > > > > Alguma sugestão? > > > > tail -5 pega apenas as 5 últimas linhas do arquivo ao invés de > "monitorar" > > a > > inserção de novas linhas, creio que sua necessidade exige algo que > > funcione como um daemon > > > > minha sugestão seria: > > > > tail -f /var/log/apache2/ access.log | awk '/10\.1\.1\. 31/{system( "mail > > -s \"teste\" skf...@gmail. com")}' > > > > -- > > "Não manejo bem as palavras > > Mas manipulo bem as strings." > > - - > > > > Veja quais são os assuntos do momento no Yahoo! +Buscados > > http://br.maisbusca dos.yahoo. com > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - > Celebridades - Música - Esportes > > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbuscados.yahoo.com > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Ajuda Iniciante
Na verdade acho que eu não expliquei direito. A idéia que eu dei é tu inverter a impressão do conteúdo com o tac Depois usar o parâmetro -mNUM do grep para especificar que quer apenas uma ocorrência ( -m1 ) Adiciona essas dicas as demais que já foram passadas. Acredito que ficará assim tac /var/log/apache2/access.log | grep -m1 -i -A5-B3 "10.1.1.31" 2009/4/3 Standler meir > Olá César, > > Obrigado pelo retorno. > > Talves e nao esteja sendo mto claro... > Vou mostrar meu cenário atual > > quando gera um erro no código o log do catalina.out gera essa saída: > > 03/04/2009 18:43:47 mpb.utility.EntityManagerHelper log > ERRO: mpb - find all failed > org.hibernate.AssertionFailure: null id in .Componente > entry (don't flush the Session after an exception occurs) > at > org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:78) > at > org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:187) > at > org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:143) > at > org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219) > at > org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99) > at > org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:58) > at > org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:996) > at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1141) > at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) > at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67) > at com.webpack.mpb.dao.obra.ObraDAO.findAll(ObraDAO.java:309) > at com.webpack.mpb.mb.login.LoginMB.getObras(LoginMB.java:134) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at javax.el.BeanELResolver.getValue(BeanELResolver.java:62) > at > javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) > at > org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:140) > at org.apache.el.parser.AstValue.getValue(AstValue.java:118) > at > org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) > at > com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71) > at > javax.faces.component.UISelectItems.getValue(UISelectItems.java:130) > at org.apache.myfaces.shared_impl.util.SelectItemsIterator.hasNext > > > Entao para cada erro ele gera uma saida com essa! da maneir que o script > estava ele tava pegando todas as saidas e como essa: > > > 03/04/2009 18:43:47 mpb.utility.EntityManagerHelper log > ERRO: mpb - find all failed > org.hibernate.AssertionFailure: null id in .Componente > > e mandando para o meu e-mail. > > Só que eu quero que manda so a ultima que representa o erro do momento e > nao as outras. > > fiz o que vc disse assim: > > #!/usr/local/bin/bash > while true; do > (tail -f /usr/local/apache-tomcat-6.0.18/logs/catalina.out | grep > -q "ERRO: mpb") > if [ "$?" = "0" ]; then > echo $? "foi" > > $ cat txt > pri 1 > seg 2 > terc 1 > $ tac txt | grep 1 -m1 "ERRO: mpb" > /usr/local/apache-tomcat-6.0.18/logs/catalina.out | mail -s "Erro MPB" > skf...@gmail.com > terc 1 > fi > done > > > dessa forma ele ta gerando uma saída assim: > > /usr/local/apache-tomcat-6.0.18/logs/catalina.out:17/03/2009 20:59:05 > org.apache.tomcat.util.digester.SetPropertiesRule begin > > Enquanto que o desejado e uma saida assim: > > 03/04/2009 18:43:47 mpb.utility.EntityManagerHelper log > ERRO: mpb - find all failed > org.hibernate.AssertionFailure: null id in .Componente > > ou seja a partir do ERRO: mpb ele me pega uma linha acima e uma linha > abaixo. > > > Pow galera mais uma vez obrigado pela atenção de todos.. valeu mesmo! > > Abraço > > --- Em sex, 3/4/09, César Vianna > > > escreveu: > > De: César Vianna > > Assunto: Re: [shell-script] Ajuda Iniciante > Para: shell-script@yahoogrupos.com
Re: [shell-script] Ajuda com teste de string
Como não disseste qual a dificuldade, seguem links sobre o assunto: http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo003#O_Comando_if http://wiki.softwarelivre.org/TWikiBar/TWikiBarPapo004#E_tome_de_test 2009/4/7 Felipe > Boa tarde a todos, > > Sou novato em SH e estou encontrando dificuldades para tratar teste com o > comando "if" > > Ajuda com teste de string > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Verificar se arquivo existe utilizando FTP e BASH
Para armazenar o resultado do ls em uma variável é var=`ls $1` #entre crases Mas, cuide que a variável estará no shell filho criado na execução do script. Dependendo do objetivo terás que fazer um export 2009/4/16 Thiago Guedes Pereira > > > Boa tarde Pessoal. > > Para enviar o backup via FTP eu criei a função: > > function envia_ftp { > > ftp -i -n $FTPSERVER < user $USER $PASS > passive > cd mail-pop/ > mkdir $DATAINICIO > cd $DATAINICIO > put $1 > quit > BLOCO > > } > > Só que as vezes o envio não é bem sucedido. Então queria fazer algo do > tipo. > > 1º Envio o backup por FTP > 2º Acesso o FTP e verifico se o arquivo está lá. > > Pensei em algo do tipo: > > function verifica_ftp { > > ftp -i -n $FTPSERVER < user $USER $PASS > passive > cd mail-pop/ > cd $DATAINICIO > ls $1 > quit > BLOCO > > } > > * Só que na parte do *ls* eu precisava redirecionar a saída do comando para > uma variável... Alguem com uma boa idéia? > > -- > Att, > Thiago Guedes Pereira > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Arrumar nomes de arquivos com caracter "\372"
*Dúvida direta:* Como usar o sed para alterar o caracter de codificação inválida que aparece como "?" e tem código "\372" Consegui com tr "\372" "-" <<< $variavel Queria fazer com sed *Motivo:* Corrigir nomes de arquivos no Ubuntu A maioria dos problemas resolvi com o Funções ZZ (zarrumanome) - http://funcoeszz.net Só que falta um caracter inválido "?" que não consegui corrigir... Então quero inserir na função e ela utiliza sed Ex: 2008-05-30 22:29 N?o S?o Paulo 2 -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Arrumar nomes de arquivos com caracter "\372"
Continuando... Qual o motivo do erro abaixo? ls TomZé-1968/|file -i - /dev/stdin: writable, no read permission *Contexto:* Estou usando o iconv para corrigir a codificação dos arquivos. Mas, tenho que testar qual a codificação atual do arquivo, caso contrário, os caracteres especiais ficam corrompidos. *Exemplo com Resultado Esperado* $ ls TomZ?-1968 tomz-1968.zip $ ls |file -i - /dev/stdin: text/plain; charset=iso-8859-1 $ while read line; do echo "$(iconv -f iso-8859-1 -t utf-8 <<< $line)"; done < <(ls) TomZé-1968 tomz-1968.zip *Exemplo com Resultado Não Desejado* $ ls tomz-1968.zip TomZé-1968 $ ls |file -i - /dev/stdin: text/plain; charset=utf-8 $ while read line; do echo "$(iconv -f iso-8859-1 -t utf-8 <<< $line)"; done < <(ls) tomz-1968.zip TomZé-1968 *Então, meu script precisa testar se o arquivo está em iso-8859-1 para então converter.* 2009/5/12 Reinaldo de Carvalho > > > 2009/5/12 César Vianna > >: > > *Dúvida direta:* > > > Como usar o sed para alterar o caracter de codificação inválida que > aparece > > como "?" e tem código "\372" > > Consegui com > > tr "\372" "-" <<< $variavel > > Queria fazer com sed > > > > Bem, eu não chamaria de codificação inválida, mas de codificação > diferente do padrão do seu terminal. > > while read line; > echo mv "$line" "$(iconv -f iso-8859-1 -t utf-8 <<< $line)" > done < <(ls) > > > *Motivo:* > > Corrigir nomes de arquivos no Ubuntu > > A maioria dos problemas resolvi com o Funções ZZ (zarrumanome) - > > http://funcoeszz.net > > Só que falta um caracter inválido "?" que não consegui corrigir... Então > > quero inserir na função e ela utiliza sed > > > > Ex: > > 2008-05-30 22:29 N?o S?o Paulo 2 > > > > > > A forma mais interessante é via rsync, pesquise no histórico. > > -- > Reinaldo de Carvalho > http://korreio.sf.net > http://python-cyrus.sf.net > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Arrumar nomes de arquivos com caracter "\372"
Segue a evolução do script.. #--- IFS=" " while read line do cod=`echo "$line"|file -i -|cut -d"=" -f2` if [ $cod == "iso-8859-1" ] then mv "$line" "$(iconv -f iso-8859-1 -t utf-8 <<< $line)" fi done < <(find .) #--- Agora o problema é quando o diretório está em iso-8859-1 e o arquivo dentro dele está em utf-8 Quando isso ocorre, o erro relatado abaixo é reproduzido. 2009/5/13 César Vianna > Continuando... > Qual o motivo do erro abaixo? > ls TomZé-1968/|file -i - > /dev/stdin: writable, no read permission > > *Contexto:* > > Estou usando o iconv para corrigir a codificação dos arquivos. Mas, tenho > que testar qual a codificação atual do arquivo, caso contrário, os > caracteres especiais ficam corrompidos. > > *Exemplo com Resultado Esperado* > $ ls > TomZ?-1968 tomz-1968.zip > > $ ls |file -i - > /dev/stdin: text/plain; charset=iso-8859-1 > > $ while read line; do echo "$(iconv -f iso-8859-1 -t utf-8 <<< $line)"; > done < <(ls) > TomZé-1968 > tomz-1968.zip > > *Exemplo com Resultado Não Desejado* > > $ ls > tomz-1968.zip TomZé-1968 > > $ ls |file -i - > /dev/stdin: text/plain; charset=utf-8 > > $ while read line; do echo "$(iconv -f iso-8859-1 -t utf-8 <<< $line)"; > done < <(ls) > tomz-1968.zip > TomZé-1968 > > > *Então, meu script precisa testar se o arquivo está em iso-8859-1 para > então converter.* > > > > > > 2009/5/12 Reinaldo de Carvalho > > >> >> 2009/5/12 César Vianna >> >: >> > *Dúvida direta:* >> >> > Como usar o sed para alterar o caracter de codificação inválida que >> aparece >> > como "?" e tem código "\372" >> > Consegui com >> > tr "\372" "-" <<< $variavel >> > Queria fazer com sed >> > >> >> Bem, eu não chamaria de codificação inválida, mas de codificação >> diferente do padrão do seu terminal. >> >> while read line; >> echo mv "$line" "$(iconv -f iso-8859-1 -t utf-8 <<< $line)" >> done < <(ls) >> >> > *Motivo:* >> > Corrigir nomes de arquivos no Ubuntu >> > A maioria dos problemas resolvi com o Funções ZZ (zarrumanome) - >> > http://funcoeszz.net >> > Só que falta um caracter inválido "?" que não consegui corrigir... Então >> > quero inserir na função e ela utiliza sed >> > >> > Ex: >> > 2008-05-30 22:29 N?o S?o Paulo 2 >> > >> > >> >> A forma mais interessante é via rsync, pesquise no histórico. >> >> -- >> Reinaldo de Carvalho >> http://korreio.sf.net >> http://python-cyrus.sf.net >> >> > > > > -- > César Vianna > --- > Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às > unidades; os agenciamentos móveis aos sistemas. > Gilles Deleuze & Felix Guattari > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Remover quebra de linha
Pessoal, tenho um arquivo com umas 30mil linhas com o seguinte padrão ID§CONTEÚDO ALEATÓRIO CONTEÚDO ALEATÓRIO CONTEÚDO ALEATÓRIO§FROMCONTEÚDO ALEATÓRIO CONTEÚDO ALEATÓRIO ID§CONTEÚDO ALEATÓRIO CONTEÚDO ALEATÓRIO CONTEÚDO ALEATÓRIO§FROMCONTEÚDO ALEATÓRIO Preciso remover as quebras de linhas entre os valores ID§ - O valor ID§ vem sempre no inicio da linha e marca o inicio de um bloco de informações. Tentei com o sed abaixo: sed 's/[^ID§]\(.*\)$/\1/g' from-to-status.log #Pesquisar tudo que não começa com ID§. Desse resultado, remover a quebra de linha. Mas, o resultado foi igual ao arquivo original. -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Re: Remover quebra de linha
Opa! Valeu, Cristiano. Funcionou perfeitamente. Só não entendi a expressão que remove as quebras. O que é a expressão :a;$!N; ? e o ta ? sed ':a;$!N;s/\n/ /g;ta; s/ID§/\nID§/g' 2009/6/15 Cristiano Ferrari > > > --- Em shell-script@yahoogrupos.com.br , > César Vianna escreveu > > > > > Pessoal, tenho um arquivo com umas 30mil linhas com o seguinte padrão > > > > ID§CONTEÚDO ALEATÓRIO > > CONTEÚDO ALEATÓRIO > > CONTEÚDO ALEATÓRIO§FROMCONTEÚDO ALEATÓRIO > > CONTEÚDO ALEATÓRIO > > ID§CONTEÚDO ALEATÓRIO > > CONTEÚDO ALEATÓRIO > > CONTEÚDO ALEATÓRIO§FROMCONTEÚDO ALEATÓRIO > > > > Preciso remover as quebras de linhas entre os valores ID§ - O valor ID§ > vem > > sempre no inicio da linha e marca o inicio de um bloco de informações. > > > > Tentei com o sed abaixo: > > > > sed 's/[^ID§]\(.*\)$/\1/g' from-to-status.log #Pesquisar tudo que não > > começa com ID§. Desse resultado, remover a quebra de linha. Mas, o > resultado > > foi igual ao arquivo original. > > > > César, veja se é isso que você quer (colei no pastebin para facilitar a > leitura do resultado): > > http://pastebin.com/fd78d60e > > Se for isso, a explicação da solução é a seguinte: > > O comando ':a;$!N;s/\n/ /g;ta' remove todas as quebras de linha do arquivo. > Em seguida, o comando 's/ID§/\nID§/g' substitui a string ID§ pela mesma > string ID§, precedida de uma quebra de linha (\n). > > É isto que você queria fazer?? > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Redirecionar saída do comando time
Estou tentando redirecionar a saída do comando time, mas não está funcionando. Tentei time > arquivo time 2> arquivo Em ambos casos a saída fica na tela. Estou usando bash no Ubuntu. -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Verificar linhas presentes em dois arquivos
Pessoal, possuo um script de monitoração e uma função dele efetua a verificação de linhas presentes em dois arquivos, através do laço abaixo. O problema é que o arquivo *teste* possui 100MB e está ficando muito lento, pois faz muito acesso à disco para ler e gravar os arquivos de saída. O que eu poderia utilizar para aumentar o desempenho? while read velha do mv /tmp/log /tmp/lognew grep "$velha" /tmp/lognew>> /tmp/dup grep -v "$velha" /tmp/lognew > /tmp/log done < /tmp/teste -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Atribuir valor de arquivo para variável - sem alter ar precedência
Pessoal, tenho que atribuir um valor a uma variável, mas se utilizo crase ou $() altera a precedência do script e dá erro. Segue o trecho de código: ssh u...@ip-servidor << LABEL-FIM variavel=`cat arquivo.txt` # ou variavel=$(cat arquivo.txt) LABEL-FIM Em ambos casos o cat é executado antes do ssh. Qual a alternativa para que a precedência do cat seja apenas sobre a atribuição? -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] sed script exclui comentários
digo em uma outra linguagem que usa > > > ponto e virgula (;) para comentário: > > > sed 's/\;.*$//;/ ^$/d' > > > > > > essa solução acima até funcionaou mas não exclui as linhas em branco > > > > > > --- Em qui, 16/7/09, jimmy 40yahoo.com. br>> > > > escreveu: > > > > > > De: jimmy > > > > > > > Assunto: Re: [shell-script] sed script exclui comentários > > > Para: shell-script@ yahoogrupos. com.br com.br> > > > Data: Quinta-feira, 16 de Julho de 2009, 9:16 > > > > > > > > > > > > On Thu, Jul 16, 2009 at 03:55:01AM -0700, denis costa wrote: > > > > > > > Olá a todos eu tenho um problema em um script... > > > > > > > > > > > > > > estava fazendo um script que contabilizava as linha de códigos-fontes > > > (excluindo linha em branco e comentários) > > > > > > > então fiz em sed para apagar o que começa com comentário e apagar as > > > linhas em branco: > > > > > > > > > > > > > > sed '/^#/d;/^$/d' > > > > > > > > > > > > > > mas assim ele só apaga no ínicio da linha, não apaga se tiver um espao > ou > > > tab. > > > > > > > > > > > > > > outra solução era apagar do comentário até o fim da linha, mas esse > > > também apaga a linha toda: > > > > > > > > > > > > > > sed '/#/,/$/d;/^ $/d' > > > > > > > > > > > > > > Ou seja caso tenha um comentário após uma linha de código essa será > > > excluída da contagem final. > > > > > > > > > > > > > > Por favor me ajudem com o complexíssimo( sic) sed, pelo menos pra mim. > > > > > > > > > > > > > > Desde já agradeço a todos... > > > > > > > > > > > > > > E parabéns pela qualidade da lista a todos!!! > > > > > > > > > > > > > > Um abraço > > > > > > > > > > > > > > - - -- > > > > > > com o sed tente fazer: > > > > > > $ sed '/^\s*\(#\|$ \)/d;' arquivo > > > > > > ou > > > > > > $ sed '/^\s*[^#]\w/ !d' arquivo > > > > > > mas já que você quer contar: > > > > > > $ grep -E -c '^\s*[^#]\w' arquivo > > > > > > -- > > > > > > "Não manejo bem as palavras > > > > > > Mas manipulo bem as strings." > > > > > > - - > > > > > > "Cada um usa a ferramenta que merece." > > > > > > - - > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _ _ _ _ _ _ > > > Veja quais são os assuntos do momento no Yahoo! +Buscados > > > http://br.maisbusca dos.yahoo. com > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > -- > > Jacson R. C. Silva > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > _ _ _ _ _ _ > > Veja quais são os assuntos do momento no Yahoo! +Buscados > > http://br.maisbusca dos.yahoo. com > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > __ > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbuscados.yahoo.com > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] sed script exclui comentários
Ok. Outra refinando sed 's/ *//g;s/\(.*\)#.*/\1/g' arquivo|grep -v "^$"|wc -l s/ *//g => retira todos os espaços em branco s/\(.*\)#.*/\1/g => procura qualquer coisa seguido de # mais qualquer coisa e substitui pelo primeiro padrão \1 grep - retira linhas em branco 2009/7/16 denis costa > > > outra coisa que esqueci de falar César Vianna, essa solução as linha > indesejadas se o comentário estiver identado: > > solução: > grep -v "^#" arquivo | grep -v "^$" > > exemplo > > #!/bin/bash > #este programa não faz nada > #e não escreve nada > echo "NADA" > > depois de processar: > > #e não escreve nada > echo "NADA" > > --- Em qui, 16/7/09, denis costa > > > escreveu: > > > De: denis costa > > > Assunto: Re: [shell-script] sed script exclui comentários > Para: shell-script@yahoogrupos.com.br > Data: Quinta-feira, 16 de Julho de 2009, 12:42 > > > > > Servir serve... > > Mas se vc testar no código em IDl que mandei pra lista verá que não > funcionará, pois o grep ou o sed não exclui os comentários identados, ou > seja que tenham espaços ou tabs, por isso o mesmo código funcionará em uma > linguagem e não em outras. Na teoria deveria funcionar em qualquer linguagem > que use o mesmo método de comentário, um símbolo especial na frente da > linha, era só trocar o símbolo. Mas não consegui fazer funcionar... > > Muito provavelmente deve ser pela minha falta de conhecimento em sed, grep > e regex!!! =^$ > > Muito Obrigado > > --- Em qui, 16/7/09, César Vianna escreveu: > > De: César Vianna > > Assunto: Re: [shell-script] sed script exclui comentários > > Para: shell-script@ yahoogrupos. com.br > > Data: Quinta-feira, 16 de Julho de 2009, 11:26 > > > > Não sei se entendi errado, mas não serve a alternativa abaixo? > > O primeiro grep remove linhas que iniciam com comentário e o segundo as > > linhas em branco > > ~# grep -v "^#" /etc/apache2/ apache2.conf| grep -v "^$"|wc -l > > 45 > > 2009/7/16 denis costa > > > > > > > > > os programas que estou usando para testar o contador de linhas "úteis" > > > > > > Programa bash > > > > > > #!/bin/bash > > > # > > > # Programa que cria aliases na quantidade necessária > > > # > > > # Para criar aliases a sintaxe é: > > > # ./aliases.sh cria 1 2 (1 é a variação do terceiro octeto do IP e 2 a > > > variação do quarto) > > > # Para destruir aliases a sintaxe é: > > > # ./aliases.sh destroi > > > > > > rede_base=168. 192 > > > > > > mascara=255. 255.0.0 > > > contador=0 > > > > > > if [ $1 == cria ]; then > > > echo "serão criados `expr $2 \* \( $3 + 1 \)` aliases" > > > sleep 3 > > > for octeto_tres in `seq 1 $2`; do > > > for octeto_quatro in `seq 0 $3`; do > > > ifconfig eth0:$contador inet > > > ${rede_base} .${octeto_ tres}.${octeto_ quatro} netmask $mascara > > > contador=$(expr $contador + 1) > > > done > > > done > > > elif [ $1 == destroi ]; then > > > ifconfig eth0:0 down > > > fi > > > > > > programa IDL > > > > > > pro grafico > > > > > > srf,'/mnt/proc026/ MOSAIC-0968. univap2009. postgres/ > dsm2.5/br090218_ uva4kmco_ 001b1014_ 0968. forward3_ dem_crs', dem > > > > > > srf,'/mnt/proc074/ denis/br090218_ uva4kmco2. 5_001b1014_ 0463. > forward4_ dem_crs', dsm > > > ;Faz diferança > > > diff=dsm-dem > > > diffz=dem-dsm > > > ;Limpa as imagens de diferença > > > putdum,diff, 1000 > > > putdum,diffz, 1000 > > > ;Mostra a imagem de diferença > > > tvf,diffz,5, 5,-10,10 > > > ;Calcula informação para gráficos > > > range=rebix( diff) > > > azimuth=rebiy( diff) > > > rangez=rebix( diffz) > > > azimuthz=rebiy( diffz) > > > ;Mostra gráficos > > > window,/free & !p.color=0 > > > wset,33 > > > plot,range,yrange= [-10,10], title='Range' > > > window,/free & !p.color=0 > > > wset,34 > > > plot,azimuth, yrange=[- 10,10],title= 'Azimuth' > > > > > > for i=0, 100 do begin > > > print,"calculando range..." > > > wset,33 > > > wait,3 > > > plot,rangez, yrange=[- 10,10],title= 'Range' > > > > > > print,"Phase Cal...&quo
[shell-script] Saída do ls para o cut
Gostaria de redirecionar a saída de um ls para um cut. Sempre faço com fo for var in `ls` do cut -d"." -f1 <<< $var done Ok. Funciona, Mas, acredito que tenha uma maneira mais elegante, tipo uma linha... -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Delay Xargs
Estou utilizando um comando ldapsearch dentro de um xargs. O problema é que acarreta uma frequência de requisições do que o permitido pelo servidor. Então queria colocar um delay entre as execuções do xargs O comando é ls | cut -d. -f1 | xargs -I {} ldapsearch -x -h IP uid={} -LLL ls | cut -d. -f1 # imprime o nome de arquivos que serão os argumentos do filtro do ldapsearch (post que realizei anteriormente) -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas] - Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. - Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br - Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net - Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: shell-script-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [shell-script] Delay Xargs
É... tinha tentado o teste &&, mas não funciona. Mas, mudando um pouco a sintaxe sugerida pelo Júlio funcionou: ls | cut -d. -f1 | xargs -I '{}' bash -c "ldapsearch -x -h IP -b BASE uid='{}' -LLL;sleep $Delay" Quanto ao ldapsearch não vi erro, mas tranquilo, essa parte está fora do escopo. Valeu Júlio e Marcelo!! 2009/8/12 Julio C. Neves > Marcelo, isso provavelmente não funcionará, pois o teste && só será > executado ao fim do cmd ldapsearch e acho que o Cesar quer é que um delay > seja criado a cada execução do xargs (que com a opção -i, atua como um > loop). > > Mas Cesar, acho que tem algo errado na sua sintaxe do ldapsearch. > -- > Abraços, > Julio > Cursos de Shell e Zenity? > - Em SP ligue (11) 2125-4747 (dias 29-30/08 e 12-13/09); > - Em DF ligue (61) 3223-3000; > - No RJ ligue (21) 2561-0867; > - Turmas fechadas em outras cidades ligue (21) 8112-9988. > > > 2009/8/11 Marcelo Andrade > > > > > > > 2009/8/11 César Vianna > > > >: > > > > > Estou utilizando um comando ldapsearch dentro de um xargs. O problema é > > que > > > acarreta uma frequência de requisições do que o permitido pelo > servidor. > > > Então queria colocar um delay entre as execuções do xargs > > > > > > O comando é > > > > > > ls | cut -d. -f1 | xargs -I {} ldapsearch -x -h IP uid={} -LLL > > > > Tentou chamar algo como "ldapsearch ... && sleep 10" ? > > > > Atenciosamente. > > > > -- > > MARCELO DE F. ANDRADE > > Belem, PA, Amazonia, Brazil > > Linux User #221105 > > > > http://mfandrade.wordpress.com > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > - > Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br > ----- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas] - Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. - Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br - Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net - Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: shell-script-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [shell-script] Dúvida para validar o valor corr eto
Camarada o find com a opção exec ou com xargs pode te ajudar. Segue histórico da lista sobre o assunto http://br.groups.yahoo.com/group/shell-script/message/16939 http://br.groups.yahoo.com/group/shell-script/message/12333 http://br.groups.yahoo.com/group/shell-script/message/25725 Se não ajudar, manda de volta. Abraço 2009/8/18 Eduardo Sousa > > > Estou tentando finalizar um script para deletar arquivos de log onde > determino a data, porém estou com dificuldades para validar o valor correto, > agradeço a ajuda dos colegas ? > > Exemplo: > > echo "Qual data deseja deletar ? - Ex: Aug 17" > > read DATA > > -->> test $DATA ...não sei o que inserir nesta sequencia > > ls -lart /log/ | grep -E "$DATA" | cut -c 59- > /log/ > > cat lista.txt | xargs rm -rf > > rm -rf lista.txt > > Att. > > Eduardo Sousa > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] colocar SID em arquivo
Não sei se te entendi. Mas, vai a minha avaliação: $ cat lalala.conf SID="SIDMAQUINA" $ sed 's/SIDMAQUINA/NOVOSID/g' lalala.conf SID="NOVOSID" *O novo sid pode estar em uma variável.* $ NOVOSID=`net getlocalsid | gawk '{print $6}'` $ sed 's/SIDMAQUINA/$NOVOSID/g' lalala.conf 2009/8/18 bleee > > > Possuo um arquivo de configuraçao, no qual preciso inserir o SID da > maquina. > estou automatizando a instalação. > O netsid é pego atraves do comando net getlocalsid > > O que fiz foi separar o campo necessário.. que eh o campo 6, assim > > net getlocalsid | gawk '{print $6}' > > o print eh soh pra apresentar mesmo > > mas o que acontece eh que nao sei como posso colocar no lalala.conf no > lugar de SID="SIDMAQUINA" > > alguem tem alguma ideia??? > > grato > =D > > __ > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbuscados.yahoo.com > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] colocar SID em arquivo
Tem que cuidar pra não ficar um emaranhado que ninguém entende. Mas, com xargs deve funcionar: net getlocalsid | gawk '{print $6}'` | xargs -I '{}' sed 's/SIDMAQUINA/{}/g' lalala.conf 2009/8/18 bleee > > > Os 2 modelos funcionaram bem. > Resolveram o problema. Mas será que nao tem como fazer isso de maneira a > nao precisar de uma variavel? > > tentar fazer jogar direto. > a linha é aquela mesma, sem problema. > > desde já, obrigado > > --- Em ter, 18/8/09, César Vianna > > > escreveu: > > De: César Vianna > > Assunto: Re: [shell-script] colocar SID em arquivo > Para: shell-script@yahoogrupos.com.br > Data: Terça-feira, 18 de Agosto de 2009, 14:55 > > > > > Não sei se te entendi. Mas, vai a minha avaliação: > > $ cat lalala.conf > > SID="SIDMAQUINA" > > $ sed 's/SIDMAQUINA/ NOVOSID/g' lalala.conf > > SID="NOVOSID" > > *O novo sid pode estar em uma variável.* > > $ NOVOSID=`net getlocalsid | gawk '{print $6}'` > > $ sed 's/SIDMAQUINA/ $NOVOSID/ g' lalala.conf > > 2009/8/18 bleee > > > > > > > > > Possuo um arquivo de configuraçao, no qual preciso inserir o SID da > > > maquina. > > > estou automatizando a instalação. > > > O netsid é pego atraves do comando net getlocalsid > > > > > > O que fiz foi separar o campo necessário.. que eh o campo 6, assim > > > > > > net getlocalsid | gawk '{print $6}' > > > > > > o print eh soh pra apresentar mesmo > > > > > > mas o que acontece eh que nao sei como posso colocar no lalala.conf no > > > lugar de SID="SIDMAQUINA" > > > > > > alguem tem alguma ideia??? > > > > > > grato > > > =D > > > > > > _ _ _ _ _ _ > > > Veja quais são os assuntos do momento no Yahoo! +Buscados > > > http://br.maisbusca dos.yahoo. com > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > -- > > César Vianna > > ---- --- > > Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às > > unidades; os agenciamentos móveis aos sistemas. > > Gilles Deleuze & Felix Guattari > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > __ > Fale com seus amigos de graça com o novo Yahoo! Messenger > http://br.messenger.yahoo.com/ > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Pesquisa de diretivas #if
sed ajuda echo "if defined( XXX ) || defined( YYY )"| sed 's/||/\n||/' 2009/8/18 Márcio Gil > > > Colegas, > > Eu executei a seguinte consulta, visando localizar diretivas > #ifdef/#ifndef que não constam em um arquivo de opções do programa > chamado Local.h: > > $ for DEF in $(grep -h "^\# *ifn\?def *" *.cpp | sed "s/^\# > *ifn\?def *//" | sort -u) ; do if ! grep -q "\# *define *$DEF" > Local/Local.h ; then echo $DEF ; fi ; done > CAD_PRO_CLEAR_LOCFORM > SCF_CH_BALCAO > SCF_ORC_PRECO_CPAG > SISQUERY > > Funcionou perfeito para as diretivas #ifdef e #ifndef, agora eu > queria extrair as variaveis contidas em diretivar #if, na forma: > > #if defined( XXX ) && defined( YYY ) > > ou > > #if defined( XXX ) || !defined( YYY ) > > etc. > > Quero que o comando retorne XXX e YYY em linhas separadas ou > separadas por um espaço. Agora o problema mesmo será quebrar linhas > assim: > > #if defined( XXX ) \ > || defined( YYY ) > > alguem me dá alguma sugestão? > > Obrigado, > > Marcio Gil. > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] comando
. é qualquer caracter (um) [^b] que não eja b Então, casa com "casa" e não com "caba" Esse link deve te ajudar http://aurelio.net/shell/canivete.html#metacaracteres 2009/8/27 luiscriera > > > > Alguem poderia me explicar este comando > ls |grep .a[^b]a. > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Chamada de Função dentro do Xargs
Tenho um script que contém a funcção copydir (desenvolvida pelo Aurélio Marinho Jargas) #bin/bash function copydir(){ #corpo a funcao... } #Uso a função com o xargs. A variável perfil contem paths de diretórios echo $perfis|xargs -I "{}" bash -c "copydir '{}' '{}.backup.$data'" O resultado é bash: copydir: comando não encontrado Se eu colocar somente copydir origem destino Funciona normalmente... -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Chamada de Função dentro do Xar gs
Pois é... fiquei pensando se tinha uma maneira de fazer o export de toda a função. Acabei usando um for e removi o xargs 2009/9/29 Julio C. Neves > > > O bash -c abre um subshell e por isso não vê a função que está declarada no > shell pai. O melhor seria deixar o copydir como uma função externa e > colocar > a sua chamada da seguinte forma: > > echo "$perfis" |xargs -i bash -c ". copydir {} {}.backup.$data" > > Não conheço esta função, mas caso cada path da variável $perfis não esteja > sozinho em uma linha, é provável que isso não funcione, pois gerará algo > como: > > copydir arq1 arq2 arq3 arq1 arq2 arq3.backup.$data > > veja: > > $ perfis="arq1 arq2 arq3" > $ echo "$perfis" | xargs -i echo {}.sufixo > arq1 arq2 arq3.sufixo > $ perfis="arq1 > > arq2 > > arq3" > $ echo "$perfis" | xargs -i echo {}.sufixo > arq1.sufixo > arq2.sufixo > arq3.sufixo > > Obs: a opção -l do xargs só se usa qdo o marcador de posição tem de ser > diferente de {}, pois este é o padrão (default) da opção -i. > > Abraços, > Julio > Cursos de Shell e Zenity em 2 fins de semana? > - Em SP ligue (11) 2125-4747; > - Em DF ligue (61) 3223-3000 (próxima turma de 1 a 4/10); > - No RJ ligue (21) 2561-0867; > - Turmas fechadas em outras cidades ligue (21) 8112-9988. > > 2009/9/29 César Vianna > > > > > > > > > Tenho um script que contém a funcção copydir (desenvolvida pelo Aurélio > > Marinho Jargas) > > > > #bin/bash > > function copydir(){ > > > > #corpo a funcao... > > > > } > > > > #Uso a função com o xargs. A variável perfil contem paths de diretórios > > echo $perfis|xargs -I "{}" bash -c "copydir '{}' '{}.backup.$data'" > > > > O resultado é > > bash: copydir: comando não encontrado > > > > Se eu colocar somente > > > > copydir origem destino > > > > Funciona normalmente... > > > > -- > > César Vianna > > --- > > Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo > às > > unidades; os agenciamentos móveis aos sistemas. > > Gilles Deleuze & Felix Guattari > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] ls no dialog
Preciso que o usuário selecione 1 diretório a partir de um ls cat <<< "$locais" dir1 dir2 dir3 dir4 Para montar o dialog, tentei selecao=$( dialog --stdout --menu 'Diretórios do Google Gears:' 0 0 0 `cat <<< "$locais"` '' ) Mas o resultado foi dir1dir2 dir3dir4 Isto é, uma linha como opção e a segunda como descrição. Eu queria que a descrição fosse em branco e cada linha uma opção. -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Diferença entre $* e $@
Pessoal, qual a diferença entre $* e $@ ? -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] apagar "received"
grep -v "received" 2009/11/12 Jair Santanna > > > Desejo apagar as linha de um arquivo que contém a palavra "received" > > Grato > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas] - Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. - Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br - Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net - Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: shell-script-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[shell-script] Compactar arquivos antigos
Estou tentando compactar arquivos com mais de um ano find -mtime +365|xargs -I '{}' tar --append --file=teste.tar.gz '{}' Mas, é gerado o erro abaixo tar: Impossível atualizar arquivos-tar compactados tar: Erro não é recuperável: saindo agora Se eu uso find -mtime +365|xargs -I '{}' tar -czvf teste.tar.gz '{}' O tar vai substituindo o arquivo e no final tenho apenas o último arquivo encontrado pelo find. Alguma dica? -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Compactar arquivos antigos
Grande Júlio! Fiquei sabendo que passou por Porto Alegre e nem avisou pra tomarmos um chopp. Abriu um botecos novos aqui daqueles!! Boas dicas do xargs. Reli o capítulo indicado. Mas, continuo com erro find /var/lib/mailman/archives/ -mtime +365|xargs tar --append --file=teste.tar.gz tar: Cannot update compressed archives tar: Error is not recoverable: exiting now tar: Cannot update compressed archives tar: Error is not recoverable: exiting now Mas, agora acho que o erro tá no append do tar. Executei separado assim: # teste2 é um arquivo vazio tar --append --file=teste.tar.gz teste2 tar: Cannot update compressed archives tar: Error is not recoverable: exiting now 2009/11/19 Julio C. Neves > Fala Cesar (é o Cesar Vianna meu amigo?), > Alguns comentários a fazer: > - A opção -I do xargs serve para vc especificar o delimitador, só que as > chaves ({}) são o padrão, então é melhor vc usar a opção -i (minúsculo) e > não especificar nada; > - Só que a função do xargs é pegar o máximo possível de cada vez do que vem > da entrada primária e botar atrás (com todo respeito) do cmd que ele está > executando, porém qdo vc usa a opção -i (ou a -I), ele tratará um-a-um os > arquivos recebidos da entrada primária. > > O seu problema é causado por este último parágrafo. No duro ele está > compactando os arquivos, um por um, e só restando na saída o último. > > Aí ficam 2 dúvidas: > 1. Como resolver este problema? > Simples, use o xargs da forma para a qual ele foi otimizado, isto é, faça: > find -mtime +365|xargs tar --append --file=teste.tar.gz > 2. Ué, então pra que serve o -i? > Para qdo vc não deseja botar o conteúdo da entrada primária atrás do cmd, > mas sim botar no meio (mais uma vez com todo respeito) do cmd. P.ex. > digamos > que eu queira mover os mesmos arquivo descoberto pelo find acima para um > diretório chamado velhos. Eu faria: > find -mtime +365|xargs -i mv {} velhos > > O xargs é extremamente poderoso e > aqui<https://wiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarBirinaite>vc > encontrará uma boa explicação sobre este cmd, em português e cheia de > exemplos. Gaste uns 20 minutos lendo e testando, vale a pena. > > Abraços, > Julio > Cursos de Shell e Zenity em 2 fins de semana? > - Em SP ligue (11) 2125-4747 Curso de 07 a 11/12; > - Em DF ligue (61) 3223-3000 Curso de zenity 09-10/01; > - No RJ ligue (21) 2561-0867. Curso nos dias 5,6,12,13/12; > - Turmas fechadas em outras cidades ligue (21) 8112-9988. > > > 2009/11/19 César Vianna > > > > > > > Estou tentando compactar arquivos com mais de um ano > > > > find -mtime +365|xargs -I '{}' tar --append --file=teste.tar.gz '{}' > > > > Mas, é gerado o erro abaixo > > > > tar: Impossível atualizar arquivos-tar compactados > > tar: Erro não é recuperável: saindo agora > > > > Se eu uso > > > > find -mtime +365|xargs -I '{}' tar -czvf teste.tar.gz '{}' > > > > O tar vai substituindo o arquivo e no final tenho apenas o último arquivo > > encontrado pelo find. > > > > Alguma dica? > > > > -- > > César Vianna > > --- > > Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo > às > > unidades; os agenciamentos móveis aos sistemas. > > Gilles Deleuze & Felix Guattari > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > - > Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br > - > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Rsync + xargs + argument list too long
Pessoal, tenho um script que grava em um arquivo uma série (muito grande) de comandos rsync conforme padrão abaixo rsync opções u...@servidor:caminho/* destino Após, outro script executará esses comandos da seguinte forma: while read line do echo $line|xargs -i -0 bash -c "{}" done
Re: [shell-script] Rsync + xargs + argument list too long
Pois é... "o problema" são dois... 1 - Os comandos possuem coringas. Ex: rsync u...@ip:/tmp/teste/* /tmp Isso causa o "argument list too long" Por isso, usei o xargs 2 - Os caminhos possuem espaços e caracteres especiais Ex: rsync u...@ip:/tmp/pasta\ com\ espaço Se eu apenas executar o comando, os "\" são suprimidos. Pra isso, usei o -0 do xargs Bom, mesmo assim, está ocorrendo "argument list too long" 2009/11/20 Julio C. Neves > Cesar, > não entendi o que vc quer. Ou vc faz: > cat arquivo_com_comandos | xargs -i bash -c "{}" > > Ou vc faz: > while read line > do >$line > done > Abraços, > Julio > Cursos de Shell e Zenity em 2 fins de semana? > - Em SP ligue (11) 2125-4747 Curso de 07 a 11/12; > - Em DF ligue (61) 3223-3000 Curso de zenity 09-10/01; > - No RJ ligue (21) 2561-0867. Curso nos dias 5,6,12,13/12; > - Turmas fechadas em outras cidades ligue (21) 8112-9988. > > > 2009/11/20 César Vianna > > > > > > > Pessoal, tenho um script que grava em um arquivo uma série (muito grande) > > de > > comandos rsync conforme padrão abaixo > > > > rsync opções u...@servidor:caminho/* destino > > > > Após, outro script executará esses comandos da seguinte forma: > > > > while read line > > do > > echo $line|xargs -i -0 bash -c "{}" > > done > > > Essa construção está gerando "argument list too long". Por quê? > > > > Obs. Os caminhos possuem espaço e caracteres especiais "escapados". Por > > isso, utilizo o -0 do xargs > > > > -- > > César Vianna > > --- > > Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo > às > > unidades; os agenciamentos móveis aos sistemas. > > Gilles Deleuze & Felix Guattari > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > - > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > - > Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br > --------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > - > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Re: Maiúscula e minúscula
Resgatando a dificuldade já tratada... O problema original era alterar nomes compostos em minúsculo, deixando a primeira letra em maiúsculo. Agora surgiu a seguinte variação: :~$ echo "coordenacao de analise e instrucao de processos" | sed -r 's/\b[a-z]+/\u&/g' Coordenacao De Analise E Instrucao De Processos O problema é que o "De" e o "E" precisariam estar em minúscula. Uma solução é no sed acima não considerar palavras com 1 ou 2 letras... Mas, não consegui fazer essa alteração. 2008/4/4 Flavio Junior > Um pouco mais simples, ainda com sed: > > $ cat xyz | sed -r 's/\b[a-z]+/\u&/g' > Alfredo Morto > Alberto Roberto > Macaco Malandro Balh Ble > Tatu Preguicoso > Prego Batido > Urangotango Chines > > \b == border (inicio de linha, espaço, tab ... essas coisa) > \u == uppercase > & == a regex que foi casada no primeiro campo... > > Ou seja: > Case border+letra minuscula, imprima em uppercase o que foi casado. > > Sorte, > > Flávio do Carmo Junior aka waKKu > #bash-br @ irc.freenode.net > > 2008/4/4 voyeg3r >: > > > > > > > > > > > > > > > Só para constar. A mesma solução usando o vim, para casos em que > > você só tenha o vim seria assim: > > > > # abrir todos os arquivos > > vim *.txt > > > > # disparar o comando bufdo > > > > :bufdo :%s/^./\U&/g | :wall > > > > # dar alguns enteres confirmando e finalmente digitar > > :qall > > > > --- Em shell-script@yahoogrupos.com.br, > "Ivan lopes" > > escreveu > > > > > > cat xyz | sed 's/\(^\)\?\([^ ]*\)/\u&/g' > > > Alfredo > > > Alberto > > > Macaco > > > Tatu > > > Prego > > > Urangotango > > > Cesar Eduardo Motta Vianna > > > > > > > > > -- César Vianna --- Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às unidades; os agenciamentos móveis aos sistemas. Gilles Deleuze & Felix Guattari ** FISL11 - Forum Internacional Software Livre Intl. Free Software Forum - http://www.fisl.org.br/ 21~24::Julho||July::2010 - Porto Alegre - Brasil ** [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] livro sobre linux e shell
O site do Júlio também tem tópicos interessantes http://twiki.softwarelivre.org/bin/view/TWikiBar/WebHome E sobre Linux em geral, utilizo o Foca Linux http://focalinux.cipsga.org.br/gol.html Abraços On Jan 9, 2008 1:14 AM, newerton santos <[EMAIL PROTECTED]> wrote: > Olá Amigos, > preciso de um livro sobre linux e shell que seja bom, alguem pode me > indicar um? > > obrigado > newerton > > [As partes desta mensagem que não continham texto foram removidas] > > -- Existem 11 tipos de pessoas: As que entendem binário As que não entendem E as que nunca irão entender [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Formar CSV
Pessoal, tenho um arquivo com o seguinte formato uid: CPF cn: NOME mail: E-MAIL ou: SETOR Preciso fazer um csv com estas informações. No VI fiz com as seguintes linhas :%s/^\(uid: .*\)\n\(cn:.*\)/\1;\2/g #substitui a linha que começa com uid, possui um \n e segue com cn pelo primeiro-resultado;segundo-resultado :%s/^\(uid: .*\)\n\(mail:.*\)/\1;\2/g :%s/^\(uid: .*\)\n\(ou:.*\)/\1;\2/g Ok. Ao final, tenho o CSV. Mas, quando fiz no bash, não funcionou. ldapsearch -x -h IP -b BASE -LLL '(&(ou=*string*)(&(atributo=x)))' uid cn mail ou|grep -v dn:|sed 's/^(uid: .*)\n(cn: .*)/"\1;\2"/g' sed: -e expressão #1, caractere 32: invalid reference \2 on `s' command's RHS Alguma dica? [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Re: Formar CSV
Ok. Quase tudo certo. Mas sobra uns separadores ao final... ldapsearch | sed 's/^.*: \(.*\)/\1/' | paste -d";" - - - - resultado string1;string2;string3;string4$ ;;;$ Por que sobra a quebra de linha mais os ;;; ? Tentei alterar o paste, mas não solucionou 2008/1/15 Fabiano Caixeta Duarte <[EMAIL PROTECTED]>: > --- Em shell-script@yahoogrupos.com.br, > "César Vianna" > <[EMAIL PROTECTED]> escreveu > > > > > Pessoal, tenho um arquivo com o seguinte formato > > > > uid: CPF > > cn: NOME > > mail: E-MAIL > > ou: SETOR > > > > Preciso fazer um csv com estas informações. > > Fala, Celsão! > > Resumindo, você precisa tirar os rótulos dos "campos" e juntá-los em > uma linha, certo? > > Então faça isto: > ldapsearch | sed 's/^.*: \(.*\)/\1/' | paste -d, - - - - > > Abraço! > > Fabiano. > > > [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Como usar o UNIQ em CSV
Buenas !! Tenho um csv com 5 campos. O terceiro são CPFs. Tenho que separar em dois arquivos: um com os CPFs duplicados e outro com os CPFs únicos. Fiz assim: cut -d";" -f3 arquivo.csv | uniq -d e cut -d";" -f3 arquivo.csv | uniq Ok. O problema é que eu perco o resto da linha. Tem alguma opção do uniq ou outro comando para recuperar o conteúdo da linha? Como os grupos ( \1 ... ) em expressões regulares. [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Como usar o UNIQ em CSV
O arquivo é da seguinte forma Código;Nome;CPF;Endereço 001;João Silva;12345678900;Rua x 002;João Francisco Silva;12345678900;Rua x 003;José;98765432100;Rua y O resultado esperado é separar #CPF único 003;José;98765432100;Rua e #CPF duplicado 001;João Silva;12345678900;Rua x 002;João Francisco Silva;12345678900;Rua x Acabei fazendo em duas etapas. Separei duas listas de CPFs com "uniq -u" e "uniq -d" e depois fiz o seguinte script #!/bin/bash cat cpfs-duplicados.txt| while read i do grep $i retirar-cpfs-duplicados.csv >> duplicados.csv done cat cpfs-unicos.txt| while read i do grep $i retirar-cpfs-duplicados.csv >> unicos.csv done Ok,. Funcionou. Mas muito lento... 2008/1/23 Flavio Junior <[EMAIL PROTECTED]>: > Não entendi bem.. > > mas veja as opções do sort e do uniq... > > Exemplo: > > sort > -k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1) > -t, --field-separator=SEP use SEP instead of non-blank to blank transition > > uniq > -f, --skip-fields=N avoid comparing the first N fields > > Sem um padrão do arquivo fica dificil.. > Vc passar dados dos outros impossivel... > > Então fica mais dificil ajudar, mas se puder montar algo com umas 4 ou > 5 linhas no padrão e dados inuteis, eu tentaria ajudar mais.. > > -- > > Flávio do Carmo Júnior > > 2008/1/23 César Vianna <[EMAIL PROTECTED] > >: > > > > > > > > > > > > > > > Buenas !! > > > > Tenho um csv com 5 campos. O terceiro são CPFs. Tenho que separar em > dois > > arquivos: um com os CPFs duplicados e outro com os CPFs únicos. > > > > Fiz assim: > > > > cut -d";" -f3 arquivo.csv | uniq -d > > > > e > > > > cut -d";" -f3 arquivo.csv | uniq > > > > Ok. O problema é que eu perco o resto da linha. Tem alguma opção do uniq > ou > > outro comando para recuperar o conteúdo da linha? Como os grupos ( \1 > ... ) > > em expressões regulares. > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Formatacao na impressão errata
não sei se é a melhor alternativa , mas funciona x=aaa;bbb sed 's/;/\t/' <<< $x aaa bbb 2008/1/25 Gemayel Alves <[EMAIL PROTECTED]>: > > nao foi os espacos por isso estou trocando por pontos. > > old..qtd:.41 > php..qtd:.1569 > pot..qtd:.5 > pub..qtd:.12 > rar..qtd:.38 > rpm..qtd:.1 > rsa..qtd:.224 > estete..qtd:.1 > testete..qtd:.159 > sh..qtd:.2054 > testete.qtd:.1 > sql..qtd:.21472 > tar..qtd:.67 > tgz..qtd:.3 > txt..qtd:.2085 > testete..qtd:.1 > vmx..qtd:.6 > zip..qtd:.113 > > ps, ja tentei com tab echo -e "$variavel \t $variavel2" e nao funciona. > __ > Receba GRÁTIS as mensagens do Messenger no seu celular quando você estiver > offline. Conheça o MSN Mobile! > http://mobile.live.com/signup/signup2.aspx?lc=pt-br > > [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Formatacao na impressão errata
engraçado... para mim funcionou x="aaa;bbb";y="a;bb";z="aaa;ccc";sed "s/;/\t\t/" <<< $x;sed 's/;/\t\t/' <<< $y;sed 's/;/\t\t/' <<< $z aaa bbb a bb aaa ccc obs... aqui no email que desalinha um pouco. Ou você pode usar o tput cup lin col para posicionar o cursor em um local da tela e depois dar o echo http://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarPapo009 2008/1/25 Gemayel Alves <[EMAIL PROTECTED]>: > > Não funciona pois aaa e bbb tem tamanhos variados. e oq preciso é de um > alinhamento podendo ser metade da tela imprime aaa e a partir da outra > metade imprime bbb. > > > To: shell-script@yahoogrupos.com.br > > From: [EMAIL PROTECTED] > > Date: Fri, 25 Jan 2008 16:37:40 -0200 > > Subject: Re: [shell-script] Formatacao na impressão errata > > > > > > > não sei se é a melhor alternativa , mas funciona > > > > x=aaa;bbb > > > > sed 's/;/\t/' <<< $x > > > > aaa bbb > > > > 2008/1/25 Gemayel Alves>: > > > >> > >> nao foi os espacos por isso estou trocando por pontos. > >> > >> old..qtd:.41 > >> php..qtd:.1569 > >> pot..qtd:.5 > >> pub..qtd:.12 > >> rar..qtd:.38 > >> rpm..qtd:.1 > >> rsa..qtd:.224 > >> estete..qtd:.1 > >> testete..qtd:.159 > >> sh..qtd:.2054 > >> testete.qtd:.1 > >> sql..qtd:.21472 > >> tar..qtd:.67 > >> tgz..qtd:.3 > >> txt..qtd:.2085 > >> testete..qtd:.1 > >> vmx..qtd:.6 > >> zip..qtd:.113 > >> > >> ps, ja tentei com tab echo -e "$variavel \t $variavel2" e nao funciona. > >> __ > >> Receba GRÁTIS as mensagens do Messenger no seu celular quando você > estiver > >> offline. Conheça o MSN Mobile! > >> http://mobile.live.com/signup/signup2.aspx?lc=pt-br > >> > >> > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > __ > Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! > http://www.amigosdomessenger.com.br/ > > [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Redirecionar saída de um programa Java
Pessoal, tenho um programa java (.class). Queria redirecionar a saída dele para um arquivo. É possível no shell? Tentei java nome_programa > teste.txt Mas não funciona. Imagino que seja por que o programa não roda no shell e sim na VM. Existe alguma alternativa, sem ter que alterar o programa? Obs. Se eu estiver saindo do escopo da lista, só avisar. Abraços [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Retirar tags html
Preciso remover as tags de um html e só imprimir o texto. cat teste.html abc abcdef Tentei com: sed "s/<.*>\(.*\)/\1/g" teste.html mas como o * é guloso, o resultado é vazio. tentei assim sed "s/<.*>\(.*\)<\/.*>/\1/g" teste.html mas o resultado é apenas a primeira ocorrência abc Alguma dica? [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Script de consulta LDAP lento
Pessoal, tenho um arquivo "emails.txt" que possui um email por linha. Preciso saber quais desses emails não estão em um LDAP. Fiz o script abaixo. Funciona, porém MUITO lento. São uns 1 registros. Será que não tem outra implementação mais rápida? # testa se o email contido em emails.txt está no ldap (atributo sn). A linha numEntries só é exibida pelo LDAP quando o registro é encontrado. for i in `cat emails.txt` do ldapsearch -x sn=$i|if grep numEntries; then echo > /dev/null; else echo $i >> nao_existe.txt; fi done Abraços [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Maiúscula e minúscula
Opa! Tenho um arquivo com uns 500 nomes completos (um em cada linha). Está tudo em minúscula e preciso passar só a primeira letra de cada nome para maiúscula. Ex. cesar eduardo motta vianna passar para Cesar Eduardo Motta Vianna Tentei com sed e tr, mas não acertei a ER [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Maiúscula e minúscula
A solução do vi funciona bem. Só não funcionou na linha de comando do shell, dentro do vi foi legal. Obs. Agora to pesquisando para saber o que aquela expressão faz Valeu! 2008/4/3 Ricardo Brito do Nascimento <[EMAIL PROTECTED]>: > A dúvida não foi minha, mas gostei te tua solução entretanto se o nome > tiver mais de 1 palavra substitui apenas a primeira. como fazer para > substituir todas? > ricardo brito do nascimento > Ricardo Brito Do Nascimento; ou melhor > Ricardo Brito do Nascimento > > -- > Ninguém há semelhante a ti, ó Senhor; tu és grande, e grande o poder > do teu nome. (1ªJeremias 10.6) > No one is like you, O Lord; you are great, and your name is mighty in > power. (1ªJeremiah 10.6) > Jesus te ama, aceite-O! Jesus loves you, accept you Him! > > Flavio Junior escreveu: > > > > > Soluçãozinha feia.. > > Deve vir algo melhor por ai, mas é uma opção: > > > > $ echo flavio | awk '{X=substr($1,1,1); sub(/^./,toupper(X)); print}' > > Flavio > > > > $ cat xyz > > alfredo > > alberto > > macaco > > tatu > > prego > > urangotango > > > > $ awk '{X=substr($1,1,1); sub(/^./,toupper(X)); print}' xyz > > Alfredo > > Alberto > > Macaco > > Tatu > > Prego > > Urangotango > > > > Sorte ai, > > > > Flavio do Carmo Junior > > > > 2008/4/3 César Vianna <[EMAIL PROTECTED] > > <mailto:cesar.vianna%40gmail.com >>: > > > > > > > > > > > > > > > > > > > > > Opa! > > > > > > Tenho um arquivo com uns 500 nomes completos (um em cada linha). > > Está tudo > > > em minúscula e preciso passar só a primeira letra de cada nome para > > > maiúscula. > > > > > > Ex. > > > > > > cesar eduardo motta vianna > > > > > > passar para > > > > > > Cesar Eduardo Motta Vianna > > > > > > Tentei com sed e tr, mas não acertei a ER > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Saida inesperada do while
tente ssh ${WIP1} < /dev/null FINAL 2008/4/4 Marcos Gattermeyer <[EMAIL PROTECTED]>: > Ola a todos, > > Tenho um arquivo de filiais + Ips chamado loja : > > 01 192.168.0.1 > 02 192.168.0.2 > 05 192.168.0.5 > . > . > 70 192.168.0.70 > > Montei um script para verificar se a filial esta ativa : > > #!/bin/bash > while read LINHA ; do > WFILIAL=`echo $LINHA | awk '{print $1}'` > WIP1=`echo $LINHA | awk '{print $2}'` > if ! ssh ${WIP1} ls > /dev/null ; then > continue > else > echo "Filial $WFILIAL esta ativa" >> noar.txt > fi > done < $LIST > > Acontece que no comando ssh para cada filial necessito a digitacao de > uma senha, ai o script sai fora do while. > > É inevitavel o uso do ssh e do login para o processo. > > Sera que existe alguma forma de evitar esta saida inesperada ? > > Obrigado > > Marcos > > > [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Hostname
É por aí... tam=`expr length $dominio`;if egrep "^[aA0-zZ9][aA0-zZ9-]+[aA0-zZ9]" <<< $dominio && [ $tam -lt 63 ]; then echo ok; else echo falhou; fi 2008/4/3 Filipe Esperandio <[EMAIL PROTECTED]>: > Olá, > > alguém tem uma expressão regular pronta pra validar hostname? > Pensei em algo assim: ^[aA0-zZ9][aA0-zZ9-]+[aA0-zZ9]$ > Mas não sei limitar os 63 caracteres do label... > > Alguma sugestão melhorzinha? > > Abraços, > > -- > Filipe Gomes Esperandio > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Teste Elinks
Estou tentando fazer um script que teste um login de um site. O login é realizado através do form abaixo Mas não sei como fazer para chamar a página pelo elinks (ou links) e já passar os dados para o form. [As partes desta mensagem que não continham texto foram removidas]
[shell-script] Sed - troca apenas da primeira ocorrência
Tenho um arquivo texto com o seguinte conteúdo 321 852 vazio vazio vazio Quero trocar a primeira ocorrência de "vazio" por "qualquercoisa" Fiz assim sed "s/vazio/qualquercoisa/" estac.txt e sed "s/vazio/qualquercoisa/1" estac.txt Mas em ambas opções ele troca todas as ocorrências de vazio Sei que tem alguma opção para interromper na primeira ocorrência, mas não estou lembrando. Como diz o Júlio: "Para o sed não ser guloso" [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Sed - troca apenas da primeira ocorrência
ok. mas o resultado esperado seria: teste teste qualquercoisa a a Teria que apenas substituir a primeira linha encontrada e preservar as demais 2008/4/29 Flavio Junior <[EMAIL PROTECTED]>: > q > > [EMAIL PROTECTED]:~]# echo -e 'teste\nteste\na\na\na' > teste > teste > a > a > a > [EMAIL PROTECTED]:~]# echo -e 'teste\nteste\na\na\na' | sed > '/a/{s/.*/qualquercoisa/;q}' > teste > teste > qualquercoisa > [EMAIL PROTECTED]:~]# > > mim ser preguiçoso.. > > Pra casar vazio pode usar: ^$ > > -- > > Flavio do Carmo Junior > > 2008/4/29 César Vianna <[EMAIL PROTECTED] > >: > > > > > > > > > > > > > > > Tenho um arquivo texto com o seguinte conteúdo > > > > 321 > > 852 > > vazio > > vazio > > vazio > > > > Quero trocar a primeira ocorrência de "vazio" por "qualquercoisa" > > > > Fiz assim > > > > sed "s/vazio/qualquercoisa/" estac.txt > > > > e > > > > sed "s/vazio/qualquercoisa/1" estac.txt > > > > Mas em ambas opções ele troca todas as ocorrências de vazio > > > > Sei que tem alguma opção para interromper na primeira ocorrência, mas > não > > estou lembrando. Como diz o Júlio: "Para o sed não ser guloso" > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > [As partes desta mensagem que não continham texto foram removidas]