Re: smbstatus
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
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
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
(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
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
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
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
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/