[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Res: Res: smbstatus



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 2>&1 | 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 <zebacking@yahoo.com.br> 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 -s " " > smbstatus2.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 -e"select 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>
> >retornaria "cristina", independente de haver ou não 200 espaços e
> tabulações 
> >entre joao e cristina.
> 
> nao usei pq nao sei usar o awk e acabei vendo q nem o cut eu sei usar
> tb hehehe
> 
> >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" ... 
> 
> nao sei usar o sed tb, qdo fui tentar aprender a mesma pessoa q me
> falow do comando uniq falow q era muito dificil q era melhor usar o
> cut
> 
> >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
> 
> essa d linkar nao acontece, ninguem tem acesso ao servidor, poucas
> pessoas tem acesso à pagina tb
> 
> >5 - o meu smbstatus -p retorna um monte de mensagens "subliminares"
> das minhas 
> >seções do smb.conf. Eu experimentei (smbstatus -p) 2>&1 e ficou bem
> limpa a 
> >saida. 
> 
> sim, o meu resultado tb saiu com muita coisa por isso fiz akela limpa
> com o filtro passado como parametro
> 
> >6 - Já experimentou fazer em perl ? ficaria mais legal... mas tbm
> não sei pra 
> >que queres isso...
> 
> nao manjo nada d perl, ta dificil ate em shell.... espero ter ajudado
> vc na tentativa d me ajudar, se mesmo assim ainda esta dificil
> entender pode dexar, keria essa ajudar soh pra estilizar mesmo hehehe
> d qualquer forma obrigado pelo tempo gasto em me ajudar, valeu cara.
> 
> [ ]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
> 
> 

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



Reply to: