MAL - Memória Auxiliar do Lutieri

terça-feira, janeiro 29, 2008

Reinicar o catálogo do Bacula e zerar a fita

Isso eu nunca lembro e ainda perco tempo procurando na documentação do Bacula. Por sinal está aqui:

http://www.bacula.org/en/rel-manual/Contents.html

Re-initializing the Catalog Database

After you have done some initial testing with Bacula, you will probably want to re-initialize the catalog database and throw away all the test Jobs that you ran. To do so, you can do the following:

  cd <install-directory>/src/cats/
./drop_mysql_tables
./make_mysql_tables

Please note that all information in the database will be lost and you will be starting from scratch. If you have written on any Volumes, you must write an end of file mark on the volume so that Bacula can reuse it. Do so with:

(stop Bacula or unmount the drive)
mt -f /dev/nst0 rewind
mt -f /dev/nst0 weof

Where you should replace /dev/nst0 with the appropriate tape drive device name for your machine.





Outra coisa:

Diretivas de tempo podem ser especificadas assim:
1 week 2 days 3 hours 10 mins
1 month 2 days 30 sec

Fonte:
Aqui

Marcadores:

domingo, janeiro 27, 2008

Gnome apresenta risco de segurança ao tentar abrir arquivos mp3

The filename "example.jpg" indicates that this file is of type "JPEG image". The contents of the file indicate that the file is of type "plain text document". If you open this file, the file might present a security risk to your system.

Do not open the file unless you created the file yourself, or received the file from a trusted source. To open the file, rename the file to the correct extension for "plain text document", then open the file normally. Alternatively, use the Open With menu to choose a specific application for the file.

Esse foi o erro que eu passei dias vendo. Até que resolvi buscar uma solução. Só que o meu problema era quando eu tentava abrir arquivos mp3 pelo nautilus.

1. Put this in the file "~/.local/share/mime/packages/custom.xml"



MP3 bild





2. Ran 'update-mime-database ~/.local/share/mime'

dica retirada daqui.

Marcadores:

Failed to open file a%20b.rmvb [mplayer]

Atualizei o sistema esses dias e eis que me deparo com essa mensagem quando tento abrir algum tipo de arquivo que abre com o mplayer que contém espaço no nome.

Bom a solução foi simples. Encontrei aqui. Eu particularmente não gosto muito do Ubuntu mas um bem eu tenho que admitir que fez. A quantidade de usuários de linux subiu abruptamente junto com isso as dúvidas e conseqüentes soluções nos fóruns de discussão. Por isso mais do que nunca quando se tratar de alguma dúvida relativa a softwares pra desktop é bem possível que encontre a resposta em um fórum de Ubuntu :-)

# vi /usr/share/applications/mplayer.desktop


trocar a linha:

Exec=gmplayer %U

por

Exec=gmplayer %F

Marcadores: ,

domingo, janeiro 20, 2008

Finding Open Files with lsof Command

When a file is in use by a process, it is possible to delete the file - OR at least it may appear that is the case. The filename is no longer visible via the ls command, but it is there until the process using it exits.

For example, let's say Sysadmin1 runs a sniffer process in the background to capture and save packets to a file. The capture file starts growing bigger over time. Instead of killing the process, he/she simply deletes the capture file, thinking this will recover the disk space. It doesn't. Believing everything is well, Sysadmin1 goes home.

Now Sysadmin2 shows up and notices the box is running out of disk space. Naturally, the admin wants to figure out what’s rapidly consuming disk space. The easiest way for the SysAd to locate the growing file is to use the lsof command.

Another instance the lsof would be helpful is when a filesystem refuses to unmount due to open files.

Here are a few practical examples of using the lsof command.

To list all the open files on the var filesystem:
# lsof +D /var

To list all open files in your current directory only:
# lsof +d .

To list all open Internet files:
# lsof -i

To list all files currently open by user joe:
# lsof -u joe

To list all files open by syslog-ng (this is a great quick way to find
logs!):
# lsof -c syslog-ng

To list all files open by pid:
# lsof -p PID

Note: There are additional parameters you can add to the command to narrow the listing to include or exclude types of files and much more!

# lsof -help



Copiado descaradamente daqui:
http://esofthub.blogspot.com/2008/01/finding-open-files-with-lsof-command.html

Marcadores:

quinta-feira, janeiro 17, 2008

DIRF e outros programas da RF não imprimem

lpr: Error - stdin is empty, so no job has been sent.

Era essa a única mensagem que eu tinha nos meus logs. Horas de debug, google, testes, POG's pra chegar a conclusão de que a solução seria apenas um caracter. UM CARACTER.

