Skip to content

Instantly share code, notes, and snippets.

@niratama
Created March 30, 2016 10:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save niratama/3c5424cf7b89e83cd8ff874b33477223 to your computer and use it in GitHub Desktop.
Save niratama/3c5424cf7b89e83cd8ff874b33477223 to your computer and use it in GitHub Desktop.
OS XのJavaScript for Automationでsmbボリュームをマウントするスクリプト

El Capitanになってからボリューム名に濁点が入っている、というかUTF-8-MAC問題に引っかかる名前だと一覧から正常にmountできなくなっているのでそれ用の対策コード。

実際にはこれをそのまま使うよりserver変数に直接サーバ名入れて、Automatorでサービスとして登録しておいたほうが楽。

#!/usr/bin/env osascript -l JavaScript
// vi:set sts=4 sw=4 et:
'use strict';
function run(argv) {
if (argv.length != 1) {
console.log("smbmount <url>");
}
// 接続先を指定
var server = argv[0];
var app = Application.currentApplication();
app.includeStandardAdditions = true;
// smbutilコマンドでボリューム一覧を取得する
var volumes = app.doShellScript('smbutil view '+server).split("\r").map(
function (l) {
var col = l.split(/\s+/);
if (col[1] === 'Disk') {
return col[0];
}
}).filter(function (l) { return l }).sort();
// ボリューム選択ダイアログを表示する
var volume = app.chooseFromList(volumes,
{ "withPrompt": '"'+server+'"上のマウントするボリュームを選択してください:'});
// 選択されたボリュームを開く
if (Array.isArray(volume)) {
// Pathオブジェクト化してtoStringするとUTF-8-MACに変換できる
var url = server+'/'+encodeURIComponent(Path('/'+volume[0]).toString().slice(1));
app.openLocation(url);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment