dúvida, shell script (bash)
Oi pessoal. estou com um probleminha em um script que eu fiz. Script--(aaa.sh )-- #!/bin/bash # Script para verificar se 1 até 50 usuários estão logados no sistema # Este script gera um log em /home/fo0x/teste/log_script1 #variáveis users=/home/fo0x/teste/users lixo=/home/fo0x/teste/lixo log=/home/fo0x/teste/log_script1 n=1 x=$ #usuários do sistema echo `cut -f1 -d : /etc/passwd | sort | more` $users #$* while [ $n -le 50 ] do { if cat $users | grep $x$n $lixo 2 $lixo then { if who | grep $x$n $lixo then echo $x$n está logado no sistema echo $x$n está logado no sistema:::`date`:::`whoami` $log else echo $x$n não está logado no sistema echo $x$n não está logado no sistema:::`date`:::`whoami` $log fi } else echo $lixo fi } n=`expr $n + 1` done --fim do script-- bom, isso é script para verificar se usuários (no máx. 50) estão logados no sistema e gravar um log dos users logados ou não, a data e quem executou o script. tipo, isso é uma pesquisa. ex: ./aaa.sh fo0x gabriel paulo roberto ira procurar pelos usuários: fo0x, gabriel, paulo, roberto. Se eles fizerem parte do sistema eles vão ser citados no log, dizendo se estão logados ou não. problema: $x$n quando n=1 : $x$n = $1 quando n=2 : $x$n = $2 e assim por diante, até chegar em 50. porem esse $1, $2, não estão sendo reconhecidos como o parametro 1, parametro 2, ... o $1, $2, , está saindo como caractere e não como o parametro 1, parametro 2, ... no exemplo: parametro 1 = fo0x | parametro 2 = gabriel | (...) so que ao inves do $1 indicar o parametro 1, que é fo0x, ele sai no comando como caractere normal $1, e não como o caractere especial $1, que indica o primeiro parametro. alguem ai pode me ajudar ? vlw, gabriel.
Re: dúvida, shell script (bash)
#!/bin/bash # Script para verificar se 1 até 50 usuários estão logados no sistema # Este script gera um log em /home/fo0x/teste/log_script1 #variáveis users=/home/fo0x/teste/users lixo=/home/fo0x/teste/lixo log=/home/fo0x/teste/log_script1 n=1 x=$ #usuários do sistema echo `cut -f1 -d : /etc/passwd | sort | more` $users #$* while [ $n -le 50 ] do { if cat $users | sed -n -e $n\p $lixo 2 $lixo then { if who | sed -n -e $n\p $lixo then echo $(awk '{print $1}') está logado no sistema echo $(awk '{print $1}') está logado no sistema:::`date`:::`whoami` $log else echo $(awk '{print $1}') não está logado no sistema echo $(awk '{print $1}') não está logado no sistema:::`date`:::`whoami` $log fi } else echo $lixo fi } n=`expr $n + 1` done se nao estou enferrujado, talvez isso ajude On 8/13/07, Gabriel Muricy [EMAIL PROTECTED] wrote: Oi pessoal. estou com um probleminha em um script que eu fiz. Script--(aaa.sh)-- #!/bin/bash # Script para verificar se 1 até 50 usuários estão logados no sistema # Este script gera um log em /home/fo0x/teste/log_script1 #variáveis users=/home/fo0x/teste/users lixo=/home/fo0x/teste/lixo log=/home/fo0x/teste/log_script1 n=1 x=$ #usuários do sistema echo `cut -f1 -d : /etc/passwd | sort | more` $users #$* while [ $n -le 50 ] do { if cat $users | grep $x$n $lixo 2 $lixo then { if who | grep $x$n $lixo then echo $x$n está logado no sistema echo $x$n está logado no sistema:::`date`:::`whoami` $log else echo $x$n não está logado no sistema echo $x$n não está logado no sistema:::`date`:::`whoami` $log fi } else echo $lixo fi } n=`expr $n + 1` done --fim do script-- bom, isso é script para verificar se usuários (no máx. 50) estão logados no sistema e gravar um log dos users logados ou não, a data e quem executou o script. tipo, isso é uma pesquisa. ex: ./aaa.sh fo0x gabriel paulo roberto ira procurar pelos usuários: fo0x, gabriel, paulo, roberto. Se eles fizerem parte do sistema eles vão ser citados no log, dizendo se estão logados ou não. problema: $x$n quando n=1 : $x$n = $1 quando n=2 : $x$n = $2 e assim por diante, até chegar em 50. porem esse $1, $2, não estão sendo reconhecidos como o parametro 1, parametro 2, ... o $1, $2, , está saindo como caractere e não como o parametro 1, parametro 2, ... no exemplo: parametro 1 = fo0x | parametro 2 = gabriel | (...) so que ao inves do $1 indicar o parametro 1, que é fo0x, ele sai no comando como caractere normal $1, e não como o caractere especial $1, que indica o primeiro parametro. alguem ai pode me ajudar ? vlw, gabriel. -- P-p-por hoje é só p-p-pessoal (Gaguinho) []s Mário Felipe Rinaldi Gmail/Gtalk: [EMAIL PROTECTED] MSN: [EMAIL PROTECTED] Site: http://rinaldi-rinaldi.info /* Isto é um comentário e você não pode ve-lo */ [ END OF TRANSMISSION ]
[off-topic] Dúvida shell script: extração de colunas
Olá, Tenho uma saída (cat, por exemplo) com 'n' colunas separadas por espaço, porém quero apenas a coluna 'm' (mn), como extraí-la? E caso as colunas fossem separadas por algum outro caractere 'c'? Grato, -- Douglas Augusto
Re: [off-topic] Dúvida shell script: extração de colunas
On Tue, 22 Jul 2003 13:45:52 -0300 Douglas A. Augusto [EMAIL PROTECTED] wrote: Olá, Tenho uma saída (cat, por exemplo) com 'n' colunas separadas por espaço, porém quero apenas a coluna 'm' (mn), como extraí-la? E caso as colunas fossem separadas por algum outro caractere 'c'? Use o cut. cut -d caracter delimitador -f coluna que quer arquivo []'s Eduardo
Re: [off-topic] Dúvida shell script: extra ção de colunas
Em Tue, 22 Jul 2003 13:45:52 -0300 Douglas A. Augusto [EMAIL PROTECTED] escreveu: Olá, Tenho uma saída (cat, por exemplo) com 'n' colunas separadas por espaço, porém quero apenas a coluna 'm' (mn), como extraí-la? E caso as colunas fossem separadas por algum outro caractere 'c'? Dá uma olhada na man do comando cutt. Pode te ajudar. -- -- Michelle Ribeiro Debian GNU/Linux - Your next Linux distribution http://www.debian.org/ || http://www.spi-inc.org/
Re: [off-topic] Dúvida shell script: extração de colunas
No dia 22/07/2003 às 14:02, Eduardo Goncalves [EMAIL PROTECTED] escreveu: Use o cut. cut -d caracter delimitador -f coluna que quer arquivo Era isso o que estava procurando, obrigado a todos que responderam. -- Douglas Augusto
Re: Dúvida Shell Script
On Wed, 30 Apr 2003 16:23:38 -0300, Rubens Saraiva Nogueira wrote: tag1/tag tagab/tag tagZZ/tag Preciso retornar: 1abZZ man re_syntax -- _ Leandro Guimarães Faria Corsetti Dutra+41 (21) 648 11 34 / \ Lausanne, Vaud, Suisse+41 (78) 778 11 34 \ / Brasil+55 (11) 5686 2219 / \ http://geocities.yahoo.com.br/lgcdutra/
Re: Dúvida Shell Script
Wesley, Felipe e amigos da lista, Obrigado pela atenção dispensada e pelo código com as soluções. O problema é que não sei se vou poder usar C ou PHP por normas do projetos entende? Se tiverem a solução em script shell / bash fico muito grato. Obrigado. Rubens Saraiva - Original Message - From: Wesley Alves de Oliveira/MPGO [EMAIL PROTECTED] To: [EMAIL PROTECTED]; debian-user-portuguese@lists.debian.org Sent: Wednesday, April 30, 2003 5:45 PM Subject: Re: Dúvida Shell Script Existe uma variável externa que você deve setá-la para depois fazer isso, mas em C fica mais fácil tipo: int main(int argc, char *argv[]) { FILE *arquivo; char c, buffer[TAMANHO]; /* Segunda variavel opcional, pois se quizer que apenas mostre na tela não é necessário Estou implementando a função para que você não precise de buffer */ if((arquivo = fopen(path do arquivo,r))==NULL){ puts(Erro ao ler arquivo ou você não tem permissão de leitura...); return(1); } while((c=getc(arquivo))!=EOF){ if(c == 'g'){ /* Observando seu texto aí em baixo, testaremos primeiro a letra g e depois sempre a suasubsequente */ c = getc(arquivo); if(c == ){ /* Agora testamos a subsequente se for, pronto imprima na tela o conteúdo entre elas */ while((c = getc(arquivo)) != '') { printf(%c,c); } } } } fclose(arquivo); return(0); } Se você não tiver dentro das tags do html uma coicidência da letra g e posteriormente a o ele vai imprimir corretamente, quer dizer ainda não testei acho que vai funcionar. Se quizer armazenar no lugar de printf(%c,c) coloca buffer[i] = c; declare uma variável static int i; no inicio do arquivo, e de ntro do corpo do laço while de impressão coloque o seguinte: while((c = getc(arquivo))!=''){ i = 0; buffer[i] = c; i++; } Se o código não lhe interessar ou você preferir em script, hoje a noite eu olho lá em casa e lhe mostro o código em Script Bash como seria, mas só vou lhe postar amanhã pois a internet é mais barata. Pessoal, Como fazer para pegar dados de um arquivo especificando caracteres que vem antes e depois?? Exemplo: Tenho um arquivo texto com: tag1/tag tagab/tag tagZZ/tag Preciso retornar: 1abZZ Ou seja, preciso todos os dados de tag. Obrigado. Rubens -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Dúvida Shell Script
Pessoal, Como fazer para pegar dados de um arquivo especificando caracteres que vem antes e depois?? Exemplo: Tenho um arquivo texto com: tag1/tag tagab/tag tagZZ/tag Preciso retornar: 1abZZ Ou seja, preciso todos os dados de tag. Obrigado. Rubens
Re: Dúvida Shell Script
Existe uma variável externa que você deve setá-la para depois fazer isso, mas em C fica mais fácil tipo: int main(int argc, char *argv[]) { FILE *arquivo; char c, buffer[TAMANHO]; /* Segunda variavel opcional, pois se quizer que apenas mostre na tela não é necessário Estou implementando a função para que você não precise de buffer */ if((arquivo = fopen(path do arquivo,r))==NULL){ puts(Erro ao ler arquivo ou você não tem permissão de leitura...); return(1); } while((c=getc(arquivo))!=EOF){ if(c == 'g'){ /* Observando seu texto aí em baixo, testaremos primeiro a letra g e depois sempre a suasubsequente */ c = getc(arquivo); if(c == ''){ /* Agora testamos a subsequente se for, pronto imprima na tela o conteúdo entre elas */ while((c = getc(arquivo)) != '') { printf(%c,c); } } } } fclose(arquivo); return(0); } Se você não tiver dentro das tags do html uma coicidência da letra g e posteriormente a o ele vai imprimir corretamente, quer dizer ainda não testei acho que vai funcionar. Se quizer armazenar no lugar de printf(%c,c) coloca buffer[i] = c; declare uma variável static int i; no inicio do arquivo, e dentro do corpo do laço while de impressão coloque o seguinte: while((c = getc(arquivo))!=''){ i = 0; buffer[i] = c; i++; } Se o código não lhe interessar ou você preferir em script, hoje a noite eu olho lá em casa e lhe mostro o código em Script Bash como seria, mas só vou lhe postar amanhã pois a internet é mais barata. Pessoal, Como fazer para pegar dados de um arquivo especificando caracteres que vem antes e depois?? Exemplo: Tenho um arquivo texto com: tag1/tag tagab/tag tagZZ/tag Preciso retornar: 1abZZ Ou seja, preciso todos os dados de tag. Obrigado. Rubens -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]
Re: Dúvida Shell Script
Rubens, Fiz um script em php ha algum tempo atraz que faz exatamente isso, pega tudo que esta fora das tags . fiz essa função para utilizar em um script que pegava html do oracle e passava para html normal muito mais limpo abaixo a função // funcao para remover as tags function remove($tag) { if (stristr($tag,style)) return(); $boo = 1; while($boo) { $pos = strpos($tag,); if ($tag[0] == ) { $tag = substr($tag, $pos+1); } else { $boo = 0; } } $pos = strpos($tag,); $tag = substr($tag, 0,$pos); return($tag); } e esse eh o trecho que le o arquivo e chama a funcao linha por linha ? // Variaveis de Configurações // arquivo de origem $filename = juridica2.htm; // Fim das configurações // NÃO mexa nada a partir daqui // funcao q le o arquivo e grava na string $fd = fopen($filename, r); $filestring = fread($fd, filesize($filename)); fclose($fd); // Funcao q cria o array frase com 1 linha por registro $y = 0; $x = strlen($filestring);; for ($i=0;$i$x;$i++) { $frase[$y] .= $filestring[$i]; if ($filestring[$i] == \n) { $y++; } } $t_linhas = $y; $x = 0; $contador = 0; for ($x = 0;$x $t_linhas;$x++) { $tag = $frase[$x]; $tag2 = remove($tag); if ($tag2 == ) { $tag2 = Sem telefone; } if (strlen($tag2) 1) { $ok .= $tag2\n; $texto[$contador] = $tag2; $contador++; } } espero ter ajudado, abraco Felipe Roman ___ Felipe de Fraga Roman ACS / Publicidade ACS / Comunicação On Line Universidade Luterana do Brasil - www.ulbra.br [EMAIL PROTECTED] - Original Message - From: Rubens Saraiva Nogueira [EMAIL PROTECTED] To: debian-user-portuguese@lists.debian.org Sent: Wednesday, April 30, 2003 4:23 PM Subject: Dúvida Shell Script Pessoal, Como fazer para pegar dados de um arquivo especificando caracteres que vem antes e depois?? Exemplo: Tenho um arquivo texto com: tag1/tag tagab/tag tagZZ/tag Preciso retornar: 1abZZ Ou seja, preciso todos os dados de tag. Obrigado. Rubens -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]