Автор |
Сообщение |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
Оно работало из-под меня, в ~/Library. А потом я перенёс всё к руту - и что-то не получается.
-rwxr-xr-x 1 root wheel 52 Jun 17 00:30 /var/root/my.sh
|
17 июн Вс, 2012 0:24:20 am 168 |
|
 |
parafin
Зарегистрирован: 05 мар Вс, 2006 16:29:15 pm 63 Сообщений: 2946 Откуда: Moscow, Russia
|
 Re: Компьютерный клуб
С макосью не знаком, но как я понимаю это что-то по типу крона, и ты пытаешься из-под юзера запустить скрипт из каталога рута, который по идеи недоступен обычным пользователям. Надо чтобы этот launchd пускал скрипт из-под рута
_________________ "Does believing you're the last sane man on the planet make you crazy? 'Cause if it does, maybe I am." "You see, the thing that makes sense of this crazy world is rock and roll"
|
17 июн Вс, 2012 0:28:43 am 168 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): Оно работало из-под меня, в ~/Library. А потом я перенёс всё к руту - и что-то не получается.
-rwxr-xr-x 1 root wheel 52 Jun 17 00:30 /var/root/my.sh А как ты перенес к руту? В LaunchAgents или LaunchDaemons? А launchctl пускал? От какого пользователя? И правильно Парафин вот говорит. У тебя запуск, наверное, от пользователя идет, у которого нет прав. Потому что системные дела в LaunchDaemons, а per-user - в LaunchAgents. UPD. Или дай более широкие права скрипту.
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
17 июн Вс, 2012 0:49:08 am 168 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): -rwxr-xr-x 1 root wheel 52 Jun 17 00:30 /var/root/my.sh И это... ты ж, наверное, в группе staff, а не wheel. Сделай-ка chown root:staff /var/root/my.sh?
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
17 июн Вс, 2012 2:41:13 am 168 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
Я же в /Library/LaunchAgents положил, чтобы запускалось из-под рута.
|
17 июн Вс, 2012 7:08:54 am 168 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): Я же в /Library/LaunchAgents положил, чтобы запускалось из-под рута. Короче, даже если положишь в /Library/LaunchAgents, оно запускается не из-под рута, а из-под админского эккаунта. Это плохо, надо делать sudo. Собсно, это защита от вирусов - так можно было бы положить в эту папку что угодно, и оно бы работало из-под рута… Как же мне решить мою задачу, Жень? На работе из локальной сети закрыт доступ на gmail, зато открыт из вайфайной. Я там каждый раз запускаю sudo route add сетка-gmail на wifi-gateway... Хочется автоматизировать этот процесс. И проблема именно в sudo.
|
17 июн Вс, 2012 8:25:54 am 168 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): Я же в /Library/LaunchAgents положил, чтобы запускалось из-под рута. Так в том-то и дело, что запускается скрипт все равно не от рута, а от пользователя. В /Library/LaunchAgents ты кладешь агентов, которых определил администратор и которые должны запускаться у пользователей при их логине. А в хомяк ты кладешь своих собственных агентов, которые только у тебя будут. http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html писал(а): The process for per-user agents is similar. When a user logs in, a per-user launchd is started. It does the following:
1. It loads the parameters for each launch-on-demand user agent from the property list files found in /System/Library/LaunchAgents, /Library/LaunchAgents, and the user’s individual Library/LaunchAgents directory.
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
17 июн Вс, 2012 9:40:44 am 168 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): Как же мне решить мою задачу, Жень? На работе из локальной сети закрыт доступ на gmail, зато открыт из вайфайной. Я там каждый раз запускаю sudo route add сетка-gmail на wifi-gateway... Хочется автоматизировать этот процесс. И проблема именно в sudo. Ну так в /Library/LaunchDaemons тогда клади. Тогда запуск от рута должен быть. И затем sudo launchctl load -w /Library/LaunchDaemons/my.plist
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
17 июн Вс, 2012 9:53:56 am 168 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
UPD. Да, и еще скажу. sudo ты можешь настроить так, чтобы он запускал программы без пароля. Вот только не помню, как там в Mac OS X выглядит файл /etc/sudoers. В Linux делаешь так:
%snk ALL = (root) NOPASSWD: /sbin/route
То есть создаешь специальную группу, в которой можно без пароля запускать route, и обзываешь ее snk, потом добавляешь себя в группу snk, перелогин. И вуаля - твой скрипт не потребует пароля от пользователя из группы snk. Или можешь дать права на route без пароля только себе. Тогда вместо %snk надо своего пользователя поставить без знака %. Или можешь добавить прав уже существующим группам.
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
17 июн Вс, 2012 10:14:56 am 168 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
sudo лучше чтоб был с паролем. Это человеческий фактор. Если не будет человеческого фактора, наш мир захватят машины.
|
17 июн Вс, 2012 16:21:03 pm 168 |
|
 |
parafin
Зарегистрирован: 05 мар Вс, 2006 16:29:15 pm 63 Сообщений: 2946 Откуда: Moscow, Russia
|
 Re: Компьютерный клуб
ну разрешить юзеру на десктопе запускать route имхо не страшно, он же ж небось и так имеет доступ к настройкам сети.
_________________ "Does believing you're the last sane man on the planet make you crazy? 'Cause if it does, maybe I am." "You see, the thing that makes sense of this crazy world is rock and roll"
|
17 июн Вс, 2012 16:44:03 pm 168 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): sudo лучше чтоб был с паролем. Это человеческий фактор. Если не будет человеческого фактора, наш мир захватят машины. Это я так, чтобы все возможности изложить. Тогда либо от рута выполнять в демонах, либо можно затребовать визуальной авторизации перед выполнением скрипта. Как-то так: /usr/bin/osascript -e 'do shell script "/var/root/my.sh" with administrator privileges'
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
17 июн Вс, 2012 18:34:23 pm 168 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
ЛанчДемон помог. После перезагрузки все стало стартовать от рута. Даже не пришлось launchctl запускать.
А в скрипте каждую минуту выпарсивается wifi-сеть и дальше уже обрабатывается, в зависимости от места.
|
17 июн Вс, 2012 21:47:02 pm 168 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): ЛанчДемон помог. После перезагрузки все стало стартовать от рута. Даже не пришлось launchctl запускать. А в скрипте каждую минуту выпарсивается wifi-сеть и дальше уже обрабатывается, в зависимости от места. Ага, круто. Только вот идея дергать скрипт каждую минуту - это, ИМХО, моветон. Как первое решение, чтобы хоть как-то заработало, годится. Твоя первая мысль, чтобы посадить на появление беспроводки, верная. Можно все-таки попробовать заменить твой таймер на изменение в AirPort: Код: <key>WatchPaths</key> <array> <string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string> <string>/var/run/resolv.conf</string> </array>
Это тоже, на самом деле, некий костылек - натравливать launchd, чтобы он отслеживал изменение файла кофигурации AirPort, но в Mac OS X простым способом пристроиться в configd нельзя - там надо помудрить. А способ слежения за файлом вполне себе быстрое решение, которое и используют.
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
17 июн Вс, 2012 23:02:33 pm 168 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
Ну так, да, не до конца технично. Я, правда, проверяю текущее состояние с требуемым, если они уже совпадают, то exit. http://developer.apple.com/library/mac/ ... ist.5.htmlТут среди ключей есть KeepAlive-NetworkState Завтра на работе уже испытаю. А пока это выглядит так: Код: #!/bin/bash
curlocation=`scselect | grep "*" | tail -1 | perl -pe "s/.*\((.*)\)/\1/"` wifinet=`ioreg -l -n AirPortDriver | grep IO80211SSID | perl -pe "s/.*=\ \"(.*)\"/\1/"` echo Wifi net: $wifinet if [[ $wifinet == "NIC-OPEN" ]] then echo "I'm in RU-CENTER" reqlocation="RU-CENTER" else echo "I'm not in RU-CENTER" reqlocation="Automatic" fi
echo Current location: $curlocation, Required location: $reqlocation
if [[ $reqlocation != $curlocation ]] then echo Changing location to $reqlocation scselect $reqlocation sleep 5 conf="/var/root/mailroute.conf" if [[ $reqlocation == "RU-CENTER" ]] then GW=`netstat -rn | grep -e default | grep en1 | awk '{print $2}'` for ip in `cat $conf` do route add $ip/24 $GW done else for ip in `cat $conf` do route delete $ip/24 done fi fi
|
18 июн Пн, 2012 0:07:31 am 169 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
Жень, а ты умеешь делать вот так? Хочешь научу? На винде такое вряд ли получится… 
|
19 июн Вт, 2012 8:40:58 am 170 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): Жень, а ты умеешь делать вот так? Хочешь научу? На винде такое вряд ли получится… Напугал ежа голой жопой!  Не знаю, как там в винде, но я думаю, что вообще без проблем это можно сделать. У себя же я могу использовать разные варианты: conky или там всякие скринлеты, десклеты (я не гномосек и не кедераст, поэтому не помню, как у них это точно зовется). Пишу скриптик, который либо грабит RSS, либо с сайта выпарсивает валютку, погодку, время и пр. Далее выводим. Но я этим всем не пользуюсь: меня курсы не интересуют, у природы нет плохой погоды, а число у меня там, где часики, да и обоина все время закрыта окнами. 
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
19 июн Вт, 2012 10:27:31 am 170 |
|
 |
ranger
Зарегистрирован: 17 янв Ср, 2007 15:05:40 pm 16 Сообщений: 2255
|
 Re: Компьютерный клуб
SNK писал(а): Жень, а ты умеешь делать вот так? Хочешь научу? На винде такое вряд ли получится…  7ка сама так делает...только я эти виджеты снес сразу, ибо надобности нету. ranger.
_________________ soulbrother of soulsister.
Andy! Remember us! We were your only Client!!!
Величие De/Vision недостижимо (с)
Типичный индастриал-Фронт242 вырос из Гоа, Гоагила, трансу брат родной. (c) ZABA
хомяк не при чем (с)
|
19 июн Вт, 2012 17:37:31 pm 170 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
GeekTool.
В общем, я сделал WatchPaths - это лучше всего. Жень, а где посмотреть список, какой файл в /Library/Preferences/SystemConfiguration/ за что отвечает?
|
19 июн Вт, 2012 18:13:52 pm 170 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): Жень, а где посмотреть список, какой файл в /Library/Preferences/SystemConfiguration/ за что отвечает? А это вещь в себе. Не документировано особо. Посмотреть и поменять ключи этих плистов можно, но полагаться на них нельзя (subject to change, don't rely, blah-blah-blah). По названиям файлов примерно можно понять, кто и за что отвечает. Если посмотришь man configd, то там есть список бандлов, которые этот configd запускает при конфигурации системы. Эти бандлы и сохраняют информацию в файлах из /Library/Preferences/SystemConfiguration/. Как прицепиться к ним со своими скриптами, никто не знает. Раньше было можно через kicker.bundle, теперь нельзя - убрали. Вообще, меня политика Apple удивляет. Бандлы, на самом деле, посылают системные сообщения, когда что-то сделают, но вот launchd не умеет на них реагировать. Есть SystemConfig API, но его из скриптов не достать. Вот для того, чтобы понять из launchd, что появилась сетка и приходится подставлять костыль через WatchFile. В Linux же все это скриптуется без проблем. А сейчас, кстати, новая фенька. Красношляпые проталкивают в Linux systemd (аналог launchd) как замену SysV Init. Многие сопротивляются.
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
19 июн Вт, 2012 23:16:14 pm 170 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
ranger писал(а): 7ка сама так делает...только я эти виджеты снес сразу, ибо надобности нету. Да, толку от этих свистелок никакого. У меня из индикаторов на таскбаре (то есть видно всегда) только сетевые интерфейсы (графики исходящего и входящего трафика - полезно), график нагрузки на процессор (полезно - сразу видно, что вдруг какой-то процесс начал жрать процессор) и график операций с накопителями.
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
19 июн Вт, 2012 23:23:30 pm 170 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
Это не совсем виджет. Это возможность вывести консольный sysout прямо на десктоп. Винда это делает через жопу, динамической картинкой, которая постоянно пересчитывается и держит для этого отдельный процесс. Мак тоже умеет делать виджеты, и держит их на отдельном экране. А тут - просто работа скрипта. Такого, например: Код: curl --silent "http://www.cbr.ru/eng/daily.aspx" | grep -A 4 'US Dollar' | tail -1 | perl -pe "s/.*>(.*)&.*/\1/ig" Виндовая командная строка убога, в ней такое сделать невозможно.
|
20 июн Ср, 2012 8:26:46 am 171 |
|
 |
ranger
Зарегистрирован: 17 янв Ср, 2007 15:05:40 pm 16 Сообщений: 2255
|
 Re: Компьютерный клуб
SNK писал(а): Это не совсем виджет. Это возможность вывести консольный sysout прямо на десктоп. Винда это делает через жопу, динамической картинкой, которая постоянно пересчитывается и держит для этого отдельный процесс. Мак тоже умеет делать виджеты, и держит их на отдельном экране. А тут - просто работа скрипта. Такого, например: Код: curl --silent "http://www.cbr.ru/eng/daily.aspx" | grep -A 4 'US Dollar' | tail -1 | perl -pe "s/.*>(.*)&.*/\1/ig" Виндовая командная строка убога, в ней такое сделать невозможно. проблема в том, что это и не нужно. а нужно - так есть WSH, достаточно мощный, чтобы и такое наверняка сделать. только зачем? ranger.
_________________ soulbrother of soulsister.
Andy! Remember us! We were your only Client!!!
Величие De/Vision недостижимо (с)
Типичный индастриал-Фронт242 вырос из Гоа, Гоагила, трансу брат родной. (c) ZABA
хомяк не при чем (с)
|
20 июн Ср, 2012 8:51:48 am 171 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): Виндовая командная строка убога, в ней такое сделать невозможно. Да лан, Серег, там же виндощель есть. Строка убогая, да, в винде другие подходы к автоматизации, не юникс-way. Если очень хочешь, то можешь cygwin поставить - будет POSIX. Во времена Windows 98 я активно этим пользовался.
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
20 июн Ср, 2012 14:32:22 pm 171 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
Ключевое слово "можешь поставить". Windows Script Host - это то, чем я пользовался 10 лет, когда админил виндовый хостинг. Тоска страшная.
|
20 июн Ср, 2012 17:24:40 pm 171 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
Жень, а как узнать, за каким файлом следить, чтобы понять, что отключилось питание и ноут перешёл на батарейку? И как отключить и включать подсветку яблока на крышке? Хочу ещё одного полезного демона написать… Да! Ещё один вопрос меня мучает, спать не даёт. Что за утопленная такая кнопочка на левой стороне, её нажимаешь - и рядом с ней бегут зелёненькие огоньки? И зачем эти огоньки нужны?  
|
20 июн Ср, 2012 21:00:41 pm 171 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
SNK писал(а): Да! Ещё один вопрос меня мучает, спать не даёт. Что за утопленная такая кнопочка на левой стороне, её нажимаешь - и рядом с ней бегут зелёненькие огоньки? И зачем эти огоньки нужны? Это Battery indicator lights.
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
20 июн Ср, 2012 23:04:02 pm 171 |
|
 |
Zubok
Зарегистрирован: 18 мар Вт, 2003 15:31:00 pm 76 Сообщений: 1558 Откуда: Москва
|
 Re: Компьютерный клуб
Цитата: Windows Script Host - это то, чем я пользовался 10 лет, когда админил виндовый хостинг. Знаю. Я один раз писал на базе WSH скрипт. Меня друг попросил сделать автоматическое подключение шифрованных TrueCrypt'ом разделов при логине, когда вставлена специальная такая флешечка с секретным ключиком.  SNK писал(а): Жень, а как узнать, за каким файлом следить, чтобы понять, что отключилось питание и ноут перешёл на батарейку? И как отключить и включать подсветку яблока на крышке? Хочу ещё одного полезного демона написать… Я повторю мысль: все эти слежения за файлами - костыли. С сетью прокатило, а вот с питанием уже может не прокатить. За питание у нас отвечает PowerManagement.bundle, информацию он берет из com.apple.PowerManagement.plist, который можно конфигурировать утиляткой pmset (man pmset). Но, судя по всему, никакой информации о текущем источнике питания там не содержится (я успел исходничек глянуть). И, скорее всего, вообще нигде не содержится, а передается по цепочке событий. Пока варианты я вижу такие: 1. По таймеру. Минус в том, что по таймеру галимо и то, что в момент события скрипт не сработает, скрипт сработает позже, когда launchd его снова запустит. Но это какой-никакой, а вариант. 2. Использовать сторонние программки, которые лицом смотрят в SystemConfiguration, а жопой на тебя и дают тебе возможность повесить свое действие на событие. Один вариант я уже выше приводил (crankd), еще вот ControlPlane. Все OpenSource. 3. Написать на C или ObjC самому, напрямую работая с API. Вот, например, кусок из ControlPlaneЭппл из коробки не дает возможности скриптовать эти действия (кикер убрали). А еще жалуешься на WSH. 
_________________ Чат настоящих дИпИшЫстов (вбивай любой ник и говори!)
|
21 июн Чт, 2012 0:38:16 am 172 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
Вообще я через некоторое время переписал всё то, что было написано на WSH, на C# - сразу стало более лучше смотреться.
|
21 июн Чт, 2012 7:17:07 am 172 |
|
 |
SNK
Зарегистрирован: 06 мар Чт, 2003 13:11:19 pm 64 Сообщений: 13881 Откуда: Москва
|
 Re: Компьютерный клуб
Блть… макбук не цепляется к проектору. Нет сигнала. Как это лечится?
|
04 июл Ср, 2012 13:12:38 pm 185 |
|
 |
|