Титла: Стартиране на процес под Линукс чрез уеб форма Публикувано от: fenix94 в Mar 15, 2011, 23:44 Скрипт за стартиране на процес под линукс, след въвеждане на уеб форма и проверката й дали е вярна.
1. Юзърът попълва уеб форма и въвежда код. 2. Скриптът проверява този код и ако е верен започват следните действия 3. Автоматично се пуска зададеното приложение с параметрите, които са попълнени в уеб частта.(Това трябва да тръгне под Линукс, но не знам как трябва да стане.) 4. Настроено е задачата да върви определено време, след което автоматично да бъде спряна. Скриптът за проверка на код е ясен. Остават останалите неща. Някакви идеи? Благодаря за помощта предварително! Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: shoshon в Mar 16, 2011, 00:46 string system ( string $command [, int &$return_var ] ) ($2) Ще свърши работа.
Интересна е часта с спирането след определено време. Най-лесния отговор е: стартираш приложението и след определено време го убиваш по негов pid. Не знам обаче дали pid-овете не могат да се дублират. Или дали няма да напълниш системата с таймери. Добре ще е след като задачата приключи да убие и собствения си таймер. Ето моята имплементация: Файл start_task.sh Код
chmod +x start_task.sh за да стане файла изпълним и после си знаеш ;) Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: romeo_ninov в Mar 16, 2011, 09:05 А някой замисля ли се че процеса ще се стартира като потребителя, който е стартирал уеб сървъра?
Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: spec1 в Mar 16, 2011, 10:04 А ти замисли ли се за SUID флага.
По принцип скрипта ,написан от колегата по-горе е добър, но трябва да се помисли като какъв потребител се пуска процеса. Феникс, виж как точно се пуска уеб сървъра, с какви права и , разбира се,внимавай със сигурността ... Потърси в мрежата инфо за SUID ... Успех ! Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: romeo_ninov в Mar 16, 2011, 10:17 А ти замисли ли се за SUID флага.SUID на шел скрипт? Добре...... Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: VladSun в Mar 16, 2011, 10:21 fenix94, какво точно искаш да направиш? Имам известни подозрения, че се оптиваш да решиш проблем по грешен начин.
SUID shell script + аргументи взети от уеб форма звучи страшно... Внимавай! Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: VladSun в Mar 16, 2011, 10:23 string system ( string $command [, int &$return_var ] ) ($2) Ще свърши работа.+ escapeshellarg ($2) Не знам обаче дали pid-овете не могат да се дублират.не Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: spec1 в Mar 16, 2011, 10:55 Ееее,все пак предупредих човека да внимава.
Ако скрипта е написан както трябва ,рисковете се свеждат до минимум. Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: Naka в Mar 16, 2011, 10:55 Цитат Най-лесния отговор е: стартираш приложението и след определено време го убиваш по негов pid Това и на мен ми идвало до главата, обаче си мисля че не е много правилно да се убива процес по pid? pid-овете се променят динамично. Какво би станало ако междувременно този процес дето си го стартирал умре - а някой друг процес след това се стартира със същият пид- в резултат може да убиеш друг процес. Незнам обаче какъв е правилният начин??? Използването на escapeshellarg е изключително важно! Този дето попълва формата може да въведе "" или разни други работи и в резултат да излъже скрипта ти да изпълни и друга shell команда. http://en.wikipedia.org/wiki/Code_injection#Shell_injection Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: romeo_ninov в Mar 16, 2011, 12:22 fenix94, какво точно искаш да направиш? Имам известни подозрения, че се оптиваш да решиш проблем по грешен начин.Хора, вие мислите ли понякога? До сега не съм виждал UNIX/Linux да взима под внимание SUID при шел скрипт! Код: [otamgr]/home/otamgr>uname -a Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: VladSun в Mar 16, 2011, 12:28 Благодаря за язвителната забележка, Ромео.
Имах предвид по-скоро нещо от сорта на: Код
Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: romeo_ninov в Mar 16, 2011, 12:32 Благодаря за язвителната забележка, Ромео.А защо виждам това по-долу? ....И моля, няма нужда да ми благодарите за информацията Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: VladSun в Mar 16, 2011, 12:34 ...
Титла: Re: Стартиране на процес под Линукс чрез уеб форма Публикувано от: ivanatora в Mar 16, 2011, 19:29 Не знам обаче дали pid-овете не могат да се дублират.не Да се дублират - не, но броячът на PID-овете не е безкраен: cat /proc/sys/kernel/pid_max След като overflow-не брояча - логично започва от начало от нулата като дава свободните за момента номера. Т.е. ако току що е приключил процес с PID 1000 няма гаранция че след време няма да имаш съвсем друг произволен процес с този същия PID. |