Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

Cron a uruchomienie aplikacji z uprawnieniami...


  • Zaloguj się, aby dodać odpowiedź
17 odpowiedzi w tym temacie

#1 Iseeutoo

Iseeutoo
  • 433 postów
  • SkądSea Side

Napisano 07 kwietnia 2012 - 12:41

Witam, Mam dosyc nietypowy problem z Cronem. Stworzylem przy pomocy AppleScript aplikacje ktora wykonuje w shellu procedure nadania uprawnien na czas realizacji skryptu oraz naprawia uprawnienia systemowe. Dziala poprawnie po wywolaniu recznym niestety Cron nie potrafi jej poprawnie wywolac i tu glupieje nie wiem co moze byc przyczyna. Zwrot z Crona to "diskutil" aplikacja sie nie odpala i za jakis czas probuje znow ja wywolac bo jest ustaiony na piaty dzien tygodnia. Znow bez skutkow. Jakis pomysl? chce zautomatyzowac naprawianie uprawnien, pozbywanie sie cache kernela oraz reboot z odpaleniem idefrag i defragmentacja co piatek wieczor.

#2 ftpd

ftpd

    Nie.


  • 24 350 postów
  • Płeć:
  • SkądPoznań

Napisano 07 kwietnia 2012 - 15:22

Pokaż linijkę z crontaba. ('Naprawianie uprawnień jest głupie - wiesz o tym?)

#3 Iseeutoo

Iseeutoo
  • 433 postów
  • SkądSea Side

Napisano 07 kwietnia 2012 - 16:18

Zalezy w jakim zastosowaniu. Nie jest glupie a przy duzym "zonglowaniu" na plikach wrecz wskazane raz na jakis czas by miec pewnosc ze wszystko wykonuje sie poprawnie. "$ crontab -l * * * * 5 open -a /Applications/Scripts/RepPerm.app " Apps jest dokladnie w tym miejscu z uwzglednieniem wielkosci liter w sciezkach itp oraz cron go widzi i odpala wnioskuje po komunikacie bledu "diskutil" skad by mial wiedziec jak nie z appki ze appka naprawia uprawnienia przy pomocy diskutility. PS. Nie dyskutujmy na temat slusznosci operacji ktora chce wykonywac cyklicznie a skupmy sie na problemie bo sprawa ma sie podobnie z innymi appkami np do pozbywania sie cache kernela.

#4 macieks72

macieks72

  • 9 873 postów

Napisano 07 kwietnia 2012 - 18:06

Czyli co, cron działa i uruchamia ten twój skrypt? Z tego co piszesz zrozumiałem że tak, aczkolwiek mam problem z przetrawieniem tego co napisałeś wyżej, więc mogę się mylić, ale jeśli tak to pokaż sam skrypt bo widocznie tam coś jest nie tak.

#5 Iseeutoo

Iseeutoo
  • 433 postów
  • SkądSea Side

Napisano 07 kwietnia 2012 - 18:13

Cron go rusza do ktoregos momentu ale nie wykonuje do konca. Ze skryptem jest wszystko ok bo po wywolaniu recznie "dwuklikiem" odpala sie i wykonuje swoja robote po czym samoczynnie zostaje zamkniety.

Nie wiem co o tym myslec dochodze do absurdalnych wnioskow jakoby cron nie wiedzial co dalej z ta appka zrobic po zlokalizowaniu jej i dojsciu do momentu uzycia diskutility... a moze po prostu wykonywanie funkcji diskutility w shellu wywolana poprzez aplikacje napisana w AppleScript oraz odpalona przez serwis crona budzi jakies problemy?

Zglupialem totalnie dlatego pisze tutaj. Spodziewam sie ze latwiej by bylo stworzyc skrypt basha i dac go do wykonywania cronowi lecz na przyszlosc nie rozwiazuje to problemu bo co jesli bede chcial odpalic cudza aplikacje?

Tutaj jest zawartosc applikacji stworzonej w AppleScript.

do shell script "sudo diskutil repairPermissions /" ¬
password "yourAdminPassword"


Oczywiscie haslo jest prawidlowe oraz jak pisalem wyzej appka odpalona recznie dziala poprawnie.

#6 ftpd

ftpd

    Nie.


  • 24 350 postów
  • Płeć:
  • SkądPoznań

Napisano 07 kwietnia 2012 - 18:31

A dlaczego: a) nie robisz z cronjoba tego, co masz w 'do shell script'? B) wskazujesz na .app, zamiast do rzeczywistej 'binarki'? Co jest pisane do logów?

#7 Iseeutoo

Iseeutoo
  • 433 postów
  • SkądSea Side

Napisano 07 kwietnia 2012 - 18:46

ftpd, a to robi roznice jesli uzywam open -a jako argumentu? :) bo wydaje mi sie ze nie. I jak wyzej pisalem wiem ze lepszym rozwiazaniem bedzie bash script lecz opisalem problem ktory zaobserwowalem by zrozumiec przyczyne oraz na pryszlosc uniknac podobnej sytuacji z *.app. Bo uzyskac efekt w inny sposob potrafie. Gdzie znajde logi crona? jako output podaje mi "diskutil"

#8 ftpd

ftpd

    Nie.


  • 24 350 postów
  • Płeć:
  • SkądPoznań

Napisano 07 kwietnia 2012 - 18:48

Zrób mi przykładowe .app robiące ls ~ >> ~/pik i podeślij, 'na sucho' to nie wiem, a nie będę się uczył AppleScriptu.

#9 Iseeutoo

Iseeutoo
  • 433 postów
  • SkądSea Side

Napisano 07 kwietnia 2012 - 18:53

Odpal AppleScript w nim wpisz

do shell script "komenda z konsoli"


Voila.

#10 ciasteczkowy666

ciasteczkowy666
  • 187 postów

Napisano 07 kwietnia 2012 - 19:00

Dlaczego zamiast uruchamiać skrypt przez sudo, nie dodasz go po prostu do crontabu roota?

#11 Iseeutoo

Iseeutoo
  • 433 postów
  • SkądSea Side

Napisano 07 kwietnia 2012 - 19:07

Sluszna uwaga. Z drugiej strony czy nie bedac zalogowanym w sesji "roota" zadania z tablicy crona dla uzytkownika root beda wykonywane? Dobra skreslam to co napisalem wyzej to bylo totalnie bez sensu. Masz racje, dopiero zrozumialem co masz na mysli i sam sobie odpowiedzialem na swoje durne pytanie. :) Mimo to dalej nie chodzi tu o osiagniecie celu w sensie naprawy uprawnien cyklicznie lecz zrozumienie dlaczego wystepuje taki problem. Cron powinien po prostu wywolac komende w konsoli na odpalenie tej aplikacji tak jak ja bym to zrobil z palca a dalej to juz go nic nie powinno obchodzic. A z palca dziala.

#12 ciasteczkowy666

ciasteczkowy666
  • 187 postów

Napisano 08 kwietnia 2012 - 13:51

Myślę, że rozchodzi się o sudo. Sudo odczytuje hasło z temrinala, a cron, przypuszczam, nie jest podpięty do żadnego "temrinala", więc sudo nie ma jak pobrać hasła. Można próbować konfigurować sudo, poprzez plik /etc/sudoers, by nie pytało o hasło w tym konkretnym przypadku, jeśli mam rację z moim przypuszczeniem, powinno pomóc.

#13 Iseeutoo

Iseeutoo
  • 433 postów
  • SkądSea Side

Napisano 08 kwietnia 2012 - 18:41

Tez o tym myslalem tylko nie wiem jak zweryfikowac poprawnosc tezy.

#14 ftpd

ftpd

    Nie.


  • 24 350 postów
  • Płeć:
  • SkądPoznań

Napisano 08 kwietnia 2012 - 21:19

Pytanie o hasło to jedno, wymaganie 'terminala' to drugie. Jeśli z crona działa sudo bez hasła, wyłącz w sudoers dyrektywę RequireTTY.

#15 ciasteczkowy666

ciasteczkowy666
  • 187 postów

Napisano 08 kwietnia 2012 - 22:03

Nie wiem jak w OSX ale na innych uniksach sudo potrzebuje TTY właśnie po to żeby przeczytać hasło - nie czyta go przecież z stdin.

#16 ftpd

ftpd

    Nie.


  • 24 350 postów
  • Płeć:
  • SkądPoznań

Napisano 08 kwietnia 2012 - 22:38

No ale zakładam, że skoro ktoś wykonuje sudo z crona, to ma NOPASSWD - jaki byłby sens wykonywać z crona coś, co wymaga ręcznej ingerencji użytkownika? Przy NOPASSWD tty nie jest potrzebne.

#17 Iseeutoo

Iseeutoo
  • 433 postów
  • SkądSea Side

Napisano 09 kwietnia 2012 - 07:26

Nie wykonuje sudo z poziomu crona a aplikacji ktorą wywoluje cron... ta w pewnym momencie nadaje sobie uprawnien do wykonania wlasciwej czesci zadania poprzez sudo. I z pominieciem crona to funkcjonuje. Sadze ze najblizej prawy jest ciasteczkowy jak wroce do domu sprawdze jego sposobem i napisze jak wyglada sprawa.

#18 ftpd

ftpd

    Nie.


  • 24 350 postów
  • Płeć:
  • SkądPoznań

Napisano 09 kwietnia 2012 - 13:04

Jeśli masz gdziekolwiek sudo wykonywane poza tty, MUSISZ wywalić requiretty.




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych