Re: smbstatus

2007-03-01 Por tôpico Bruno Schneider

On 2/28/07, Carlos Augusto Beltrame wrote:


entao cara, eu separo os campos pelo espaço em branco, mas o fato de eu ter
pids com qtdade d numerod diferentes, na hora d cortar os campos, qdo o pid
eh menor tenho q cortar determinados campos, qdo o pid eh maior tem q ser
outros campos,  e como os pids sao em 4 ow 5 numeros, fiz dois scripts, um
para cada situação.


Eu continuo não entendendo. Passo para os colegas da lista...

--
Bruno Schneider
http://www.dcc.ufla.br/~bruno/



Re: smbstatus

2007-03-01 Por tôpico henrique
Olá!
Só por curiosidade, COMO vc corta os campos? tem como postar um trecho do seu 
misterioso script ? 
Não sei vc, mas EU usaria sed ou perl para retirar os espaços em branco 
duplicados antes de fazer o tal corte, OU usaria o awk. 

[ ]s, Henry

Em Quinta 01 Março 2007 09:28, Bruno Schneider escreveu:
 On 2/28/07, Carlos Augusto Beltrame wrote:
  entao cara, eu separo os campos pelo espaço em branco, mas o fato de eu
  ter pids com qtdade d numerod diferentes, na hora d cortar os campos, qdo
  o pid eh menor tenho q cortar determinados campos, qdo o pid eh maior tem
  q ser outros campos,  e como os pids sao em 4 ow 5 numeros, fiz dois
  scripts, um para cada situação.

 Eu continuo não entendendo. Passo para os colegas da lista...


___
Yahoo! Mail - Sempre a melhor opção para você!
Experimente já e veja as novidades.
http://br.yahoo.com/mailbeta/tudonovo/




Res: smbstatus

2007-03-01 Por tôpico Carlos Augusto Beltrame
qdo ele executa o smbstatus, vem uma resposta dos processos do samba divididos 
em varias colunas, a primera eh o pid, o segundo o nome da makina, o tercero 
axo q era o nome do usuario logado, no outro campo o ip da makina, fiz o script 
para cortar por espaços em branco essas informaçoes dae kero selecionar apenas 
alguns campos dessa tabela, o nome do usuario ip e makina, mas, vamos ver se 
consigo explicar, quando o pid eh d 4 numeros (2564 por exemplo), tenho q 
recortar os campos 3,5,6 e se  o PID eh com 5 numeros (25764 por exemplo) tenho 
q recortar os campos 2,4,5 dessa tabela d informaçoes, aki vai o script quando 
o pid eh com 4 numeros:

(parametros: $1=filtro_da_busca, $2=usuario_mysql, $3=senha_mysql)

