script para detectar a localização do USB [RESOLVIDO]

1. script para detectar a localização do USB [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 10/08/2017 - 05:33h

estou com um programa de gerenciamento de back ups, entretanto, preciso que ao plugar em outra máquina o caminho para o Pen drive seja detectado automaticamente, e o back up encaminhado para uma pasta dentro do pen drive, pronta para isso.

Em muitas vezes posso usar /media/user/PENDRIVE ... mas se saber o nome de usuário, como acessar o caminho do pen drive? e em sistemas windows, provavelmente é assim ... F:/MEUPENDRIVE ou G:/ ou H:/

certo?

toda ajuda é bem vinda


  


2. MELHOR RESPOSTA

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 13/08/2017 - 19:49h

Giovanni_Menezes escreveu:

Não tenho experiencia em shell script, posso estar falando bobagem, mas, não dava para tentar usar
UUID para identificar o pendrive?


Sim, e inclusive seria mais fácil mas se ele deseja uma solução pura em python terá que entender como o dispositivo é encontrado, detectado, renomeado e onde foi montado. Por isso usei o dbus que, acho eu, é presente na maioria das distros.


______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/

3. Re: script para detectar a localização do USB [RESOLVIDO]

Eduardo
73du4rd0

(usa Void Linux)

Enviado em 10/08/2017 - 07:54h

Acho que isso depende bastante da distro, no Arch linux, monta-se o pendrive no diretório /run , no slackware em /media...


4. Re: script para detectar a localização do USB

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 10/08/2017 - 10:59h

Se o pendrive for somente para backup você pode criar um script para rotulá-lo como "BACKUP" e quando for fazer o backup procurar pelo ponto de montagem usando o rótulo com o comando mount. Ex:
ponto_de_montagem =  $(mount | grep BACKUP | awk '{print $3}') 


Isso vai te dar o path para o ponto de montagem independentemente da distro mas acaba com a compatibilidade com o windows® .

______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/


5. eis o que tenho...

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 11/08/2017 - 05:22h

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# def code_for_live():

# this thing is very insteresting...

import os, usb
import re
import shutil

# função para encontrar os arquivos
# function to find the files

def find_files(pattern, path):
for path, dirs, files in os.walk(path):
for filename in files:
full_file_name = os.path.join(path, filename)
match = re.match(pattern, full_file_name)
if match:
yield full_file_name

# função para copiar os arquivos encontrados
# function to copy match files

def copy_files(pattern, src_path, dest_path):

for full_file_name in find_files(pattern, src_path):

print(full_file_name)

try:
shutil.copy(full_file_name, dest_path)

except IOError:

pass


if __name__ == '__main__':

copy_files('.', '/home', '/media/MYLINUXLIVE/teste') or copy_files('.', 'C:', 'F:\MYLINUXLIVE\okteste') or copy_files('.', 'C:', 'G:\MYLINUXLIVE\okteste') or copy_files('.', 'D:', 'H:\MYLINUXLIVE\okteste') or copy_files('.', 'D:', 'F:\MYLINUXLIVE\okteste') or copy_files('.', 'D:', 'F:\MYLINUXLIVE\okteste')

# copia para a unidade USB indicada, # ou para alguma pasta
# do a copy to a USB drive given, or some path



6. Re: script para detectar a localização do USB

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 13/08/2017 - 17:31h

Há também o dbus que pode ser usado para localizar e/ou esperar o pendrive ser inserido. Veja a saída:
Esperando dispositivo ser inserido...

Dispositivo Encontrado: TOSHIBA-MQ01ABD032-83N1COP4T
---------------
Nova Partição Encontrada: sdb1
Ponto de Montagem: /media/ctw6av/PS3
---------------
Nova Partição Encontrada: sdb2
Ponto de Montagem: /media/ctw6av/BACKUP

Dispositivo Encontrado: SD16G-0x56e3b9e8
---------------
Nova Partição Encontrada: mmcblk0
Ponto de Montagem: /media/ctw6av/0403-0201


Isto foi feito com o código abaixo. Altere como quiser:
#!/usr/bin/env python3

from dbus.mainloop.glib import DBusGMainLoop
from gi.repository import GLib
from threading import Thread
from os.path import basename
from string import digits
import time
import dbus


class ListenTo(Thread):
def __init__(self, callback_function):
super().__init__()

if not callable(callback_function):
raise TypeError("Object is not callabble...")

DBusGMainLoop(set_as_default=True)
self.bus = dbus.SystemBus()

self.signal = "InterfacesAdded"
self.interface = "org.freedesktop.DBus.ObjectManager"
self.bus.add_signal_receiver(callback_function, self.signal, self.interface)

def run(self):
loop = GLib.MainLoop()
loop.run()


def get_mount_point(device):
with open("/proc/mounts", "r") as partitions:
for info in partitions:
for path in info.split():
if device in basename(path):
properties = info.split()
return properties[1]


def signal_receive(path=None, properties=None):
if "org.freedesktop.UDisks2.Drive" in properties:
info = properties["org.freedesktop.UDisks2.Drive"]
print("\nDispositivo Encontrado:", info["Id"])
if "org.freedesktop.UDisks2.Block" in properties:
time.sleep(1)
device = basename(path)

for char in device:
if char in digits:
print("---------------")
print("Nova Partição Encontrada:", device)
print("Ponto de Montagem:", get_mount_point(device))


if __name__ == '__main__':
listener = ListenTo(signal_receive)
listener.start()
print("Esperando dispositivo ser inserido...")




______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/


7. Re: script para detectar a localização do USB

Giovanni  M
Giovanni_Menezes

(usa Devuan)

Enviado em 13/08/2017 - 19:43h

Não tenho experiencia em shell script, posso estar falando bobagem, mas, não dava para tentar usar UUID para identificar o pendrive?




--------------------------------------------------------------------------
Somente o Software Livre lhe garante as 4 liberdades.
Open Source =/= Free Software.
https://goo.gl/mRzpg3
http://www.anahuac.eu/contrarrevolucao-osi/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts