« IllustStudio Mac版発表[→名称はCLIP STUDIOに] | トップページ | Mac版Operaで斜字体が復活 »

2010年4月 8日 (木)

AppleScriptから簡単にKeychainを参照する

作成したウェブページを特定のサーバーにアップロードするAppleScriptを書く方法を調べたところ、

do shell script "curl -T '" & uploadFile & "' -u ftpusername:ftppassword ftp://ftp.server.name/path"

のような例があるサイトに掲載されていた。だが、これではパスワードがむき出しになってしまうため、そのサイトにはkeychainからパスワードを取り出す方法も掲載されていた。もっとも、取り出される文字列にはパスワード以外の余分な情報も記されている。そのサイトではあくまでもAppleScirptの内部でパスワードの部分だけを取り出していたが、もっと簡単な方法はないかと思案し、以下のようにPerlで取り出すことを思いついた。

まず、以下のようなPerlスクリプトを作成し~/Documents/Perl/keychain.plとして保存する。

keychain.pl

@lines = split (/\"/, $ARGV[0]);

print $lines[1];

exit;

その上で、AppleScriptには以下のように記す。

set keyChain to do shell script "security find-internet-password -g -r 'ftp ' -s ftp.server.name 2>&1"
set pass to do shell script "perl /Users/ユーザー名/Documents/Perl/keychain.pl '" & keyChain & "'"
do shell script "curl -T '" & uploadFile & "' -u ftpusername:" & pass & " ftp://ftp.server.name/path"

要するに、security find-internet-passwordで取り出される長い文字列の中からダブルクォーテーションマークで囲まれた最初の文字列を取り出す、という処理を行っているだけである。

但し、この方法はMac OS X 10.5.xと10.6.xでしか試していない。今後、securityコマンドの仕様が変更されたら取り出される文字列も変わり、上記のkeychain.plでは取り出せなくなる可能性がある。

« IllustStudio Mac版発表[→名称はCLIP STUDIOに] | トップページ | Mac版Operaで斜字体が復活 »