#!/bin/bash
(smbstatus -p) |grep $1 | tr -ssmbstatus2.txt 
linha=$(wc -l smbstatus2.txt | cut -f 1 -d' ')
litemp=$linha
for i in $(seq 1 $litemp)
do
!   nome=$(cut -f 3 -d' ' smbstatus2.txt | uniq -w 1 ) 
!   maq=$(cut -f 5 -d' ' smbstatus2.txt | uniq -w 1 )
!   ip=$(cut -f 6 -d'
 ' smbstatus2.txt | uniq -w 1)
mysql -u $2 -p$3 -D banco -eselect nome from usuarios where id='$nome'  
testmy.txt
tail -n1 testmy.txt  testmy2.txt
mv testmy2.txt testmy.txt
int=$(cut -f 10 testmy.txt)
echo -n $ip $nome $int 
litemp=$(($litemp-1))
tail -n$litemp smbstatus2.txt  tempsmb.txt
mv tempsmb.txt smbstatus2.txt
done 
.''`.   Yours Trully
: :'  :  Carlos Beltrame
`. `'`   Eletrical Engineer
  `- IEEE #80472763
Linux User #442225
UNESP - Câmpus de Ilha Solteira
http://www.ieee.org/unesp-ilha
http://www.ldc.feis.unesp.br


- Mensagem original 
De: henrique [EMAIL PROTECTED]
Para: debian-user-portuguese@lists.debian.org
Enviadas: Quinta-feira, 1 de Março de 2007 10:13:54
Assunto: Re: smbstatus

Olá!
Só por curiosidade, COMO vc corta os campos? tem como postar um trecho do seu 
misterioso script ? 
Não sei vc, mas EU usaria sed ou perl para retirar os espaços em branco 
duplicados antes de fazer o tal corte, OU usaria o awk. 

[ ]s, Henry

Em Quinta 01 Março 2007 09:28, Bruno Schneider escreveu:
 On 2/28/07, Carlos Augusto Beltrame wrote:
  entao cara, eu separo os campos pelo espaço em branco, mas o fato de eu
  ter pids com qtdade d numerod diferentes, na hora d cortar os campos, qdo
  o pid eh menor tenho q cortar determinados campos, qdo o pid eh maior tem
  q ser outros campos,  e como os pids sao em 4 ow 5 numeros, fiz dois
  scripts, um para cada situação.

 Eu continuo não entendendo. Passo para os colegas da lista...


___
Yahoo! Mail - Sempre a melhor opção para você!
Experimente já e veja as novidades.
http://br.yahoo.com/mailbeta/tudonovo/








__
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

Re: Res: smbstatus

2007-03-01 Por tôpico henrique
 (parametros: $1=filtro_da_busca, $2=usuario_mysql, $3=senha_mysql)

deixa eu ver se entendi direito?

 #!/bin/bash
 (smbstatus -p) |grep $1 | tr -ssmbstatus2.txt

pega os processos do smbstatus que casem com $1, e limpa os espaços em 
branco duplicados (tr -s  ) e grava no smbstatus2.txt

 linha=$(wc -l smbstatus2.txt | cut -f 1 -d' ')
/
pega o numero de linhas do arquivo smbstatus2.txt

 litemp=$linha
 for i in $(seq 1 $litemp)
 do
 !   nome=$(cut -f 3 -d' ' smbstatus2.txt | uniq -w 1 )
 !   maq=$(cut -f 5 -d' ' smbstatus2.txt | uniq -w 1 )
 !   ip=$(cut -f 6 -d'  ' smbstatus2.txt | uniq -w 1)

seta nome, máquina e ip com o valor correspondente salvo em smbstatus2.txt 

 mysql -u $2 -p$3 -D banco -eselect nome from usuarios where id='$nome'  
testmy.txt 

busca o nome do usuário dentro da base de dados e salva no arquivo testmy.txt 

 tail -n1 testmy.txt  testmy2.txt 

ué? pode haver mais de um nome? como saber que é o correto? 

 mv testmy2.txt testmy.txt
Limpa o temporario usado para escolher o nome correto

 int=$(cut -f 10 testmy.txt)
Não entendi. Porque precisa cortar o nome do usuario? padronizar a saida?

 echo -n $ip $nome $int 
Mostra a saida com o ip, o nome e o $int, que até agora não sei de onde saiu, 
nem pra que serve. :(

 litemp=$(($litemp-1))
Decrescenta a litemp. Daqui pra frente não entendi mais nada pq estas linhas. 


 tail -n$litemp smbstatus2.txt  tempsmb.txt
 mv tempsmb.txt smbstatus2.txt
 done



mas algumas sugestões - (aka 2 cents) :
1 - eu vi que vc deu um uniq -w 1. Eu usaria um sort encadeado ANTES do 
uniq. (ainda não consegui entender pra que necessidade real funciona o 
script)

2 - eu não usaria e abusaria do cut como vc usou/abusou. Eu usaria o awk. algo 
como 
code
echo maria joao cristina | awk '{ print $3}' 
/code
retornaria cristina, independente de haver ou não 200 espaços e tabulações 
entre joao e cristina.

3 - achei interessante o tr -s  , nunca havia pensado nesse uso para o tr. 
Mas simplesmente devido ao item (2), dificilmente tenho esses problemas com 
espaços... Mas em caso de desespero, uso o sed s/\s+/ /g  ou o 
perl -pe s/\s+/ /g ... 

4 - vi que você abusa de resultados salvos em arquivos com nomes 
pre-definidos. Ou você começa a randomizar os nomes dos seus arquivos 
temporarios - como por exemplo explorando o uso de $$ no nome do arquivo (o 
$$ pega o pid do processo que o script está rodando) ou reza para que nenhum 
usuário engraçadinho linke por exemplo o  /etc/passwd em algum  tempsmb.txt 
perdido pelo caminho...  Ou ainda, comece a salvar os resultados em variáveis 
apenas. Fica bonito, eu garanto!!! rs

5 - o meu smbstatus -p retorna um monte de mensagens subliminares das minhas 
seções do smb.conf. Eu experimentei (smbstatus -p) 21 e ficou bem limpa a 
saida. 

6 - Já experimentou fazer em perl ? ficaria mais legal... mas tbm não sei pra 
que queres isso...

[ ]s, Henry


 .''`.   Yours Trully

 : :'  :  Carlos Beltrame

 `. `'`   Eletrical Engineer
   `- IEEE #80472763
 Linux User #442225
 UNESP - Câmpus de Ilha Solteira
 http://www.ieee.org/unesp-ilha
 http://www.ldc.feis.unesp.br


___
Yahoo! Mail - Sempre a melhor opção para você!
Experimente já e veja as novidades.
http://br.yahoo.com/mailbeta/tudonovo/



Re: Res: Res: smbstatus

2007-03-01 Por tôpico henrique
bem, quando eu era estagiário eu tbm era um bárbaro em shell. Só
fazia barbaridades. :D :D :D 
Veja se esse codigo um pouco mais elaborado e que não salva nada em
arquivos temporários te ajuda. Caso sim, diga pro seu chefe que fez
apos uma imensa pesquisa em alfarrábios de shell, e depois, me mande um
vale-pizza-hut. 
:D :D :D 


smbstatus -p 21 | grep $1 |  while read linha
do
pid=`echo ${linha} | awk '{ print $1}'`
usuario=`echo ${linha} | awk '{ print  $2}'`
grupo=`echo ${linha} | awk '{ print $3}'`
maquina=`echo ${linha} | awk '{print $4}' | sed s/)//g;s/(//g`
resultado_nome=`mysql -u $2 -p $3 -D banco -r  -e select nome from
usuarios where id='$usuario' --column-names=FALSE | perl -pe  
s/^\+\-\-\-+\+//g; s/^\|\s+(\w)/\$1/g;s/\s+\|//g;`

