Что нового
Теневой форум

Добро пожаловать на FSELL- крупнейший теневой форум. У нас Вы сможете найти огромное количество заработка в интернете, купить паспорт, ксиву, оружие, куча многих товаров и услуг, в виде пробива, взлома, нанять киллера. Все это Вы найдете на нашем форуме! Не пренебрегайте услугами Гарант-Сервиса, это убережет Вас от мошенников.

Если ты пользователь mac os, то гляди сюда...

Prophet

Я вижу будущее!И ты по прежнему клепаеш говнокод
СЛИВ.Материала 2018.Да я знаю что многие видели, но не новореги (в большинстве случаев)
АВТОМАТИЗИРУЕМ MACOS ПРИ ПОМОЩИ PYTHON И LAUNCHCTL

Launchctl — это утилита, которая знакома каждому опытному маководу, но при этом многие избегают связываться с ней лишний раз. А зря! Этот универсальный лаунчер — один из важнейших компонентов системы. Изучив его нас тройки, ты сможешь делать массу интересных и полезных вещей. Я покажу три при мера того, как launchctl может при годиться в жизни.

Благодаря гибкости нас троек launchd, этот сервис заменил в macOS целый список более старых систем, которые пришли из Unix. Он управляет процессом загрузки ОС и сервисов (вместо init), он реагирует на подключения по сети (вместо inetd), он же запускает скрип ты по времени (вместо cron) и при разных условиях. Мы воспользуемся этими богатыми возможностями для настройки всякой автоматизации: запуска скриптов по времени, срабатывания при помещении файла в папку, при изменении файла и при подключении внешнего носителя. Я буду писать именно про launchctl, поскольку работаю в macOS, но если ты предпочитаешь Linux, то можешь позаимствовать идеи и скрипты, которые мы будем писать, и про делать все то же самое при помощи systemd. Эта система похожа на launchd и есть во многих современных дистрибутивах. Однако ее настройки в корне отличаются, и параллельно разбирать еще и их я не возьмусь.
АГЕНТЫ И ДЕМОНЫ Файлы с правилами — это XML с расширением .plist. Внутри содержатся инструкции, которые указывают launchd, что и когда запускать. Эти файлы разложены в системе по пяти папкам:
• ~/Library/LaunchAgents — агенты текущего пользователя;
• /Library/LaunchAgents— агенты для всех пользователей;
• /Library/LaunchDaemons — демоны для всех пользователей;
• /System/Library/LaunchAgents — системные агенты (входят в состав macOS);
• /System/Library/LaunchDaemons— системные демоны.
Отличие агентов от демонов довольно тонкое: демоны — это процессы, которые запускаются сразу после загрузки машины, а агенты могут работать только после логина в систему (соответственно, демонов для конкретного пользователя не бывает). К тому же демоны после активирования работают непрерыв но, а агенты обычно срабатывают при определенных условиях. Делать мы будем именно агенты и для личного пользования, так что первая папка из списка подойдет как нельзя лучше.
ПРОСТОЙ КОНФИГ: ЗАПУСК ПО ВРЕМЕНИ Начнем с самого простого — запуска чего‐нибудь в определенное время. Вот как выглядит один из самых простых вариантов конфига.
Код:
<?xml version="1.0" encoding="UTF‐8"?>
<!DOCTYPE plist PUBLIC "‐//Apple//DTD PLIST 1.0//EN" "http://www. apple.com/DTDs/PropertyList‐1.0.dtd">
<plist version="1.0">
<dict>     
        <key>Label</key>     
       <string>название</string>     
       <key>ProgramArguments</key>    
       <array>            
                    <string>путь к файлу</string>     
      </array>     
      <key>StartCalendarInterval</key>     
      <dict>             
                  <key>Minute</key><integer>30</integer>             
                  <key>Hour</key><integer>1</integer>             
                 <key>Day</key><integer>6</integer>     
     </dict>
</dict>
</plist>

Несмотря на развесистый вид, структура здесь довольно несложная. Внутри основного словаря ( ) идут ключи и следом — параметры к ним. Иногда это строки, иногда массивы, иногда вложенные словари. <dict> За меняй слово «название» на какое‐нибудь название (обычно «com.домен.имя» — я, например, наз вал тестовый агент ), укажи путь к исполняемому файлу в качестве первого параметра , а затем задай, во сколько и по каким дням запускать. com.and.launchtest ProgramArguments

В примере выставлено время 1:30 каждую субботу. Если ты снесешь ключ Day, скрипт начнет запускаться в половине второго каждую ночь, а если уберешь и , то каждые пол часа. Думаю, ты понял идею. Аналогичная запись в crontab выглядела бы как Day Hour.
[CODE
]0 30 1 * 6 <путь к файлу>
[/CODE]
Если команда, которую ты запускаешь, принимает аргументы, то их нужно перечислить после пути, добавив дополнительные поля . Например:
Код:
<key>ProgramArguments</key>
<array>     
               <string>say</string>    
  <string>В Петропавловске‐Камчатском полночь</string> </array>
<key>StartCalendarInterval</key>
<dict>     
        <key>Minute</key><integer>0</integer>        <key>Hour</key><integer>15</integer>
</dict>

Когда все будет готово, сохраняем файл в ~/Library/LaunchAgents/ . Хорошей идеей будет сразу прописать в названии условия запуска, что бы потом было легче ориентироваться. Например, мой тестовый конфиг я сохранил как com.and.launchtest.StartInterval.plist

ТОНКОСТИ АКТИВАЦИИ К сожалению, обратная сторона гибкости — это развесистость настроек. Даже включать и выключать конфиги launchd можно несколькими способами. Вот старый и наиболее простой. Для загрузки пиши:
Код:
$ launchctl load ‐w ~/Library/LaunchAgents/<конфиг.plist>

И для выгрузки:
Код:
$ launchctl unload ‐w ~/Library/LaunchAgents/<конфиг.plist>

Ключ -w заодно включает флаг enabled, что экономит нам один шаг (Launchctl enable ) и сразу активирует конфиг. Помни, что после загрузки компьютера и входа в систему все агенты, лежащие в соответствующих папках, будут загружены автоматически. Именно поэтому при выгрузке удобно тоже добавлять — тог да launchctl запомнит, что конфиг неактивен.

Можешь спокойно пользоваться этими командами, однако если откроешь man, то узнаешь, что они считаются устаревшими и поддерживаются лишь для совместимости. Более правильный способ — использовать команды bootstrap и bootout . Они требуют указывать, помимо пути к файлу конфигурации, domain‐target, который состоит из домена и UID пользователя. Целиком команды будут выглядеть вот так:
Код:
$ launchctl bootstrap gui/<твой UID> <путь к файлу>

И для выгрузки:
Код:
$ launchctl bootout gui/<твой UID> <путь к файлу>

Узнать свой UID можешь командой id -u. Первый пользователь компьютера обычно записан под номером 502.
Другая команда, которую хорошо помнить, — это list . Что бы проверить, какие из твоих конфигов загружены, можешь написать:
Код:
$ launchctl list | grep <название>

Опять же — существует более современный, более продвинутый и, конечно, более замороченный метод:
Код:
$ launchctl print <домен>/<UID>

На выходе будет куда больше информации, чем при запросе списка. Но опять же, использовать совершенно не обязательно. В ответ на вопрос о том, когда устаревшие команды перестанут работать, кто‐то из раз работчиков ответил на форуме, что на старый синтаксис слишком много завязано, что бы убирать его.

Если интересно как применять в жизни, то покажите что вам это нужно.Примеры будут такие:"НАСТРАИВАЕМ СКАЧИВАНИЕ СЕРИАЛОВ ", "ПИШЕМ СВОЙ «ДРОПБОКС»", "БЭКАПИМ И ШИФРУЕМ ДАННЫЕ ПРИ ПОДКЛЮЧЕНИИ ФЛЕШКИ ","ДРУГИЕ ВОЗМОЖНОСТИ ".

P.S.Работает на некотрых сборках линукса.
 
Последнее редактирование:

HOTLINE

Доверенный продавец
Supreme
Продавец
Продвинутый
Кто в таком форуме будет пользоваться mac-ом ????
 
Вверх