dúvida, shell script (bash)

2007-08-13 Por tôpico Gabriel Muricy
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)

2007-08-13 Por tôpico Mario Felipe Rinaldi
#!/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

2003-07-22 Por tôpico Douglas A. Augusto
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

2003-07-22 Por tôpico Eduardo Goncalves
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

2003-07-22 Por tôpico Michelle Ribeiro
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

2003-07-22 Por tôpico Douglas A. Augusto
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

2003-05-01 Por tôpico Leandro Guimarães Faria Corsetti Dutra
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

2003-05-01 Por tôpico Rubens Saraiva
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

2003-04-30 Por tôpico Rubens Saraiva Nogueira
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

2003-04-30 Por tôpico Wesley Alves de Oliveira/MPGO
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

2003-04-30 Por tôpico Felipe de Fraga Roman
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]