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 ]
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: [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 "" -f "" arquivo Era isso o que estava procurando, obrigado a todos que responderam. -- Douglas Augusto
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' (m 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
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' (m separadas por algum outro caractere 'c'? Use o cut. cut -d "" -f "" arquivo []'s Eduardo
[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' (m
Re: Dúvida Shell Script
On Wed, 30 Apr 2003 16:23:38 -0300, Rubens Saraiva Nogueira wrote: > 1 > ab > ZZ > > 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]>; 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: 1 ab ZZ 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]
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,"
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: 1 ab ZZ 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]
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: 1 ab ZZ Preciso retornar: 1abZZ Ou seja, preciso todos os dados de "tag". Obrigado. Rubens