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!