Adicionando suporte ao samba
Voltando a programar bem depois de um tempo parado fazendo apenas scripts, resolvi adicionar suporte no meu gerenciador de arquivos ao samba e o ssh, por enquanto o ssh tá apenas na lista de estudos e pendências, mas o suporte ao samba já está virando uma realidade como pode ser visto abaixo. Clicando aqui você pode vêr o código do fonte se quiser maiores detalhes do algoritmo.
Fazendo algumas alterações para demonstração temos isso aqui.$ gcc -o libsmb libsmb.c -lsmbclient
Listando a rede samba em busca de grupos de trabalho:
$ ./libsmb list smb://
wee!! cmd 'list' host 'smb://'
1, grupo de trabalho, MULATINHO
Opa! Existe um grupo de trabalho na rede chamado ‘MULATINHO’, vamos vê-lo:
$ ./libsmb list smb://MULATINHO
wee!! cmd 'list' host 'smb://MULATINHO'
2, maquina, FERNANDA
2, maquina, FORREST
Hmmm, duas máquinas na rede, vamos examinar o ‘FORREST’
$ ./libsmb list smb://FORREST
wee!! cmd 'list' host 'smb://FORREST'
3, compartilhamento, multimedia
3, compartilhamento, tmp
6, desconhecido, IPC$
4, impressora, HP
E esse diretório compartilhado chamado ‘multimedia’?
$ list smb://FORREST/multimedia
wee!! cmd 'list' host 'smb://FORREST/multimedia'
7, diretorio, .
7, diretorio, ..
8, arquivo, sparks-reddawn2012-xvid.avi
8, arquivo, The.Campaign.EXTENDED.DVDRip.XviD-COCAIN.avi
8, arquivo, psig-ted.2012.dvdrip.xvid.ac3.srt
7, diretorio, Madagascar.3.Europes.Most.Wanted.2012.DVDRip.XViD-PLAYNOW
8, arquivo, O Melhor dos Trapalh_es na TV Volume 2--lJsjEr3pWg.mp4
Hmm.. tava querendo essa legenda do filme TED, vamos baixá-la!
$ ./libsmb recv smb://FORREST/multimedia/psig-ted.2012.dvdrip.xvid.ac3.srt
wee!! cmd 'recv' host 'smb://FORREST/multimedia/psig-ted.2012.dvdrip.xvid.ac3.srt'
file 'psig-ted.2012.dvdrip.xvid.ac3.srt' is written in localhost.
Aqui você pode ver o arquivo baixado corretamente.
$ ls -l psig-ted.2012.dvdrip.xvid.ac3.srt
-rw------- 1 mulatinho mulatinho 106496 May 4 21:41 psig-ted.2012.dvdrip.xvid.ac3.srt
Tudo isso apenas usando a libsmbclient que vem junto ao pacote do samba. :-) Vejo vocês depois!