Re: [shell-script] problema nas clausulas do comando if
Acho que me expressei mal. Tu copias os dois primeiros parâmetros passados para o script dessa forma: ARQENT=$1 ARQSAI=$2 Existe um teste mais simples, porém não muito robusto, que seria testar o número de parâmetros if [ $# -ge 2 ]; then # se vc tiver pelo menos 2 parametros... ... fi MAS se vc executar o script dessa forma ./script.sh "" "" vc passou 2 parametros. vazios, mas passou.é claro que isso 'raramente' vai acontecer. Agora, um teste interessante seria ver se o ARQENT é um arquivo regular, isso vc pode fazer trocando o teste -z por -f nesse arquivo. ai sim o seu teste seria bem robusto! Att Tiago On 5/2/07, Renato de Oliveira Diogo <[EMAIL PROTECTED]> wrote: > > Olá > > funcionou perfeitamente deste jeito > > if [ -z "${ARQENT}" -o -z "${ARQSAI}" ]; > > vlw.. muito obrigado > > do outro não sei se entendi direito... mas vc está dizendo se a string > (que > vem por referencia) tem até 2 conjuntos de parametros? > > []s > > On 4/28/07, Tiago Barcellos Peczenyj <[EMAIL > PROTECTED]> > wrote: > > > > Teste dessa forma: > > > > if [ -z "${ARQENT}" -o -z "${ARQSAI}" ]; > > > > normalmente esse tipo de erro acontece devido ao uso de uma variavel sem > > valor. > > > > na verdade vc poderia testar se a variavel $# é igual a 2 tambem ;-) > > > > []´s Tiago > > > > On 4/28/07, Renato de Oliveira Diogo <[EMAIL > > PROTECTED] > > > > wrote: > > > > > > > > > > > > > > > > > > > > > Olá pessoal > > > > > > estou construindo um script e estou checando a passagem de > parametros... > > > > > > == > > > ARQENT=$1; > > > ARQSAI=$2; > > > COUNT=1; > > > ARQTEMP=/tmp/tmpscriptsh_vararqtemp > > > > > > LINHA_EXT="c_1,c_2,c_3,c_4,c_5,c_6,c_7,c_8"; > > > > > > if [ -z $ARQENT -o -z $ARQSAI ]; > > > then > > > echo "script v0.1 - Renato Diogo"; > > > echo "Sintaxe: script {arquivo_entrada} {arquivo_saida}" > > > exit 1; > > > fi > > > == > > > > > > Quandou vou testar, se nao passar nenhum parametro, entra normal, se > > > passo os dois, também... mas quando coloco somente 1 (que era para > > > entrar no if) dá o seguinte erro: > > > > > > == > > > ./script.sh: line 35: [: argument expected > > > == > > > > > > Alguem pode me dizer o pq? > > > > > > []s > > > > > > > > > > -- > > Tiago B Peczenyj > > Linux User #405772 > > > > # cd /pub > > # more beer > > > > > > -- > > Renato de Oliveira Diogo > > Blueeye Web Solutions > 14-32243492 > > Bacharel em Ciência da Computação > UNESP - Bauru > Mestrando em Ciência da Computação > UNESP > > [EMAIL PROTECTED] > [EMAIL PROTECTED] > > [As partes desta mensagem que não continham texto foram removidas] > > > -- Tiago B Peczenyj Linux User #405772 # cd /pub # more beer [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Mesclar varias linhas de te xto em uma só para formar arquivo CSV
O comando split divide um arquivo em vários pedaços. Por default divide em blocos de 1000 linhas. []s Alexandre Renato de Oliveira Diogo <[EMAIL PROTECTED]> escreveu: eu usei o awk, da certo para o que eu quero... agora sobre o comando split o que ele faz? []s On 4/28/07, Tiago Barcellos Peczenyj <[EMAIL PROTECTED]> wrote: > > Renato, > > não entendi a regra para mesclar as linhas, mas sugiro que estudes como o > awk trabalha com arrays - o comando split pode ser bem util nesse caso. > > []´s Tiago > > > On 4/26/07, Renato de Oliveira Diogo <[EMAIL > PROTECTED]> > wrote: > > > > Olá pessoal > > > > preciso construir um script, lendo um arquivo texto ele mescle varias > > linhas em uma só baseada nos dois primeiros campos. Cada linha do > > arquivo tem esses campos: > > Campo1,Campo2,Campo3,Campo4,Campo5,Campo6,Campo7,Campo8 > > > > Através do campo1,campo2 quero unir todas as linhas para ficar uma só, > > pois dessas linhas, os campos que estiverem em uma linha não está na > > outra (em branco) > > > > Um pedaçõ do arquivo: > > [...] > > 20,0,30.0, > > 26,999,150.0, > > 26,0,,0.0 > > 23,0,,0.0 > > 20,0,,0.0 > > 26,0,,,35.235,30.438,34.44,5 > > 26,1,,35.235 > > 23,0,,,41.594,37.8,40.8,9 > > 20,0,,,52.954,45.16,52.16,13 > > [...] > > > > Neste exemplo eu teria linhas deste tipo, pegando uma linha ficaria > assim: > > 20,0,30.0, > > 20,0,,0.0 > > 20,0,,,52.954,45.16,52.16,13 > > > > Resultado > > 20,0,30.0,0.0,52.954,45.16,52.16,13 > > > > Obs.: as linhas, no meio de todas as outras, aparecem em ordem, tipo > > assim: > > 1 - campo1,campo2,campo3 > > 2 - campo1,campo2,,campo4 > > 3 - campo1,campo2,,,campo5,campo6,campo7,campo8 > > > > Alguem pode me auxiliar? > > > > Depois disso vou importar para o openoffice para montar gráficos, > > contas... :) ... > > > > > > > > -- > Tiago B Peczenyj > Linux User #405772 > > # cd /pub > # more beer > > [As partes desta mensagem que não continham texto foram removidas] > > > -- Renato de Oliveira Diogo Blueeye Web Solutions 14-32243492 Bacharel em Ciência da Computação UNESP - Bauru Mestrando em Ciência da Computação UNESP [EMAIL PROTECTED] [EMAIL PROTECTED] [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]
Res: [shell-script] Login como root
Valeu Sérgio, era exatamente isto que procurava, só que tive que adicionar o "- root" no su, porque senão quando logava como root o $USER ainda retornava o nome do usuario e não "root". Obrigado Rafael [EMAIL PROTECTED] ~/teste $ cat su.sh #!/bin/sh [ $USER == "root" ] || { su - root -c "sh su.sh"; exit; } echo "Oi"; exit; - Mensagem original De: Sérgio Durigan Júnior <[EMAIL PROTECTED]> Para: shell-script@yahoogrupos.com.br Enviadas: Quarta-feira, 2 de Maio de 2007 17:09:37 Assunto: Re: [shell-script] Login como root On 5/2/07, Rafa Pongai <[EMAIL PROTECTED] com.br> wrote: > estou fazendo um script que só irá funcionar com o usuário root, e gostaria > de fazer esta verificação no script e caso não seja o "root" chamar um "su", > o problema é que quando chamo o "su", ele abre um outro terminal e só > continua o script quando dou um "exit" no novo bash que o "su" criou, alguém > teria alguma idéia para eu poder fazer isto?? Rafa, Pensando um pouquinho, cheguei à seguinte solução: [EMAIL PROTECTED] ~/teste $ cat su.sh #!/bin/sh [ $USER == "root" ] || { su -c "sh su.sh"; exit; } echo "Oi"; exit; Usei o parâmetro "-c" do "su" para executar um comando, que no caso é o próprio script que estou rodando. Depois que eu executo esse script (aí sim com permissão de root!), eu saio fora... Repare que talvez seja interessante fazer umas checagens pra ver se o usuário conseguiu se logar com o "su", e talvez imprimir uma mensagem de erro se não deu... Tenta aí, deve funcionar com você também ;-) []s Sérgio. __ 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]
Re: Res: [shell-script] Login como root
o "-" é para chamas o enviroment todo. Use sempre assim. []'s Gunter Em Qui, 2007-05-03 às 07:06 -0700, Rafa Pongai escreveu: > Valeu Sérgio, > > era exatamente isto que procurava, só que tive que adicionar o "- > root" no su, porque senão quando logava como root o $USER ainda > retornava o nome do usuario e não "root". > > Obrigado > Rafael > > [EMAIL PROTECTED] ~/teste $ cat su.sh > > #!/bin/sh > > [ $USER == "root" ] || { > > su - root -c "sh su.sh"; > > exit; > > } > > echo "Oi"; > > exit; > > - Mensagem original > De: Sérgio Durigan Júnior <[EMAIL PROTECTED]> > Para: shell-script@yahoogrupos.com.br > Enviadas: Quarta-feira, 2 de Maio de 2007 17:09:37 > Assunto: Re: [shell-script] Login como root > > On 5/2/07, Rafa Pongai <[EMAIL PROTECTED] com.br> wrote: > > > estou fazendo um script que só irá funcionar com o usuário root, e > gostaria de fazer esta verificação no script e caso não seja o "root" > chamar um "su", o problema é que quando chamo o "su", ele abre um > outro terminal e só continua o script quando dou um "exit" no novo > bash que o "su" criou, alguém teria alguma idéia para eu poder fazer > isto?? > > Rafa, > > Pensando um pouquinho, cheguei à seguinte solução: > > [EMAIL PROTECTED] ~/teste $ cat su.sh > > #!/bin/sh > > [ $USER == "root" ] || { > > su -c "sh su.sh"; > > exit; > > } > > echo "Oi"; > > exit; > > Usei o parâmetro "-c" do "su" para executar um comando, que no caso é > > o próprio script que estou rodando. Depois que eu executo esse script > > (aí sim com permissão de root!), eu saio fora... Repare que talvez > > seja interessante fazer umas checagens pra ver se o usuário conseguiu > > se logar com o "su", e talvez imprimir uma mensagem de erro se não > > deu... Tenta aí, deve funcionar com você também ;-) > > []s > > Sérgio. > > > > __ > 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] > > > > > > [As partes desta mensagem que não continham texto foram removidas]
[shell-script] scp automatizado em script sem pausa para informar a senha ...
Pessoal, A algum tempo houve uma thread aqui na lista sobre como "automatizar" o comando scp. A ideia original era fazer uma cópia de arquivos via scp sem a "pausa" para informar a senha. Exceto pela troca de chaves RSA, chegou-se a alguma conclusão sobre como proceder em BASH ? except, xargs ... ? Alguma coisa ? Pergunto porque esta bem dificil pesquisar no yahoogrupos, o mecanismo de pesquisa é débil e nem sempre os participantes especificam de forma clara o assunto da mensagem. Especificamente, minha necessidade é disparar de um servidor central a cópia de N arquivos para N estações linux de minha rede. Isamp.
Re: [shell-script] scp automatizado em script sem pausa para informar a senha ...
Cara se não for por chave pública, tem que ser com o expect mesmo (presumo eu). Algo como (...) set timeout 10 eval spawn scp [EMAIL PROTECTED]:arquivo expect "^(P|p)assword*" send "senha" expect "*100*" close wait (...) Se não funcionar o ^(P|p) usa um "*" no lugar. Mas porque não usar a chave? Segurança? Em Qui, 2007-05-03 às 11:58 -0300, Isamp escreveu: > Pessoal, > > A algum tempo houve uma thread aqui na lista sobre como "automatizar" > o > comando scp. > A ideia original era fazer uma cópia de arquivos via scp sem a > "pausa" > para informar a senha. > > Exceto pela troca de chaves RSA, chegou-se a alguma conclusão sobre > como > proceder em BASH ? > except, xargs ... ? Alguma coisa ? > > Pergunto porque esta bem dificil pesquisar no yahoogrupos, o > mecanismo > de pesquisa é débil e nem sempre > os participantes especificam de forma clara o assunto da mensagem. > > Especificamente, minha necessidade é disparar de um servidor central > a > cópia de N arquivos para N estações > linux de minha rede. > > Isamp. > > > > > > [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] scp automatizado em script sem pausa para informar a senha ...
Isamp <[EMAIL PROTECTED]> writes: > Pessoal, > > A algum tempo houve uma thread aqui na lista sobre como "automatizar" o > comando scp. > A ideia original era fazer uma cópia de arquivos via scp sem a "pausa" > para informar a senha. Eu consigo imaginar somente duas formas para conseguires fazer isso: - uso de chaves sem passphrase - uso do expect para "digitar" a senha para voce Sobre o ultimo, indico que voce leia: http://rootprompt.org/article.php3?article=9187 Contudo acho que voce vai acabar caindo no uso de Perl ou algo mais. -- O T A V I OS A L V A D O R - E-mail: [EMAIL PROTECTED] UIN: 5906116 GNU/Linux User: 239058 GPG ID: 49A5F855 Home Page: http://otavio.ossystems.com.br - "Microsoft sells you Windows ... Linux gives you the whole house."
Re: [shell-script] scp automatizado em script sem pausa para informar a senha ...
Bruno Gunter Fricke <[EMAIL PROTECTED]> writes: > Mas porque não usar a chave? Segurança? Sinceramente, acho que o script com a senha dentro dele eh BEM mais _inseguro_ que o uso das chaves. Caso seja necessario, ele pode inclusive usar passphrase usando o ssh-agent para nao ter que digitar a mesma enquanto mantem a chave segura contra copias e tal. -- O T A V I OS A L V A D O R - E-mail: [EMAIL PROTECTED] UIN: 5906116 GNU/Linux User: 239058 GPG ID: 49A5F855 Home Page: http://otavio.ossystems.com.br - "Microsoft sells you Windows ... Linux gives you the whole house."
[shell-script] Ajuda -Shell Script
Olá pessoal! Td certo? Bom , como tenho pouca experiencia em shell resolvi pedir ajuda aqui pra vocês. Seguinte: Eu uso o Xephem para gerar coordenadas (sol). Tenho também um programa (coordenadas) feito em C++ que, pega o arquivo gerado pelo Xephem e elimina as linhas negativas deste arquivo. Executando o coordenadas seria assim: Entre com o nome do arquivo: file.txt(arquivo do xephem) Nome do arquivo de saida: file1.txt (aquivo sem linhas negativas) Numero de passos: 720 (este numero é fixo) PS: aqui o usuario entra com estas informações A minha duvida é a seguinte: Preciso de um script shell que faça esta rotina pra mim a partir de uma lista de arquivos, ou seja, o programa coordenadas estaria recebendo os passos acima automaticamente atraves de uma lista de arquivos.txt já definida. Como eu faço o shell executar isso pra mim, sem a necessidade de informar arquivo por arquivo, pois eu já tenho uma lista com todos os arquivos? Existe esta possibilidade? Agradeço pela atenção Anderson Souza
[shell-script] Problemas para executar script via crontab!!!
Boa tarde galera, Pasei um bom tempo tentando fazer com que meu script abaixo funcionasse com o crontab, e nao sabia que nao funcionava porque o crontab nao guarda variaveis de ambiente, e adicionei algumas variaveis no meu script. Mais agora o chown nao funciona pq nao aceita o grupo wheel que exite neste ambiente mais nao consigo passar este parametro no script. Alguem pode me ajudar? Script é este: #!/bin/sh export PATH=/bin:/usr/bin:/usr/sbin:/etc ls -l /var/mail/ \ | awk ' $5 > 1024 && $9 == "root" { a[$9] } END{ print "cd /var/mail" for(k in a){ print "rm -rf " k } for(k in a){ print "touch " k print "chmod 600 " k print "chown root:wheel" k } } ' | sh Jefferson Dias aka LoBoGoL
Re: [shell-script] Ajuda -Shell Script
Posta um exemplo de lista de arquivos e como vc faz a chamada ao programa. Vai ficar mais fácil de te ajudar. On 5/3/07, anderson1904 <[EMAIL PROTECTED]> wrote: > > Olá pessoal! Td certo? > Bom , como tenho pouca experiencia em shell resolvi pedir ajuda aqui > pra vocês. > Seguinte: > Eu uso o Xephem para gerar coordenadas (sol). Tenho também um > programa (coordenadas) feito em C++ que, pega o arquivo gerado pelo > Xephem e elimina as linhas negativas deste arquivo. Executando o > coordenadas seria assim: > > Entre com o nome do arquivo: file.txt(arquivo do xephem) > Nome do arquivo de saida: file1.txt (aquivo sem linhas negativas) > Numero de passos: 720 (este numero é fixo) > > PS: aqui o usuario entra com estas informações > > A minha duvida é a seguinte: > > Preciso de um script shell que faça esta rotina pra mim a partir de > uma lista de arquivos, ou seja, o programa coordenadas estaria > recebendo os passos acima automaticamente atraves de uma lista de > arquivos.txt já definida. Como eu faço o shell executar isso pra mim, > sem a necessidade de informar arquivo por arquivo, pois eu já tenho > uma lista com todos os arquivos? Existe esta possibilidade? > > Agradeço pela atenção > > Anderson Souza > > > -- -- O sistema pediu:"Requires Windows 9x, Windows 2000 or better". Então eu instalei Linux. [As partes desta mensagem que não continham texto foram removidas]
Re: [shell-script] Ajuda -Shell Script
Oi Anderson! Sim, existe. Se os arquivos estiverem em um diretório e neste diretório só existam estes arquivos, vc pode fazer um loop assim: for i in `ls nome_do_diretorio` do seus_comandos done Em cada volta do loop a variável i recebe o nome de um arquivo, na ordem da saída do ls. Então vc passaria $i como parâmetro pro programa coordenadas. Este programa coordenadas é interativo ou pode ser rodado com passagem de parâmetros? Se os arquivos tiverem um padrão de nome, vc pode melhorar o ls colocando ls nome_do_diretorio/arquivo* É isso q vc precisa? []s Alexandre anderson1904 <[EMAIL PROTECTED]> escreveu: Olá pessoal! Td certo? Bom , como tenho pouca experiencia em shell resolvi pedir ajuda aqui pra vocês. Seguinte: Eu uso o Xephem para gerar coordenadas (sol). Tenho também um programa (coordenadas) feito em C++ que, pega o arquivo gerado pelo Xephem e elimina as linhas negativas deste arquivo. Executando o coordenadas seria assim: Entre com o nome do arquivo: file.txt(arquivo do xephem) Nome do arquivo de saida: file1.txt (aquivo sem linhas negativas) Numero de passos: 720 (este numero é fixo) PS: aqui o usuario entra com estas informações A minha duvida é a seguinte: Preciso de um script shell que faça esta rotina pra mim a partir de uma lista de arquivos, ou seja, o programa coordenadas estaria recebendo os passos acima automaticamente atraves de uma lista de arquivos.txt já definida. Como eu faço o shell executar isso pra mim, sem a necessidade de informar arquivo por arquivo, pois eu já tenho uma lista com todos os arquivos? Existe esta possibilidade? Agradeço pela atenção Anderson Souza __ 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]
[shell-script] sed
Oi Gente, Tenho vários arquivos (s100.t, s200.t, s300.t) e gostaria de fazer uma pesquisa em todos, procurando pela linha '1' e que estas linhas sejam armazenadas em um arquivo 'teste'. Fiz a seguinte linha de comando: sed -n 1p s*.t >> teste Só que não funciona. Alguém tem alguma sugestão? Obrigado! Emiliano
Re: [shell-script] sed
hey, em seu comando, o sed está agrupando todos arquivos em apenas um. Creio que o `head` pode fazer isso de uma forma mais simples. Tente: $ head -q -n 1 s*.t > teste (com o parâmetro '-q', o `head` não imprime o nome dos arquivos) hasta! jr. On 5/3/07, Emiliano Chemello <[EMAIL PROTECTED]> wrote: > Oi Gente, > > Tenho vários arquivos (s100.t, s200.t, s300.t) e gostaria de fazer uma > pesquisa em todos, procurando pela linha '1' e que estas linhas sejam > armazenadas em um arquivo 'teste'. Fiz a seguinte linha de comando: > > sed -n 1p s*.t >> teste > > > Só que não funciona. Alguém tem alguma sugestão? Obrigado! Emiliano > > > > - > 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 > > >
[shell-script] Capturar tecla ESC
Olá pessoal, tudo bem? Faz tempo que estou na lista, mas esta é a primeira vez que posto uma dúvida. Eu quero capturar a tecla ESC num laço while. Ou seja, quero sair do laço quando eu digitar ESC. O código que estou usando é este: opcao=# inicializa variavel com valor nulo while [ ! "$opcao" = \033 ]; # enquanto opcao diferente de "s" do read -n 1 opcao; case "$opcao" in [cC]) menucliente;; [mM]) menumerc;; [vV]) menuvendas;; *);; # nenhuma das opcoes anteriores esac done Mas ele não está funcionando (não consigo sair do laço). Eu sei que se eu colocar aspas duplas ("\033"), aí é q não dá certo mesmo. Alguém pode me ajudar? PARABÉNS PELA LISTA Atenciosamente, Carlos Alberto Teixeira Magalhães __ 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]
Re: [shell-script] Capturar tecla ESC
Depois de muita criatividade... if [ '^[$' = $(cat -vet <<< "$opcao") ] ; then echo ESC fi -- Reinaldo Carvalho On 5/3/07, Carlos Alberto Teixeira <[EMAIL PROTECTED]> wrote: > Olá pessoal, tudo bem? Faz tempo que estou na lista, mas esta é a primeira > vez que posto uma dúvida. > > Eu quero capturar a tecla ESC num laço while. Ou seja, quero sair do laço > quando eu digitar ESC. O código que estou usando é este: > > opcao=# inicializa variavel com valor nulo > while [ ! "$opcao" = \033 ]; # enquanto opcao diferente de "s" > do > read -n 1 opcao; > case "$opcao" in > [cC]) menucliente;; > [mM]) menumerc;; > [vV]) menuvendas;; > *);; # nenhuma das opcoes anteriores > esac > done > > Mas ele não está funcionando (não consigo sair do laço). Eu sei que se eu > colocar aspas duplas ("\033"), aí é q não dá certo mesmo. Alguém pode me > ajudar? > > PARABÉNS PELA LISTA > > Atenciosamente, > Carlos Alberto Teixeira Magalhães > > __ > 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] > > > > - > 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 > > >