🐰

特定の外部ストレージをmacOSにマウントするショートカット

2023/12/13に公開

概要

Macと外部ストレージ(USB, Thunderbolt等)を使っている環境があり、外部ストレージを使いたい時にはそれをすぐにマウントし、そうでない時には適宜マウント解除をしておきたい需要がありました。マウント解除はFinderで「取り出す」を実行すれば良いのでさほど面倒ではないのですが、マウントする方は少し面倒な方法が必要です。

ストレージのマウントにはディスクユーティリティを使う方法が一般的ですが、GUIをいちいち操作するのが手間です。そこで、ショートカットを使ってマウント処理を自動化する方法をとりました。

処理の根幹

実体はShell Scriptで、これをショートカット経由で実行する方針をとります。インターフェイスとしてはショートカットをメニューバーに登録しておくことで、およそ2クリックでいつでも目当てのストレージをマウントできるようになります。

スクリプトは以下の通りです:

volname="StorageName"
device=`diskutil list | grep $volname | sed -r "s/.*(disk[0-9]+s[0-9])$/\1/"`

for dev in `echo $device`
do
	diskutil mount /dev/"$dev"
done

これはdiskutil listコマンドを使って指定ボリューム名から対象のデバイス名を割り出し、diskutil mountコマンドでマウントを実行しています。

パスは/dev/disk1s1のような形になることを前提にしています。

StorageNameにはマウントしたいボリューム名(Finderで見えるストレージの名前)を指定してください。

ショートカットとして実装

Shortcuts.appで新規ショートカットを作り「シェルスクリプトを実行」アクションを追加して、上記のスクリプトを貼り付けます。

詳細設定から「メニューバーにピン固定」を有効にしておくとメニューバーから実行可能になります。

フィードバックが欲しいので「通知」アクションで結果を表示するようにもしてみました。

そんな具合でショートカットを作っておけば、外部ストレージが複数あっても個別にマウントできるようになります。

smb経由の場合

別のMacのファイル共有やWindows PCの共有ディスクを手元にマウントしたい場合。

基本的にopenコマンドで指定した先のボリュームをマウントすることができます。スクリプトを以下のようにするだけです。

open "smb://USER:PASS@COMPUTER/VOLUME"
  • USER… smb共有のユーザ名
  • PASS… smb共有のパスワード
  • COMPUTER… smb共有のコンピュータ名もしくはIPアドレス
  • VOLUME… smb共有の対象シェアポイント

ただし、この方法ではユーザ名、パスワードをコマンド中に平文で組み込んでしまうので、あまりセキュアではありません。

Discussion