echo o usuário $usuario, de nome $resultado_nome está  acessando a
partir de $maquina 

done




--- Carlos Augusto Beltrame [EMAIL PROTECTED] escreveu:

  (parametros: $1=filtro_da_busca, $2=usuario_mysql, $3=senha_mysql)
 deixa eu ver se entendi direito?
 
  #!/bin/bash
  (smbstatus -p) |grep $1 | tr -ssmbstatus2.txt
 pega os processos do smbstatus que casem com $1, e limpa os
 espaços em 
 branco duplicados (tr -s  ) e grava no smbstatus2.txt
 sim
 
  linha=$(wc -l smbstatus2.txt | cut -f 1 -d' ')
 pega o numero de linhas do arquivo smbstatus2.txt
 sim
 
  litemp=$linha
  for i in $(seq 1 $litemp)
  do
  !   nome=$(cut -f 3 -d' ' smbstatus2.txt | uniq -w 1 )
  !   maq=$(cut -f 5 -d' ' smbstatus2.txt | uniq -w 1 )
  !   ip=$(cut -f 6 -d'  ' smbstatus2.txt | uniq -w 1)
 seta nome, máquina e ip com o valor correspondente salvo em
 smbstatus2.txt 
 sim, como meu filtro passado em $1 soh passa os usuarios logados no
 samba, outros resultados indesejados nao serao salvos no arkivo, dae
 como sei q ele salva uma pekena tabelinha no formato q falei no email
 anterior vou recortando os campos da tabela onde estao o nome, ip,
 makina etc
 
  mysql -u $2 -p$3 -D banco -eselect nome from usuarios where
 id='$nome'  
 testmy.txt 
 busca o nome do usuário dentro da base de dados e salva no arquivo
 testmy.txt 
 sim
 
  tail -n1 testmy.txt  testmy2.txt 
 ué? pode haver mais de um nome? como saber que é o correto? 
 como assim? aki eu to mostrando a ultima linha do arkivo com a
 peskiza realizada em outro arkivo, como a peskkiza do mysql retorna
 algo do tipo:
 ++
 +nome  +
 ++
Fulano
Fulano2
Fulano3
 
 e eu pedi a busca soh para akele nome , sei q eh o nome correto por
 isso soh um resultado, porem o cabeçalho tb eh salvo e soh pego a
 ultima linha que sera soh o nome dae kero salvar essa informacao no
 mesmo arkivo por isso o mv abaixo
 
  mv testmy2.txt testmy.txt
 Limpa o temporario usado para escolher o nome correto
 
  int=$(cut -f 10 testmy.txt)
 Não entendi. Porque precisa cortar o nome do usuario? padronizar a
 saida?
 na verdade keria colokar o nome do cara salvo no arkivo em uma
 variavel dentro do programinha dae fiz ele cortar o q tinha dentro do
 arkivo ate o campo numero 10 (bom, axo q foi isso q faz - nao sou o
 mestre do shell)
 
  echo -n $ip $nome $int 
 Mostra a saida com o ip, o nome e o $int, que até agora não sei de
 onde saiu, 
 nem pra que serve. :(
 heheheh eh q como eu estava mandando essa mensagen na lista nao kis
 dizer a finalidade dele por segurança, estagio num laboratorio da
 minha facul, dae temos um server com cadastro de usuarios no samba e
 no mysql, dae pra controle disso td montei um pekeno portal em php
 pra monitorar e administrar o laboratorio, dae numa area do site ele
 executaria esse script pra mostrar o aluno logado na makina nakela
 hora, e fui peskizando por conta como fazer isso, nao sou um expert
 em comandos linux mas me viro, mas sou um mestre na gambiarra, pelo q
 percebi hehehe, $int seria o nome do cara e $nome eh o login dele,
 confesso uma pekena confusao no nome das variaveis, enfim, espero ter
 sido um poko explicito na finalidade do problema, escrever tb eh um
 problema para mim
 
 
  litemp=$(($litemp-1))
 Decrescenta a litemp. Daqui pra frente não entendi mais nada pq
 estas linhas. 
 decremento o numero de linhas q tinha no arkivo onde salvei o
 resultado gerado pelo smbstatus para analisar outra linha, dae salvo
 em outro arkivo a saida do comando tail sem akele nome q ja analisei.
 peskizo o nome dele na lista retiro a linha com o nome dele e salvo d
 volta no mesmo arkivo
 
 
  tail -n$litemp smbstatus2.txt  tempsmb.txt
  mv tempsmb.txt smbstatus2.txt
  done
 
 
 
 mas algumas sugestões - (aka 2 cents) :
 1 - eu vi que vc deu um uniq -w 1. Eu usaria um sort encadeado
 ANTES do 
 uniq. (ainda não consegui entender pra que necessidade real funciona
 o 
 script)
 
 eu usei o uniq por dica d uma pessoa, faz um tempo q escrevi isso e
 nao me lembro pq colokei isso hehehehe fika dificil assim neh?
 
 
 2 - eu não usaria e abusaria do cut como vc usou/abusou. Eu usaria o
 awk. algo 
 como 
 code
 echo maria joao cristina | awk '{ print $3}'
 
 /code

Re: smbstatus

2007-02-28 Por tôpico Bruno Schneider

On 2/26/07, Carlos Augusto Beltrame wrote:


ola pessoal, alguem aqui ja tentou fazer scripts usando a saida do
smbstatus? qdo ele mostra as maquinas e ususarios logados na minha rede, a
primeira coluna dessa tabela de usuarios eh o PID desse processo, mas
acontece q as vezes esse PID tem 4 numeros as vezes 5 e meu script teve que
ser ajustado em dois, veja abaixo o meu script, nas linhas destacadas com
exclamaçao eh onde eu corto os campos e tem q ser ajustado.
(parametros: $1=filtro_da_busca, $2=usuario_mysql, $3=senha_mysql)


Não entendi direito: Se você separa os campos pelo espaço em branco,
qual é o problema de alguns PIDs terem 4 enquanto outros têm 5
dígitos?

E o que você quis dizer com meu script teve que ser ajustado em dois?

--
Bruno Schneider
http://www.dcc.ufla.br/~bruno/



Res: smbstatus

2007-02-28 Por tôpico Carlos Augusto Beltrame
entao cara, eu separo os campos pelo espaço em branco, mas o fato de eu ter 
pids com qtdade d numerod diferentes, na hora d cortar os campos, qdo o pid eh 
menor tenho q cortar determinados campos, qdo o pid eh maior tem q ser outros 
campos,  e como os pids sao em 4 ow 5 numeros, fiz dois scripts, um para cada 
situação.
 
.''`.   Yours Trully
: :'  :  Carlos Beltrame
`. `'`   Eletrical Engineer
  `- IEEE #80472763
Linux User #442225
UNESP - Câmpus de Ilha Solteira
http://www.ieee.org/unesp-ilha
http://www.ldc.feis.unesp.br


- Mensagem original 
De: Bruno Schneider [EMAIL PROTECTED]
Para: Lista Debian debian-user-portuguese@lists.debian.org
Enviadas: Quarta-feira, 28 de Fevereiro de 2007 9:16:44
Assunto: Re: smbstatus

On 2/26/07, Carlos Augusto Beltrame wrote:

 ola pessoal, alguem aqui ja tentou fazer scripts usando a saida do
 smbstatus? qdo ele mostra as maquinas e ususarios logados na minha rede, a
 primeira coluna dessa tabela de usuarios eh o PID desse processo, mas
 acontece q as vezes esse PID tem 4 numeros as vezes 5 e meu script teve que
 ser ajustado em dois, veja abaixo o meu script, nas linhas destacadas com
 exclamaçao eh onde eu corto os campos e tem q ser ajustado.
 (parametros: $1=filtro_da_busca, $2=usuario_mysql, $3=senha_mysql)

Não entendi direito: Se você separa os campos pelo espaço em branco,
qual é o problema de alguns PIDs terem 4 enquanto outros têm 5
dígitos?

E o que você quis dizer com meu script teve que ser ajustado em dois?

-- 
Bruno Schneider
http://www.dcc.ufla.br/~bruno/







__
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

smbstatus

2007-02-26 Por tôpico Carlos Augusto Beltrame
ola pessoal, alguem aqui ja tentou fazer scripts usando a saida do smbstatus? 
qdo ele mostra as maquinas e ususarios logados na minha rede, a primeira coluna 
dessa tabela de usuarios eh o PID desse processo, mas acontece q as vezes 
esse PID tem 4 numeros as vezes 5 e meu script teve que ser ajustado em dois, 
veja abaixo o meu script, nas linhas destacadas com exclamaçao eh onde eu 
corto os campos e tem q ser ajustado.
(parametros: $1=filtro_da_busca, $2=usuario_mysql, $3=senha_mysql)

#!/bin/bash
(smbstatus -p) |grep $1 | tr -ssmbstatus2.txt 
linha=$(wc -l smbstatus2.txt | cut -f 1 -d' ')
litemp=$linha
for i in $(seq 1 $litemp)
do
!   nome=$(cut -f 3 -d' ' smbstatus2.txt | uniq -w 1 ) 
!   maq=$(cut -f 5 -d' ' smbstatus2.txt | uniq -w 1 )
!   ip=$(cut -f 6 -d' ' smbstatus2.txt | uniq -w 1)
mysql -u $2 -p$3 -D banco -eselect nome from usuarios where id='$nome'  
testmy.txt
tail -n1 testmy.txt  testmy2.txt
mv testmy2.txt testmy.txt
int=$(cut -f 10 testmy.txt)
echo -n $ip $nome $int 
litemp=$(($litemp-1))
tail -n$litemp smbstatus2.txt  tempsmb.txt
mv tempsmb.txt smbstatus2.txt
done

 
.''`.   Yours Trully
: :'  :  Carlos Beltrame
`. `'`   Eletrical Engineer
  `- IEEE #80472763
Linux User #442225
UNESP - Câmpus de Ilha Solteira
http://www.ieee.org/unesp-ilha
http://www.ldc.feis.unesp.br


__
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/