AppleScript Archive
AppleScriptでサーバー接続
- 2009-02-01 (日)
- AppleScript
AppleScriptでサーバーへ接続する方法。
会社のファイルサーバーにPerlなどのスクリプトを置いて、それをFileMaker Proから実行させることが多々ある。
なので、実行する前にサーバーへ接続しないといけないので、作ったスクリプト。
try do shell script "touch /Volumes/[ServerName]/[LogFile]" on error mount volume "afp://[ServerIP]/[VolumeName]" as user name "[UserName]" do shell script "touch /Volumes/[ServerName]/[LogFile]" end try
こんな感じ。
do shell script "touch /Volumes/[ServerName]/[LogFile]"
は、使用するファイルに “touch” 、要するに触れるかどうかを試す。ここでもしエラーが発生しなければ、既にサーバーはマウント済みとなるので、スクリプトは終了。
on error は もしダメだったとき。
mount volume "afp://[ServerIP]/[VolumeName]" as user name "[UserName]"
を実行してボリュームをマウントする。さらに念のため、”touch” を再度実行。
ちなみに、この後のエラー処理はあえてさせてない。エラーがもし出たらFileMaker側で処理するため。
一度接続を試してみて、ダメだったら何かここでは解決できないエラーがあるという判断の上です。
ボリュームマウントのところは、
mount volume "afp://[ServerIP]/[VolumeName]" with password "[PassWord]" as user name "[UserName]"
とすると、パスワードも一緒に送ってくれる。但しすべてのユーザーに利用権限を与えないため、今回の場合は入れてない。
パスワードが無くてもFinderのいつものダイアログで、パスワードの入力を求められる。このとき「パスワードを記憶する」のチェックボックスにチェックを入れれば、次回から入力を求められることは無い。
また、ユーザー名も同じくスクリプト上に書かなくてもいい。ユーザー毎にIDを発行してる場合などは各パソコンで記録させればok!
- Comments: 0
- Bookmark: 0
- Trackbacks: 0
FileMaker Pro + AppleScript で Perl
- 2008-05-17 (土)
- AppleScript | FileMakerPro | Perl
FileMaker Pro + AppleScirpt + Perl
FileMaker ProのWebビューアーを使ったスパイダリング(HTMLの収集)に限界が来たので、Perlでの開発を現在行っている。
HTMLのダウンロードという意味では、Perl等をかましてレンダリング・目的のHTML以外(画像等)のダウンロードを行わせないようにすれば、さほど変わらないのだが、スクレーピング(HTMLを分解し、必要な情報のみを抽出)は桁外れにPerlの方が早い。
ということで、FileMaker Pro → AppleScript → Perlという流れで情報収集を行っている。
FileMakerからAppleScriptを実行する方法はスクリプトステップの「AppleScriptを実行」というのは説明するまでもないか?w
AppleScriptからPerlを実行する時はdo shell scriptを使う
do shell script "perl 〜.pl"
“”の間はターミナルで実行している命令と一緒。
perlを実行する手前でcdコマンドを実行したい時等は、
do shell script "cd ./Document/; perl 〜.pl"
というに、セミコロン(;)で区切って複数の命令を書く。
PerlをTerminalから実行する時、色々とメッセージを返すようにしていたとしても、コマンドの実行が終わるまで基本的に何も出来ない。
なので、基本的にlogとしてデーターを残すようにしている。
do shell script "cd ./Document/; perl 〜.pl > 〜.log"
もうちょっと、AppleScript
作ったperlのスクリプトではLWP::UserAgentを使っているのだが、1ページダウンロードに通常1秒〜1.5秒かかっている。
ただし、何故か分からないのだが、同じスクリプトを2コ同時に実行すると、実行して少し経ってから1ページのダウンロードが0.3秒〜0.7秒にまでスピードアップする。
スクリプトを2つ実行することで、結果的に2倍のスピード!
──というのならばまだ分かるのだが、スクリプトを2つ実行することで、4倍以上のスピードが出るのは何故だ?
ちなみに、2つ実行してスピードが速くなった後に、片方のスクリプトを停止しても、1ページのダウンロードが0.3秒〜0.7秒というスピードは変わらない。
※通常1秒間に数ページみに行くのは相手側のサーバーに負担になります。マナー違反になるので注意!
1つのドメインに対してのみ現在は行っているので、もしかすると相手側のサーバー側の問題なのかもしれないが謎だ…。
お分かりになる方いらしたら、是非教えて頂きたい。
とりあえず原因は不明だが「なら、2つ以上のPerlを同時に動かせばいいのか!」という結論に至り、バックグラウンドでdo shell scirptを実行出来ないかと調べてみると、アップルのテクニカルノートにあった。do shell script in AppleScript
do shell script "perl 〜.pl > 〜.log 2>&1 &"
とすれば良いらしい。
これを上手く使えば、分割処理が出来るので更なるスピードアップも望める!
さらに色々調べていると面白そうな記事を発見!
AppleScript で Perl に GUI をつける
これは、かなり勉強になりそう。後日挑戦してみたい。
- Comments: 0
- Bookmark: 0
- Trackbacks: 0