Вопрос

Я изо всех сил старался найти решение с помощью множества скриптовых вопросов о переполнении стека и Интернете, но, похоже, я не могу найти то решение, которое мне нужно.

Что я хочу сделать, так это создать более автоматизированное и менее щелкающее решение для удаления всех мобильных кэшированных учетных записей пользователей в системе.Я входил в систему и вручную переходил к учетным записям пользователей и удалял пользователей по одному, нажимая кнопку "-", затем нажимая "Удалить немедленно" для пользовательских данных.Это работает, но отнимает много времени, а у меня есть дела поважнее, чем тратить свое время.Так что я знал, что должен быть способ сделать это с помощью сценария.

Я наткнулся на этот код:

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

Если я запускаю это в терминале, я получаю ошибки разрешения.Поэтому я решил, что мне нужно запустить его с помощью sudo.Итак, я начал изучать возможность создания AppleScripts для запуска скрипта, но, похоже, не могу найти правильный способ сделать это.

Есть какие-нибудь идеи?Кстати, я новичок в написании сценариев на Mac, поэтому, пожалуйста, прокомментируйте свой код, чтобы я знал, что происходит, и чтобы я не просто запускал какой-то код скрипта, не зная, что он будет делать.:)

Спасибо

Это было полезно?

Решение

Чтобы выполнить сценарий оболочки с sudo или добавить права администратора with administrator privileges до конца вашего do shell script линия.Например:

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

Вы можете найти больше в technote от 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)

Другие советы

Вы можете сделать это, отредактировав файл sudoers вашей системы.Это позволит учетной записи, которую вы используете для запуска этого скрипта (через cron и т.д.), Запускать sudo без пароля.

Для редактирования файла sudoers вы используете visudo, но он должен быть запущен с правами администратора.Попробуй:

$ sudo visudo

Добавьте строку, подобную следующей, в конец файла, заменив имя_пользователя с пользователем, который будет запускать ваш скрипт.Обратите внимание, используйте вкладки между каждым полем.

user_name    ALL=(ALL)     NOPASSWD:ALL

Теперь имя_пользователя должно иметь возможность вводить sudo и не будет запрашиваться пароль.

Также обратите внимание, что visudo - это текстовый редактор, который отражает редактор vi и использует те же команды, что и vi.

У меня нет под рукой Mac, поэтому я не могу проверить, сработает ли это.

Попробуй убежать су -

Затем запускаем ваш скрипт.Если это сработает, попробуйте crontab -e

и добавление записи для запуска этого вашего скрипта.

Вы знакомы с crontab?хорошо, если нет, погуглите это, если понадобится.Но в принципе, чтобы запускать его каждый день в полночь, у вас было бы что-то вроде 0 * * * * / path/to/script

Видишь: http://en.wikipedia.org/wiki/Cron

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top