Tenho o samba instalado sem suporte a cups. Pois bem, tenho que especificar vários parâmetros no smb.conf que nao seriam necessários caso esse suporte estivesse ativo. Juro que um dia eu recompilo ele :-)

Bom, a opção "print command" do samba ja me causou dor de cabeca uma vez. Meus relatórios de impressão saiam sem o título do documento. E uma vez que eu usava o pykota esse dado era realmente necessário. Depois de ter debugado em nível 6 o samba descobri como consertar para que aparecesse o título.

Hoje me ligaram avisando que um programa da Receita da Fazendo(feito em Delphi provavelmente) não estava imprimindo. Simplesmente não aparecia o job na fila da impressora.

Mesmo em nível de log 1 encontrei a mensagem a qual me referi no inicio do post. Mas, debugando em nível 6 encontrei a seguinte linha:

Running the command `lpr -l -P'IMPRESSORA' -T'' smbprn.00000357.3LaO0c; rm smbprn.00000357.3LaO0c' gave 0


E acima dessa linha a mensagem que inicia o post. Prestem atenção que o parâmetro que vai o título do documento esta vazio.(-T''). Rodei esse mesmo comando a partir do shell e vi que o lpr ficava esperando entrada de dados. Algo estava estranho. Rodei o mesmo comando dessa forma:

cd /var/spool/samba
lpr -l -P'IMPRESSORA' -T'lalalala' smbprn.00000357.3LaO0c


Não e que funcionou?!!? Pena que estou postando agora(19:37) e comecei as 9 da manhã a investigar esse problema.

Logo, o tal software da RF não envia o título do documento, logo o lpr ficava esperando dados do stdin, logo não haviam dados no stdin, logo aparecia a mensagem do inicio do post.

Solução:

Adicionar um espaço, ponto, qualquer caracter ao "print command" no smb.conf.

Versão problemática:
print command = lpr -l -P'%p' -T'%J' %s; rm %s


Versão corrigida e funcional:
print command = lpr -l -P'%p' -T'%J ' %s; rm %s

A diferenca é sutil. Um espaco depois da variável %J.

Aliás, estava pensando agora, quando se tem o samba com suporte a CUPS tem alguns parâmentros com os quais não precisamos nos preocupar. E se eu não me engano ele trata essa questão do título estar vazio. Não tenho certeza agora, mas quando eu recompilar eu vou saber dizer.

Bom, mas a nossa história de hoje não termina por aqui. Depois que comecou a imprimir surgiu um novo problema. Existia uma imagem como marca d'água, plano de fundo, seja lá o que for. Só sei que ela devia ficar atrás do texto. Meio óbvio. Mas não era isso que estava acontecendo. Ela tapava o texto. Estava sobreposta ao texto.

Passei tanto tempo tentando achar a solução que acho que aprendi a programar em PostScript(PS). :-)

Mudei tanta coisa e nada resolvia. Logo lembrei que PS e uma linguagem que já tem uma certa idade. E acho que li em algum lugar que PCL veio pra mudar as coisas e blah blah. Pois bem, não sei porque cargas d'água eu usava um driver PS no servidor pra essa impressora. Resolvi trocar por um PCL, depois de concluir que o driver era o culpado. E, de novo, não é que funcionou?!?! :-D

Agora estou usando um driver da HP PCL 6. Aliás a impressora, se e que interessa, era uma HP LaserJet 2820.

Chega... tenho que ir pra casa :-D

Marcadores:

Testar o PostScript de uma impressora

Achei legal e util essa dica. Vou colar o conteudo da pagina aqui pois temo que um dia eu vou precisar e o conteudo nao vai mais estar disponivel no site atual.

Printserving in FreeBSD is a complicated topic. There are many different software interfaces to printers, as well as a wide variety of printer hardware interfaces. This chapter covers the basics of setting up a print queue, using Samba to print, and administering print queues and connections.

Checking PostScript Printer Capabilities

Following is a PostScript command file that can be used to get a PostScript printer to output a number of useful pieces of information that are needed to set up a Printer icon under Windows properly. It was printed from Wordpad in Win95 through the Generic/Text Only printer driver with the following instructions.

  1. Start, Run, type in Wordpad and press Enter.

  2. File, Open testps.txt.

  3. File, Page Setup, Printer, select Generic /Text Only, click Properties.

  4. Click Device Options, select TTY custom, click OK.

  5. Click OK, then set all four margins to 0; click OK.

  6. Click File, Print, OK.

This file could also have been printed with /usr/bin/lpr on a UNIX command prompt. The file prints Test Page and some printer statistics below that, as follows.

cat /home/testps.txt | lpr -oraw -P'IMPRESORA' -T'test'


% filename: testps.txt
% purpose: to verify proper host connection and function of PostScript
% printers.
/buf 10 string def
/CM {
save statusdict/product get (PostScript) anchorsearch
exch pop {length 0 eq
{1}{2}ifelse
}
{2}ifelse exch restore
}bind def
/isCM {
CM 1 ge
}bind def
/Times-BoldItalic findfont 75 scalefont setfont
150 500 moveto
(Test Page) false charpath
isCM{gsave 0.0 1.0 1.0 0.0 setcmykcolor fill grestore}if
2 setlinewidth stroke
/Times-Roman findfont 10 scalefont setfont
150 400 moveto
(Your PostScript printer is properly connected and operational.)show
150 380 moveto
(The border around the page indicates your printer's printable
region.)show
{ vmreclaim } stopped pop
vmstatus exch sub exch pop
150 360 moveto
(Max Available Printer Virtual Memory (KB):)show
150 340 moveto
dup 1024 div truncate buf cvs show
150 320 moveto
(Calculated memory size used for PostScript printer icon properties:)show
150 300 moveto
0.85 mul 1024 div truncate buf cvs show
150 280 moveto
(Printer Model: )show
statusdict begin product show end
150 260 moveto
(PostScript Level: )show
/languagelevel where
{ languagelevel 3 string cvs show pop }
{(1) show } ifelse
150 240 moveto
(PostScript Version: )show
statusdict begin
version show (.)show
revision 40 string cvs show end
clippath stroke
showpage

Marcadores:

terça-feira, janeiro 15, 2008

PS

ps aux -ww

o -ww exibe toda a coluna COMMAND. Não corta de acordo com o tamanho da tela. As vezes, temos comandos grandes, com vários parâmetros, como no exemplo abaixo, e caso essa opção não seja utilizada o PS ajusta a saída de acordo com o tamanho da tela.



# ps -u -p 38751
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 38751 0.0 0.0 3636 1104 ?? Ss 19Dec07 0:12.22 /usr/sbin/syslogd -l /var/run/log -l /var/chroot/named/var/run

# ps -u -p 38751 -ww
root 38751 0.0 0.0 3636 1104 ?? Ss 19Dec07 0:12.22 /usr/sbin/syslogd -l /var/run/log -l /var/chroot/named/var/run/log -4 -b 172.16.0.1

Marcadores:

mysql_fetch_array duas vezes

Ben
06-Apr-2004 11:59
One of the most common mistakes that people make with this function, when using it multiple times in one script, is that they forget to use the mysql_data_seek() function to reset the internal data pointer.

When iterating through an array of MySQL results, e.g.

<?
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
foreach (
$line as $col_value)
{
echo
$col_value . ' ';
}
}
?>

the internal data pointer for the array is advanced, incrementally, until there are no more elements left in the array. So, basically, if you copy/pasted the above code into a script TWICE, the second copy would not create any output. The reason is because the data pointer has been advanced to the end of the $line array and returned FALSE upon doing so.

If, for some reason, you wanted to interate through the array a second time, perhaps grabbing a different piece of data from the same result set, you would have to make sure you call

<?
mysql_data_seek
($result, 0);
?
>

This function resets the pointer and you can re-iterate through the $line array, again!


Dica retirada daqui:

Marcadores: , ,

teste


<pre class="terminal unix">
<samp class="prompt shell">$ </samp><kbd class="shell">echo Hello, world!</kbd>
<samp>Hello, world!</samp>
<samp class="prompt shell">$ </samp><kbd class="shell">date</kbd>
<samp><var>samedi 25 août 2007, 18:51:00 (UTC+0200)</var></samp>
</pre>


$ echo Hello, world!
Hello, world!
$ date
samedi 25 août 2007, 18:51:00 (UTC+0200)

pre.terminal { margin-left: 1pt; padding: 5pt; }

/* Text not embedded in samp or kbd will be in red, to easily detect errors */
pre.terminal { background: #000; color: #f00; }
pre.terminal samp.prompt { color: #888; }
pre.terminal samp { color: #eee; }
pre.terminal kbd { color: #fff; font-weight: bold; }
pre.terminal var { color: #55f; font-style: italic; }


http://o.mengue.free.fr/blog/2007/08/25/39-syntax-highlighting-on-this-blog-using-semantic-tags-and-vim

"Command not found" para scripts no FreeBSD

# vi /usr/local/sbin/syncsquid

!/bin/sh
/usr/local/bin/rsync -avx --delete serverA::squid/ /usr/local/etc/squid/confs/

:x

# chmod 755 /usr/local/sbin/syncsquid

# syncsquid
syncsquid: Command not found.

# whereis syncsquid
syncsquid: /usr/local/sbin/syncsquid

# rehash

# syncsquid
receiving file list ... done

sent 73 bytes received 424 bytes 142.00 bytes/sec
total size is 103885 speedup is 209.02

# echo ":-D"
:-D

Marcadores: ,

segunda-feira, janeiro 14, 2008

ifconfig, ip, route e suas respectivas sintaxes

Rotas para um host:
route add -host 172.16.0.5 gw 172.16.0.1
route add -net 172.16.0.5 netmask 255.255.255.255 gw 172.16.0.1
ip route add 172.16.0.5/32 via 172.16.0.1
ip r a 172.16.0.5/32 via 172.16.0.1

Rotas para uma rede:

route add -net 172.16.0.0 netmask 255.255.0.0 gw 172.16.0.1
ip route add 172.16.0.0/16 gw 172.16.0.1
ip r a 172.16.0.0/16 gw 172.16.0.1

Rotas padrões:
route add default gw 172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
ip route add default via 172.16.0.1
ip r a default via 172.16.0.1

Ver as rotas:
route -n
netstat -rn
more /proc/net/route

Endereço IP:
ifconfig eth0 172.16.4.206 netmask 255.255.240.0
ip address add 172.16.4.206/20 dev eth0
ip a a 172.16.4.206/20 dev eth0

Link:
ifconfig eth0 up
ip link set up dev eth0
ip l s up dev eth0

Obs: Se o comando ip a a for executado mais de uma vez ele adiciona os IP's a interface. Já o comando ifconfig substitui o endereço IP da interface. Para adicionar mais de um endereço IP na mesma interface usando o comando ifconfig deve-se criar aliases como eth0:1

Se você leu tudo ali em cima e está se perguntando: "porquê esse ser humano escreve essas coisas lógicas?". Eu respondo: "Sempre esqueço a sintaxe desses simples comandos. E como o título do blog sugere: essa é minha memória auxiliar. Quem sabe em breve a principal =p"

Link para mais informações sobre o iproute2

Marcadores: ,

Mysql 5: Bind on unix socket: Permission denied

Tem alguns momentos da vida que eu acho que o cara não consegue raciocinar direito. Se bem que voltei de férias hoje pela manhã depois de quase 30 dias longe dos meus queridos servidores. Tomara que esse seja o motivo pra mim achar a solução, pra essa mensagem de erro do título, depois de uma hora e tanto.

Fui colocar algumas coisas em dia. Isso inclui um server novo que tinha que ter mysql. Pois bem, eis que quando tento iniciar o server mysql tenho isso:

/usr/local/etc/rc.d/mysql-server start ; tail -f /var/db/mysql/host.xyz.com.br.err


080114 10:28:56 mysqld started
080114 10:28:56 InnoDB: Started; log sequence number 0 43655
080114 10:28:56 [ERROR] Can't start server : Bind on unix socket: Permission denied
080114 10:28:56 [ERROR] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
080114 10:28:56 [ERROR] Aborting

080114 10:28:56 InnoDB: Starting shutdown...
080114 10:28:58 InnoDB: Shutdown completed; log sequence number 0 43655
080114 10:28:58 [Note] /usr/local/libexec/mysqld: Shutdown complete

080114 10:28:58 mysqld ended

Olhando agora é a coisa mais simples do mundo. Mas sei lá porque cargas d'água eu não me dei conta da solução antes e fui pelo caminho mais difícil.

Primeiro recompilei o mysql com a opção --with-debug. Agora quando rodo:


# /usr/local/libexec/mysqld --help


Me retorna:

/usr/local/libexec/mysqld Ver 5.0.51-debug for portbld-freebsd6.2 on amd64 (FreeBSD port: mysql-server-5.0.51)


O que significa que posso rodar o seguinte comando para debugar o servidor mysql:

/usr/local/libexec/mysqld --debug --user=mysql


Que vai criar um arquivo /tmp/mysqld.trace contendo o debug da inicialização do servidor. Se bem que não encontrei nada de muito interessante dentro dele.

Foi aí então que resolvi pensar um pouquinho só antes de seguir fazendo coisas. Pensei cá com os meus botõezinhos: "Parece não ter permissão pra criar o socket. Porém é no diretório /tmp".
Acho que por ser nesse diretório que eu descartei qualquer possibilidade de permissão e segui por outro caminho. Mas como eu já tinha chegado no fim desse caminho e não havia encontrado nada, resolvi voltar ao início.

As permissões do /tmp estavam assim:


drwxr-xr-x 7 root wheel 512 Jan 14 11:12 tmp


Estranho. Mas.. mudei pra ficar assim:

chmod 777 /tmp/

Mais informações sobre debug no Mysql. Aqui.
tcharã!! Pronto. Da próxima vez eu verifico o lógico primeiro.

Marcadores: ,



Chat with Lutieri G. B.

Subscribe in a reader