3

スタック オーバーフローやインターネットでスクリプトに関する多くの質問から解決策を見つけようと最善を尽くしましたが、必要な解決策が見つからないようです。

私がやりたいことは、より自動化されたクリックの少ないソリューションを作成して、システム上のすべてのモバイル キャッシュ ユーザー アカウントを削除することです。ログインして手動でユーザー アカウントに移動し、[-] ボタンをクリックしてユーザーを 1 つずつ削除し、ユーザー データの [すぐに削除] をクリックしました。これはうまくいきますが、時間がかかります。そのため、スクリプトを使用してこれを行う方法が必要であることがわかりました。

私はこのコードに出くわしました:

for cuser in `dscl . -list /Users AuthenticationAuthority | grep LocalCachedUser | awk '{print $1}' | tr '/n' ' '`; do
    dscl . -delete /Users/$cuser
done

これをターミナルで実行すると、許可エラーが発生します。だから私はsudoでそれを実行する必要があると考えました。そこで、スクリプトを実行するための AppleScript の作成を検討し始めましたが、正しい方法が見つからないようです。

何か案は?ところで、私は Mac でスクリプトを作成するのは初めてなので、コードにコメントを付けて、何が起こっているかを理解してください。そうすれば、スクリプト コードを実行しても、それが何をするかわからないまま実行することはありません。:)

ありがとう

4

3 に答える 3

5

sudoまたは管理者権限でシェル スクリプトを実行するwith administrator privilegesには、行末に追加しますdo shell script。例えば:

do shell script "/path/to/script/file.sh" user name "adminusershortname" password "password" with administrator privileges

詳細については、Apple のテクニカルノートを参照してください。do shell script

とはいえ、これをシェル スクリプトとして保存し、sudo を使用してシェル スクリプトを実行することも同様に機能します。

#! /bin/sh

for cuser in `/usr/bin/dscl . -list /Users AuthenticationAuthority | grep LocalCachedUser | awk '{print $1}' | tr '/n' ' '`; do
    /usr/bin/dscl . -delete /Users/$cuser
done

たとえばremoveUser.shとして保存しchmod、実行可能として設定するために使用し(chmod 755)、実行します(sudo ./removeUser.sh

于 2009-09-03T02:20:09.837 に答える
2

これを行うには、システムのsudoersファイルを編集します。これにより、このスクリプトを(cronなどを介して)実行するために使用するアカウントで、パスワードなしでsudoを実行できるようになります。

sudoersファイルを編集するには、visudoを使用しますが、管理者権限で実行する必要があります。試す:

$ sudo visudo

次のような行をファイルの最後に追加し、 user_nameをスクリプトを実行するユーザーに置き換えます。各フィールドの間にタブを使用することに注意してください。

user_name    ALL=(ALL)     NOPASSWD:ALL

これで、user_nameはsudoと入力できるようになり、パスワードの入力を求められなくなります。

また、visudoは、viエディターをミラーリングし、viと同じコマンドを使用するテキストエディターであることに注意してください。

于 2009-09-03T02:24:09.970 に答える
0

私は手元にMacを持っていないので、これが機能するかどうかを確認できません。

su - を実行してみてください。

次に、スクリプトを実行します。それが機能する場合は、crontab -e を試してください

あなたのスクリプトを実行するためのエントリを追加します。

crontab をご存知ですか?必要に応じてグーグルで検索しないと。しかし、基本的に毎日真夜中に実行するには、 0 * * * * /path/to/script のようになります

参照: http://en.wikipedia.org/wiki/Cron

于 2009-09-03T02:13:43.233 に答える