お知らせ:


 ◇ YouTube Apple Japan チャンネル で有用なヒントや使い方を配信中です。
 ◇ iOS 向け Apple サポート App のバージョン 2.4.1 が公開されました。

お知らせ: macOS Mojave にアップグレードする


macOS Mojave には、ダークモードやスタックなどの新機能や、3 つの新しい内蔵 App が新たに加わり、クリックするたびにさらに多くのことができるようになります。 macOS Mojave へのアップグレード方法はこちら >

しばらく返答が寄せられていないようです。 再度ディスカッションを開始するには、新たに質問してください。

質問:

質問: LoginHookについて教えてください。

MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
OSX10.13.3


目的

複数ユーザーが存在するMacでログイン時にSfariで特定のサイトにアクセスしたい。

複数のMacを複数の人間で使用しているのでユーザーの管理が難しい為、LoginHookで対応を検討。


/Library/Scripts/test.shの中身

#!/bin/bash

open -a "/Applications/Safari.app" http://www.yahoo.co.jp/


Test.shは chmod 755にて実行可能済


sudo defaults read com.apple.loginwindow LoginHook /Library/Scripts/test.sh


上記内容にてシェルの作成及び設定は行っていますがログイン時に起動できない状態です。

ターミナルで直接 /Library/Scripts/test.sh  入力では問題なく該当ページの起動は可能です


お手数おかけしますが改善方法をご教授ください。

よろしく願いします。

MacBook Pro, macOS High Sierra (10.13.3)

投稿日

返信
スレッドに付いたマーク 参考になった

2018/06/03 18:52 xsuxsu への返信 xsuxsu への返信

「他のログイン時の動作は、ログインフックが完全に実行されるまで動作しません。」とあるので、ログインフックが終了するまで、WindowServerが使えない状態にあります。

https://support.apple.com/ja-jp/HT2420


従って、ログインフック自体は直ちに終了させる必要があるので、&を付けてバックグラウンドでプログラムを実行すれば良いでしょう。つまり、シェルスクリプトを2つ作ることになります。


LoginHook.shはLauncher.shを起動するのみ、Launcher.shはSpotlightが起動するまでスリープした後、Safariを立ち上げます。(保存するディレクトリーはお好きな場所に)

ユーザがアップロードしたファイル

ディスカッションを部分的に表示しています

返信をすべて表示

ページコンテンツが読み込まれました

2018/06/03 16:59 xsuxsu への返信 xsuxsu への返信

シェルスクリプトの保存場所のパスの指定はあっていますか? /Library/Scripts/test.shとのことですが、先頭に~が抜けている可能性はありませんか? ホームディレクトリに保存した方が良いと思うのですが、如何でしょうか?

2018/06/03 16:59

返信 参考になった

2018/06/03 17:03 xsuxsu への返信 xsuxsu への返信

特定のWebページを開くだけなら、インターネットロケーションファイルを起動項目(システム環境設定>ユーザー&グループ>ログインユーザー>起動項目)に入れておくだけでも可能ですよ。 インターネットロケーションファイルは、Safari.appのアドレスバーが表示しているURLやブックマークをデスクトップにドラッグ&ドロップするだけで作ることができます。

2018/06/03 17:03

返信 参考になった

2018/06/03 17:58 ni_ki への返信 ni_ki への返信

ni_kiさん

返信ありがとうございます。


sleep 7を下記の様に追加しましたが自動的に起動はしてこないですね。

sleep 7; open -a "/Applications/Safari.app" http://www.yahoo.co.jp/


他に気づいた点とかありましたらよろしくおねがいします。

2018/06/03 17:58

返信 参考になった

2018/06/03 18:02 T22T への返信 T22T への返信

T22Tさん

返信ありがとうございます。


ログイン項目も考えましたが‥

新規にユーザー作成などが発生した場合


ログイン項目の設定を都度行う必要があるので

LoginHookでの対応を考えています。


他に気づいた点などありましたらよろしくお願いします。

2018/06/03 18:02

返信 参考になった
スレッドに付いたマーク 参考になった

2018/06/03 18:52 xsuxsu への返信 xsuxsu への返信

「他のログイン時の動作は、ログインフックが完全に実行されるまで動作しません。」とあるので、ログインフックが終了するまで、WindowServerが使えない状態にあります。

https://support.apple.com/ja-jp/HT2420


従って、ログインフック自体は直ちに終了させる必要があるので、&を付けてバックグラウンドでプログラムを実行すれば良いでしょう。つまり、シェルスクリプトを2つ作ることになります。


LoginHook.shはLauncher.shを起動するのみ、Launcher.shはSpotlightが起動するまでスリープした後、Safariを立ち上げます。(保存するディレクトリーはお好きな場所に)

ユーザがアップロードしたファイル

2018/06/03 18:52

返信 参考になった (2)

2018/06/03 18:08 T22T への返信 T22T への返信

T22Tさん


パスの場所についてですが

複数のユーザーで利用するため

ホームディレクトリーではなく

/Library/Scripts/

にスクリプトを置いている状況です。

2018/06/03 18:08

返信 参考になった

2018/06/03 18:38 xsuxsu への返信 xsuxsu への返信

ご説明を頂きまして、ありがとうございます。

なるほど、複数のユーザーのログイン時に同じWebサイトを表示させるということですね。

2018/06/03 18:38

返信 参考になった

2018/06/03 18:58 xsuxsu への返信 xsuxsu への返信

こちらのガイドによると、 → Daemons and Services Programming Guide: Customizing Login and Logout

Note: If no plist file exists for com.apple.loginwindow, this method will not work. This file (/var/root/Library/Preferences/com.apple.loginwindow.plist) does not exist on a fresh installation until the user changes a login window setting (such as turning on fast user switching).


となっています。 私自身は検証していないので、申し訳ないのですが、fast user switchingをオンにしてみるとどうでしょう?

2018/06/03 18:58

返信 参考になった

2018/06/03 18:59 hohokihai への返信 hohokihai への返信

hohokihaiさん

返信ありがとうございました。


シェルスクリプトを2つ作ることで問題なくログイン時にSafariを起動することができました。


これは余り良くない方法なので、/Library/LaunchAgentsにlaunchd.plistを作るのが順当なやり方だと思います

>ご指摘ありがとうございます。動作確認しながらLaunchAgentsに構築していきたいと思います

ありがとうございました。

2018/06/03 18:59

返信 参考になった

2018/06/03 19:05 T22T への返信 T22T への返信

すみません。 これも私の勘違いですね。 hookhaiさんの説明にあるように、WindowServerが使える状態にならないと、Safari.appを起動できないということみたいですね。

2018/06/03 19:05

返信 参考になった
ユーザのユーザプロフィール: xsuxsu

質問: LoginHookについて教えてください。