我正在尝试为外部硬盘创建一个自定义文件/签入签出脚本,但是该脚本的一部分来自Linux机器,我测试过的工作正常但是使用 udevinfo ,OS X没有udev,那么有什么能提供相同的功能吗?
#!/bin/bash
declare -a EXTERNAL_DISKS
declare -a INTERNAL_DISKS
for disk in /dev/[sh]d[a-z]; do
eval `udevinfo -q env -n $disk`
[ "$ID_BUS" = "usb" ] && EXTERNAL_DISKS=( ${EXTERNAL_DISKS[@]} $disk )
[ "$ID_BUS" = "scsi" ] && INTERNAL_DISKS=( ${INTERNAL_DISKS[@]} $disk )
done
echo "Internal disks: ${INTERNAL_DISKS[@]}"
echo "External disks: ${EXTERNAL_DISKS[@]}"
有人知道其他选择吗?或者这可以使用bash在OSX上完成?
答案 0 :(得分:4)
#!/usr/bin/env python
from plistlib import readPlistFromString as rPFS
from subprocess import *
def shell(cmd):
return Popen(cmd.split(), stdout=PIPE).communicate()[0]
disks = {False: [], True: []}
for disk in rPFS(shell('diskutil list -plist'))['WholeDisks']:
disks[rPFS(shell('diskutil info -plist ' + disk))['Internal']].append(disk)
print "Internal disks: " + ' '.join(disks[True])
print "External disks: " + ' '.join(disks[False])
答案 1 :(得分:1)
IOKit管理设备,DiskArbitration管理大容量存储设备。脚本界面的方式也没有太多。