Uzibim scripting

weblog sobre script, programação e afins

março 16th, 2011

Verificar se arquivo é um link simbólico (Lazarus/FPC Linux)

No Comments, GNU/Linux, Lazarus/FPC, by Jauber.

Neste post resolvi colocar um modo de verificar se um arquivo é um link simbólico, usando a linguagem de programação Lazarus/FPC. Como todo mundo usei o flag faSymLink desta linguagem e na versão atual não gerou o resultado esperado, ou seja,  confirmar que um arquivo é um link simbólico.

Então usei a função fpLStat juntamente com o flag fpS_ISLNK, como mostra os próprios tutoriais destes.

Então a função fica assim:

As funções usam as units BaseUnix e Unix. A função fpLStat carrega as informações para o info, e a função fpS_ISLNK verifica se o modo bate com o da função.

Para utilizar a função faça:

if isLink(‘/pasta/subpasta/arquivo_a_ver’)   then

writeln (‘É um link simbólico’);

Espero que ajude a quem precisa. rsrsrs. Até o próximo.

março 4th, 2011

Estatística do SHA sobre tamanho de imagens diferentes

No Comments, GNU/Linux, by Jauber.

Estava testando a rapidez de autenticação pelo algoritmo SHA sobre diferentes tamanhos de imagens, para averiguar qual seria melhor para implementar em um software. Todas as autenticações e tempos gerados mostrado nos gráficos foram realizados sobre os arquivos de imagem.

Os arquivos de imagem foram gerados baseados na mesma origem, um conjunto de diretórios e arquivos que totalizam 2178438971 bytes (~2.2GiB). As imagens foram geradas com o seguinte comando:

# tar c arquivos/ | split -d -b 512M   –   saida-512-

No exemplo acima temos o agrupamento dos arquivos pelo comando tar e posterior separação em arquivos de 512MiB pelo comando split, o parâmetro -d diz para utilizarmos extensões em formato numérico e -b 512M diz para utilizarmos tamanho de 512MiB.

Testei vários tamanhos: 256MiB, 320MiB, 512MiB, 600MiB, 640MiB, 700MiB e 1GiB.

Grafico 01 (sha1sum)

 

- Foram excluídos deste gráfico os tamanhos 256 e 320 por apresentarem tempos mais lentos que a imagem de 1GiB;

- O tempo T01  são execuções em sequencia de autenticação sobre a imagem de 512, 600, 640, 700 e 1G, o tempo em T20 segue o mesmo princípio e assim sucessivamente até o T50. O script de autenticação está no final deste post;

- Os tempos são em minutos:segundos:décimos de segundos;

- Percebe-se que a autenticação sobre a imagem de tamanho 512 é a menor alcançada, alguém poderia me explicar por que?

Grafico 02 (sha256sum)


- Decidi utilizar uma variante do SHA para 256bits, para verificar se o comportamento continua com tamanho de hash diferente;

- Pode-se ver que novamente o tamanho 512MiB é o menor alcançado;

- Neste exemplo decidi colocar os tamanhos de 256MiB e 320MiB para demonstrar o que falei anteriormente, os tempos destes são mais lentos que a imagem de 1GiB;

Script para geração da estatística: gerar02

- Este script foi criado para esta estatística somente, ele gera as autenticações e valores de tempo para o gráfico demonstrado neste post para caso alguém queira fazer esta simulação.

CONCLUSÃO

- Até onde testei as imagens de tamanho 512MiB com sha1 (160bits) e sha256 (256bits) são mais rápidas para autenticar do que imagens de outros valores. Lembrando que utilizei o mesmo tamanho de origem para todas as imagens geradas, sendo é claro que a quantidade de arquivos é variado pelo tamanho de imagem (9 arquivos de 256MiB, 5 arquivos de 512MiB, 3 arquivos de 700MiB, etc);

- Não pude entender ainda porque imagens de tamanho menor (256 e 320) são mais lentas para autenticar do que outras que, aparentemente demorariam mais tempo (1GiB);

- Caso alguém queira mostrar outro número mágico como 512 para gerar imagens autenticadas mais rápido estou todo ouvidos.

março 2nd, 2011

SHA1 progressivo com Lazarus/FPC

No Comments, GNU/Linux, Lazarus/FPC, by Jauber.

Exemplo de como utilizar um ProgressBar com a biblioteca DCPCypher para mostrar a progressão de uma autenticação. Foi utilizado como sempre Lazarus/FPC com ProgressBar, DCPSha1 e OpenDialog.

É mostrado no segundo Memo o tempo de execução da autenticação, no primeiro Memo é gerado o hash. Interessante utilizar um arquivo grande para ver a progressão sendo executada.

Codigo fonte: sha1-progressivo.tar.gz

fevereiro 9th, 2011

Exemplo de Gerenciador de Arquivos em Lazarus/FPC para GNU/Linux

No Comments, GNU/Linux, Lazarus/FPC, by Jauber.
Explorer

Explorer

Neste post venho trazer um exemplo básico de Gerenciador de Arquivos para GNU/Linux desenvolvido em Lazarus/FPC, utilizando o componente VirtualTreeview da Soft Gems. No exemplo temos uma tela de diretórios e uma tela de arquivos, pode-se selecionar em ambas as telas para realizar algum procedimento.

Na tela de arquivos podemos organizar pelo nome, extensão, tamanho ou data de modificação. Tem-se ainda um exemplo simples em um componente Memo mostrando os arquivos checados.

Este exemplo foi compilado em Slackware 12, Lazarus 0.9.29, FPC 2.4.2. Estarei postando outros exemplos utilizando esta ferramenta de programação.

Abraços.

Arquivo: Exemplo-Explorer.tar

novembro 9th, 2009

FIND – procurando vários tipos de arquivos na linha de comando

No Comments, Bash Script, GNU/Linux, by Jauber.

O comando find do GNU/Linux permite procurar arquivos na linha de comando, contudo para quem veio do MS-DOS, a utilização do mesmo para procurar multiplos arquivos é dolorosa, como por exemplo, se executarmos:

# find    /usr    *.txt   *.doc

É gerado uma informação que não nos ajuda a descobrir o erro:

# find: os caminhos devem preceder a expressão

Pois então, o find não consegue procurar vários arquivos na mesma linha de comando? Consegue! De uma maneira mais complexa podemos procurar *.txt *.doc a partir do diretório /usr utilizando os parênteses (). Adicionamos no exemplo a seguir alguns parâmetros que explicaremos mais adiante:

# find  /usr  \( -iname  *.txt  -printf   “%h/%f\n”  \)  ,  \(  -iname *.doc  -printf  “%h/%f\n”  \)

Neste exemplo temos:

  • -iname, procura pelo nome do arquivo não importando se maiúscula ou minúscula
  • -printf, imprime o que for encontrado utilizando parâmetros personalizados
  • %h/%f, imprime o caminho (%h) seguido do nome do arquivo (%f)
  • \n, pula linha

Podemos procurar vários tipos de arquivos utilizando os parênteses, adicionando-os conforme exemplo, sendo cada grupo de parêntese separado pela vírgula. Note que cada parêntese DEVE ter o símbolo \  antes do mesmo.

Neste script (procurar.sh) é possível adicionar vários tipos de arquivos. Como por exemplo podemos fazer:

# ./procurar.sh   /usr   *.txt   a*.doc   casa.pdf   jota*.*

Abraços e até a próxima.

outubro 20th, 2009

Bem-vindo!

No Comments, Uncategorized, by Jauber.

Bem-vindo (ou será bemvindo agora?!)

Estarei postando em breve, ajustando detalhes e configurações.

Abraços.