1

私がやろうとしているのは、iPhone が Macbook Air(10.11.6) に接続されていることを検出することであり、デバイスの UDID を取得する必要がある場合です。その範囲で、新しい USB が差し込まれたときにスクリプトをトリガーするデーモンを作成しました。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>local.job</string>
        <key>LaunchEvents</key>
        <dict>
                <key>com.apple.iokit.matching</key>
                <dict>
                        <key>com.apple.device-attach</key>
                        <dict>
                                <key>IOMatchLaunchStream</key>
                                <true/>
                                <key>IOProviderClass</key>
                                <string>IOUSBDevice</string>
                                <key>idProduct</key>
                                <string>*</string>
                                <key>idVendor</key>
                                <string>*</string>
                        </dict>
                </dict>
        </dict>
        <key>Program</key>
        <string>/Users/cswtillster/Library/Mine/test2.sh</string>
</dict>
</plist>

これにより、次のスクリプトがトリガーされます。

#!/bin/sh
now="$(date)"
echo  "Current date and time %s\n" "$now" >> /Users/cswtillster/Library/Mine/usb_apple.txt

i=0
 for line in $(system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}'); do
    UDID=${line}
    echo "$UDID" "%s\n" >> /Users/cswtillster/Library/Mine/usb_apple.txt
    udid_array[i]=${line}
    i=$(($i+1))
 done

 cnt=${#udid_array[@]}
 for ((i=0;i<cnt;i++)); do
    echo ${udid_array[i]}
 done

スクリプトは UDID を取得しますが、私の問題は停止せず、約 10 秒ごとに実行されることです。

Current date and time %s
 Tue Sep 27 16:06:39 WEST 2016
ffe6abf455a1ca722cbe1e2d970730411d0dc3fe %s

Current date and time %s
 Tue Sep 27 16:06:49 WEST 2016
ffe6abf455a1ca722cbe1e2d970730411d0dc3fe %s

Current date and time %s
 Tue Sep 27 16:06:59 WEST 2016
ffe6abf455a1ca722cbe1e2d970730411d0dc3fe %s

誰でもこの問題を解決できますか? 私が必要とするのは、スクリプトが USB ポートへの接続ごとに 1 回だけ実行されることです。

4

0 に答える 0