2016-10-28 3 views
0

(Python 3.x에서) 플래시 드라이브가 현재 사용중인 컴퓨터에 연결될 때 자동으로 마운트되는 기본 위치를 어떻게 찾을 수 있습니까? (다양한 비 특정 Linux 배포판 및 이전/새로운 버전 중 하나 일 수 있습니다. 어떤 버전인지에 따라/media/driveLabel,/media/userName/driveLabel,/mnt/driveLabel 등의 위치에 탑재 될 수 있습니다. .)플래시 드라이브가 파이썬에서 자동으로 마운트되는 위치는 어떻게 찾습니까?

우분투가 사용자 이름을 포함하도록 기본 마운트 위치를 업데이트 할 때까지는/media/driveLabel로만 내용을 구성했습니다. (이제는 내가 만든 휴대용 응용 프로그램의 북마크 파일 설정에 정적 위치를 사용할 수 없습니다. 컴퓨터, 나는 여러 사용자 이름을 사용하기 때문에). 따라서 북마크 된 파일의 경로는 새 컴퓨터 나 사용자를 사용할 때마다 업데이트해야합니다. 하드 드라이브의 파일도 북마크되어 있습니다 (즉, 변경하지 않아도되며, 올바른 컴퓨터가 아닌 경우로드하지 않도록 설정 됨).

어쨌든, 여기에 해결책이있는 경우 어쨌든, 나는 미디어 마운트와 함께 가고 싶지 않습니다. 가능하면 (비록 그 질문을 촉발시킨 문제로 나를 도울 수는 있지만) 무언가를 마운트하고 경로의 마운트 위치를 먼저 찾지 않고도이 위치를 찾을 수 있기를 원합니다. 파이썬이나 그 밖의 방법으로이 것을위한 약간의 조항이 있어야 할 것처럼 보인다.

즉, 이미 장착 된 플래시 드라이브가 어디에서 마운트되는지 (드라이브 레이블 부분 제외) 알 수 있기를 원합니다.

EDIT :/media/username/drivelabel이 자동 마운트를 지원하는 모든 주요 배포본에 대한 자동 마운트의 표준입니다 (최신 버전 인 경우 적어도 우분투에는 항상 사용자 이름), 알려 주시기 바랍니다, 꽤 많은 질문에 대한 답변. 또는 주요 배포판과 관련된 자동 플래시 드라이브 탑재 위치 목록을 말해 줄 수도 있습니다. 나는 그것이 일을 할 수 있었다고 생각한다 (비록 내가 물건을 바꾼다면 그것을 업데이트해야 할 것이다).

FYI EDIT : 내 문제는 아마도 북마크로 마운트 위치를 저장하기 때문에 (내 프로그램이 북마크 경로의 어떤 부분을 열 었는지 알 수 있도록) 북마크 경로에서 그 위치로 바꿉니다. 사용자가 책갈피를로드 할 때 새로운 현재 마운트 위치.

답변

1

왜 당신이 당신 자신에 의해 위치를 강제로 Udev는 사용하지 마십시오, 단순히 당신은 드라이브 삽입에 듣고 계속 udev에 스크립트를 작성하고 컴퓨터에 특정 위치에 삽입 된 USB 드라이브를 매핑 할 수 있습니다

+0

그건 통찰력이있어. 루트/sudo에 대한 암호를 입력하지 않고도 마운트를 바인드 할 수 있는지 또는 정적 위치에있는 프로그램에 대한 심볼 링크를 작성하는 것이 좋은 해결 방법이 될 수 있는지 궁금하게 만듭니다 (비록 내가 지원해야하지만 아마도 다른 곳의 상징적 인 링크). – Shule

+1

매우 간단합니다. 필요한 것은 blkid 명령에서 올바른 데이터를 구문 분석하고 fstab에 영구적으로 변경 사항을 기록 할 수 있습니다.이 작업에 대한 지원이 필요하면 이전에 이미했듯이 알려주십시오. – BlackHawk

1

일부 리눅스 시스템은 Ubuntu처럼 그들에 연결된 장치를 자동으로 마운트하지 않지만,이 정보를 얻으려면 시스템에서 주위를 돌릴 수있는 버전이 있습니다. 난 당신이 blkid를 사용하여 장치의 UUID를 얻을 수

먼저 충분히 파이썬을 알고하지 않는

불행하게도, 난 단지 리눅스 CLI이 대답 할 수

$ blkid 
/dev/sda1: UUID="4c58b621-59b6-4d05-a785-4671856520de" TYPE="ext4" PARTUUID="7763f5b3-01" 
/dev/sda5: UUID="cf64e358-8be2-42f3-972d-70f36469279c" TYPE="swap" PARTUUID="7763f5b3-05" 
/dev/sdb1: UUID="05a42322-cd8b-47e2-bc4c-612c7a577626" TYPE="ext3" PARTUUID="5893092a-01" 
/dev/sdc1: UUID="64d7548d-689d-407a-9d23-68085476927a" TYPE="ext4" PARTUUID="000ced26-01" 
/dev/sdc5: UUID="87cec41f-aa0b-4469-9e92-6ec549ea0b34" TYPE="swap" PARTUUID="000ced26-05" 

가 결정하는 UUID 당신의 디스크입니다.당신은 당신이 당신의 디스크가와에있는 /dev/sd* 결정 blkid를 사용할 수있는 일단 :

$ awk '$1~"/dev/sdb1" {print $2}' /proc/mounts 
/media/sdb1 

또는 그 퍼팅 : 마운트 명령은 마운트에 대한 정보를 기록하는 위치

$ blkid | awk -F":" '$2~"05a42322-cd8b-47e2-bc4c-612c7a577626" {print $1}' 
/dev/sdb1 

은 그럼 당신은 /proc/mounts을 칠 수있다 두 개를 함께 사용 :

$ awk -v device=`blkid | awk -F":" '$2~"05a42322-cd8b-47e2-bc4c-612c7a577626" {print $1}'` '$1~device {print $2}' /proc/mounts 
/media/sdb1 
1

마운트 경로를 사용하여 수행하려는 작업을 수행하기 전에 사용자에게 어떤 장치를 지정하도록 요청할 수 있습니다. 예를 들면. 는/dev/sdb1로는/dev/

sdb2로는 명령

df -h <path to device user wishes to use> | awk '{print $6}' 
실행

Filesystem  Size Used Avail Use% Mounted on 
/dev/sda1  19G 6.5G 12G 37%/
udev    10M  0 10M 0% /dev 
tmpfs   810M 9.0M 801M 2% /run 
tmpfs   2.0G 68K 2.0G 1% /dev/shm 
tmpfs   5.0M 4.0K 5.0M 1% /run/lock 
tmpfs   2.0G  0 2.0G 0% /sys/fs/cgroup 
tmpfs   405M 4.0K 405M 1% /run/user/115 
tmpfs   405M 8.0K 405M 1% /run/user/1000 

출력 다음주는 명령

df -h 

의 출력을 사용할 수있을

은 장치가 마운트 된 경로를 반환합니다. 그 후에 당신이 찾고있는 것을 달성했습니다. 이 모든 것은 파이썬 스크립트에서 그렇게 할 수 있습니다.

import subprocess 
subprocess.call('path to script') 

이 정보가 귀하의 최종 목표에 가깝기를 바랍니다.

관련 문제