Python – Montando um share no windows (SAMBA)

Posted in Django, Programação, Python, Tecnologia, Windows with tags , , , on 13 de setembro de 2013 by fchevitarese

Opa!

Como prometi (desta vez fui rápido), vou criar um post rapidão de como mapear uma unidade de rede autenticada com SAMBA no Windows, para que você possa gravar e ler arquivos =D

Primeiro eu criei a função abaixo:


#@TODO --> Pegar usuário, senha e host das confs do database =D
def mappDisk(drive, ip, sharedFolder, user, password):
 # print "Entrei aqui =D "
 import pywintypes
 import win32com.client

# Disconnect previous mapped drives
 networkPath = win32com.client.Dispatch('Wscript.Network')
 network_drives = networkPath.EnumNetworkDrives()
 for mapped_drive in [network_drives.Item(i)
 for i in range(0, network_drives.Count() -1 , 2)
 if network_drives.Item(i)]:
 networkPath.RemoveNetworkDrive(mapped_drive, True, True)

# Mount the drives
('z:', '\\\\192.168.1.100\\Some_Share', 'someuser', 'somepass')]
 drive_mapping = [
#(drive, '\\\\'+ip+'\\'+sharedFolder, user, password),
 ]
 print drive_mapping
 for drive_letter, network_path, user_name, user_pass in drive_mapping:
 try:
 networkPath.MapNetworkDrive(drive_letter, network_path, True, user_name, user_pass)
 return True
 except Exception, err:
 print err
 return False

Aí é só chamar a função passando os parâmetros, testar se você pode gravar o arquivo e ser feliz !!!


try:
 file= open(caminho.mapDrive + '\\' + caminho.pastaPedido + '\\' + fileName, 'a')
 except IOError:
 canWrite = mappDisk(caminho.mapDrive, caminho.ipServidor, caminho.sharedFolder, caminho.usuario, caminho.senha)

if canWrite:

 file= open(caminho.mapDrive + '\\' + caminho.pastaPedido + '\\' + fileName, 'a')

...

Como estou  usando o Django, criei um models para guardar os parâmetros. Assim fica mais fácil visualizar, editar e tals ^^

Segue no dpaste porque o último post ficou todo zicado –> http://dpaste.com/hold/1379145/

Obs.:  Usa a biblioteca pywin32 ….

Abraços!

Gravar arquivos em share do samba autenticado

Posted in Django, Programação, Python, Tecnologia, Windows with tags , , , on 13 de setembro de 2013 by fchevitarese

Opa!!

Bom, alguns meses ou anos que eu não posto nada!

Eu sempre posto experiências que tive para resolver determinadas coisas e tals, por isso não estava postando quase nada, pois a maioria das coisas que eu andava fazendo era digamos, trivial =D

Eis que esta semana, me deparo com uma situação no mínimo inusitada!
Estou migrando um sistema em ASP para Django, e como não dou conta de migrar tudo de uma vez, estou fazendo de forma gradual, o que me obriga a rodar o Django com uma velha versão do apache + chiliasp e wsgi =D

Servidor windows e tals… Enfim, minha aplicação precisa realizar uma troca de arquivos, no caso, em uma pasta de um samba server que roda uma outra aplicação que não é minha que tem a função de ler este arquivo, coletar as informações e me devolver um arquivo de resposta.
Eu leio este arquivo de resposta, pego as informações e devolvo para a página… Simples né! Até eu que sou mais bobo acreditei que seria!

O problema já começou na hora de gravar os arquivos. Como eu (inocentemente) mapeei a unidade/pasta do share, já autenticando e tals, pensei que seria simplesmente gravar no z:\pasta\ =D

Ledo engano! Nem chegava a encontrar o caminho =D

Parti então para o ataque e encontrei uma biblioteca chamada pysmb que resolveria meu problema!

Então vai seguir aí como foi que eu fiz! ^^
Obs.: Não vou ensinar aqui nada relacionado ao Django ou a instalação do pacote ^^

Primeiro os imports …


from smb.SMBConnection import SMBConnection
from nmb.NetBIOS import NetBIOS
from smb.smb_constants import *

Feito os imports, criei uma funçãozinha para fazer o trabalho =D


def getBIOSName(remote_smb_ip, timeout=30):
srv_name=""
try:
bios = NetBIOS()
srv_name = bios.queryIPForName(remote_smb_ip, timeout=timeout)
except:
print >> sys.stderr, "Looking up timeout, check remote_smb_ip again!!"
finally:
bios.close()
 # print srv_name
return srv_name

def connectShare():
server_name = getBIOSName('192.168.0.151')[0]
client_name = ('webdevelopervm')
s = SMBConnection('meu_usuario', 'minhasenha', client_name, server_name, use_ntlm_v2 = True)
s.connect(server_name, 139)
if s.auth_result:
# print s.listShares()
# print s.listPath('Publico','pedidos', SMB_FILE_ATTRIBUTE_ARCHIVE)

f = open(r"c:\meutestenovo.txt", 'a')
f.write("Funciona fedaputa!!!")
f.close()
f = open(r"c:\meutestenovo.txt", 'r')

s.storeFile('Publico', r'pedidos\\meutestenovo.txt', f)
f.close()

É necessário pegar o nome do servidor onde está o share, por isto a função getBiosName() =D
A variável client_name deve conter exatamente o nome do seu computador =D
Tive que criar o arquivo, depois ler o arquivo para enviar ao servidor.

Ainda não testei, mas deve existir uma maneira de criar o arquivo em memória e então envia-lo.

Tem outra forma de fazer mapeando o local, mas vou fazer outro post para dar mais moral no blog né XD

Segue o link no dpaste se caso não ficar legal os fontes aqui no blog –> SMBShare

Você também pode efetuar a conexão de outra maneira, usando smb://

Acredito que funcione até no windows mas eu não cheguei a testar ;)

http://miketeo.net/wp/index.php/2012/05/04/smb-url-support-in-pysmb.html

Link de onde encontrei a primeira luz (quase toda na verdade =D )

 

Abraços!

 

 

Hotot – Cliente para Twitter

Posted in Dicas, Linux, Tecnologia with tags , , on 3 de julho de 2013 by fchevitarese

Bom, eu não sou um super usuário do Twitter não, mas se tratando em soluções para Linux, as que vem por default para o Ubuntu 13.04 não são das melhores não.

Antes de migrar para o 13.04, eu usava n 12.10 o Hotot. Um cliente Very good para Twitter.

Mas, eis que nem tudo são flores e a API do Twitter foi atualizada ou a antiga foi deixada de lado, algo desse tipo. Acontece que o Hotot não funfou mais.

Comecei a utilizar pelo Chrome (via plugin que é bom também =D ) mas não estava satisfeito. Infelizmente, a cada plugin que você instala no navegador, o bicho começa a comer sua memória.

Então, procurei de novo no amiGoogle e encontrei um carinha que ensina como compilar a última versão do Hotot que já está funfando ;)

Segue o link e um abraço do Paulino =D

http://www.samundra.com.np/twitter-api-changes-breaking-hotot-functionality/1224

Ubuntu 13.04 +Skype + Drivers proprietários

Posted in Dicas, Linux, Tecnologia with tags , , , , on 27 de junho de 2013 by fchevitarese

Bom, e pra quem tem uma plaquinha de vídeo com driver proprietário (que não é meu caso.. A minha é lixona mesmo) segue outro post.

Parece que ta rolando um problema com o skype e estes drivers proprietários aí =D

http://www.webupd8.org/2013/04/fix-skype-not-working-in-ubuntu-1304.html

 

Fuis! ^^

Skype + Ubuntu 13.04

Posted in Dicas, Linux, Tecnologia with tags , , on 27 de junho de 2013 by fchevitarese

Opa!!!

Nãoooo!! Eu não morri!!! suahsuahsuahs

Tem um tempão que eu não posto nada, porque sendo sincero, estou meio “desanimado” de ficar postando ;)

Mas hoje, após procurar algumas informações, descobri porque é que o ícone do skype não estava aparecendo na hora que eu abria… Sabe porque?

Bom, eu também não… Só sei que segui o que ta falando neste link aqui e funfou tudo de boa!!

 

http://enqlu.com/how-to-install-skype-4-1-in-ubuntu-13-04-or-linux-mint-15/

 

Enjoy!!! =D

Mudanças previstas no Ubuntu 12.04

Posted in Linux, Tecnologia with tags on 8 de novembro de 2011 by fchevitarese

Opa!

Segue um breve post mostrando algumas mudanças para a versão nova do Ubuntu ;)

http://www.tiagohillebrandt.eti.br/blog/2011/11/mudancas-previstas-para-o-ubuntu-12-04-precise-pangolin

Abraços!

Montagem automática via fstab

Posted in Dicas, Linux, Tecnologia with tags on 21 de outubro de 2011 by fchevitarese

Opa!

Blog às moscas… Muito tempo sem postar… Mas como eu não sei tudo de cor no linux ( xD ), sempre que eu preciso de alguma coisa, recorro ao nosso querido amigo Google ;)

Eis que eu tava precisando montar uma hd (leia – partição) automáticamente, via fstab. Isto lógico, não tem segredo algum, é mto fácil… Trivial ;)

Mas, eu encontrei uma “dica” muito bacana de como fazer…

Segue o link abaixo ;)

http://www.bunkerhollow.com/blogs/matt/archive/2010/07/17/ubuntu-10-04-automatically-mount-drives-on-boot-with-fstab.aspx

 

 

 

 

 

 

 

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.