Титла: Отдалечено управление Публикувано от: XaugyTuH в Dec 08, 2004, 17:32 Искам да направя следното нещо:
Чрез уеб страничка да си управлявам компютър, който се намира в локалната мрежа. Например като натисна бутонче и да се рестартира, с друго бутонче да се гаси, с трето да се стартира да речем някаква програма или да се килва някакъв процес например и каквото ми дойде там на ум. Предполагам, че за целта трябва да напиша програмка, която да работи на отдалеченият компютър и да слуша на даден порт за съобщения изпратени от мен чрез страничката и да върши съответната задача. Въпросът ми е как точно ще стане комуникацията с тази програмка, как ще приема командите? За предпочитане е да е на PHP. Ако някой ме насочи към нещо подобно ще съм много благодарен. Титла: Отдалечено управление Публикувано от: n_antonov в Dec 08, 2004, 17:36 Какво ти пречи да ползваш за целта Webmin?
А, искаш и да се стартира. Е, това вече е интересно как ще става през уебинтерфейс ![]() Титла: Отдалечено управление Публикувано от: betso в Dec 08, 2004, 18:04 PHP предлага възможност за изпълнение на системни команди по същия начин, както bash го прави - когато командата е в единични, наклонени кавички, например:
За да изпълняваш root-команди през web, ще се наложи да пуснеш webserver-а си като root, което не е добро решение. В случай, че наистина искаш да направиш подобно нещо, можеш да си направиш обикновена form-а на html, която да POST-ва зададената от теб команда на един php-скрипт, който да я изпълнява по посочения по-горе начин. Ако вкараш apache (или каквото там пуснеш) в sudoers може да постигнеш частично по-добро решение, макар че пак ще куца много сериозно по отношение на сигурността. Може би по-добрият вариянт за това, което искаш да направиш, е все пак ssh. :) Титла: Отдалечено управление Публикувано от: в Dec 08, 2004, 19:39 Друго (по-сложно) решение е клиент-сървър приложение. Сървърната част ще бъде на машината, която искаш да управляваш (демон без никакъв потребителски интерфейс, който например при стартиране да получава параметър на кой порт да слуша), а клиентската да се направи с графичен потребителски интерфейс. Реализира се прост протокол за комуникция, например
клиент сървър REBOOT рестартира SHUTDOWN гаси компютъра PS връща списък с процесите (разделени с някакъв символ) KILL #nomer убива процеса с PID #nomer и така нататък. Задачата не е сложна и може да ти послужи като стимул да се научиш да програмираш (ако не можеш де!). Успех! Титла: Отдалечено управление Публикувано от: в Dec 08, 2004, 19:44 Съжалявам, че изпуснах най-важното- езика за програмиране може да е С/С++ или perl (най-популярни). За клиента можеш да ползваш GTK модула за пърл, с който си правиш графичен интерфейс ;)
И все пак доста ще се поозориш докато постигнеш функционалността на ssh. Успех! Титла: Отдалечено управление Публикувано от: XaugyTuH в Dec 08, 2004, 19:56 Значи Webmin не го знам какво е, ще го погледна и дано да върши работа. Благодаря за съвета. А за стартирнето става въпрос за стартиране на приложения, а не за стартиране на компютъра.
@betso - схемата която си представям е следната. Страничката е да речем на PC1, аз я зареждам от PC2 и с форма или с бутон, (предполагам че няма значение) предавам командата на PC3, където както казваш работи скрипт, който изпълнява дадената команда. И през ума ми не е минавало да си пускам Апачето като рут. Въпросът ми е както вече казах: как точно от формата в страничката командата се предава на скрипта, който работи на друг компютър? Може да е нешо елементарно, обаче аз нещо не мога да вдяна. ![]() Благодаря отново и се надявам на по-детайлно обяснение. Титла: Отдалечено управление Публикувано от: XaugyTuH в Dec 08, 2004, 20:27 Понеже съм писал поста си докато wh331 е писал и не съм го прочел да добавя: идеята е точно да има скриптче, което работи като демон и приема команди, уеб страничката замества програмирането на графичен интерфейс, защото на мен така ми е по-лесно. Пак повтарям - проблемът ми е, че не знам как точно да реализирам комуникацията на клиента със сървъра. За някои може да е елементарно, обаче като за мен ако може едно обяснение няма да е зле.
![]() Титла: Отдалечено управление Публикувано от: empty в Dec 09, 2004, 03:24
Както човека вече каза WebMin е точно това което търсиш. http://webmin.com/ е адреса на WebMin. Много е полезен и дори за машината на която работиш защото можеш лесно да направиш настройки на всичко без да губиш време. Няма смисъл да правиш нещо което хората вече са го направили. Титла: Отдалечено управление Публикувано от: kostadinz в Dec 09, 2004, 10:27 можеш да направиш формата с php скрипт, който в една директория само създава файлче с пододящо име напр.:
halt.cmd killpid.3244 reboot restart.httpd restart.smb list_pids runme.sh ...... или да пишеш желания процес или демон, a защо не и скрипт вътре във файла. и в cron-a слагаш един скрипт дето да дебне наличието на файлчето. Ако го намери го трие и пуска съответната поредица команди. файла трябва да се намира в директория достъпна и за уеб сървъра и за cron демона Титла: Отдалечено управление Публикувано от: Йордан в Dec 09, 2004, 12:03 Може Апаха да не работи под роот, но трябва да се окаже дадения скрипт да се изпълнява от роот. Подобно нещо за иптаблес имаше на сайта. В тази статия беше обяснено за УИД=0
Успех Титла: Отдалечено управление Публикувано от: в Dec 09, 2004, 17:24 Здравей, XaugyTuH!
В интернет има доста материали, посветени на програмирането със сокети в РНР (например тук). Малко четене и няма да имаш никакъв проблем да се справиш. Но преди да започнеш експериментите, трябва да провериш дали РНР-то ти е компилирано с поддръжка на сокети. А именно, ако получиш съобщение за грешка, че функцията socket() не е дефинирана, трябва да прекомпилираш РНР като изпълниш конфигурирането с параметър
Успех! Титла: Отдалечено управление Публикувано от: в Dec 17, 2004, 18:04 probvaj da razbere6 kak dejstva HTTP
![]() Титла: Отдалечено управление Публикувано от: XaugyTuH в Dec 24, 2004, 06:05 Благодаря на всички за съветите. Работата ще стане.
![]() Последно се спрях на варианта 'клиент - сървър'. Както каза wh331 малко четене и всичко става. Идеята на kostadinz също е интересна. Може да я приложа в някой друг случай. А сега един друг въпрос, малко встрани от темата: може ли от уеб страница да се укаже по някакъв начин на браузъра, който я е заредил да я презарежда на определен интервал от време, да речем една минута, без да се налага да се натиска refresh бутона? И естествено, ако има начин, някакви напътствия как става това? Титла: Отдалечено управление Публикувано от: Йордан в Dec 24, 2004, 08:56 <meta http-equiv="refresh" content="300">
Това е за пет минути <meta http-equiv="refresh" content="60"> а това за една Титла: Отдалечено управление Публикувано от: XaugyTuH в Dec 25, 2004, 00:29 Мерси много GigaVolt.
![]() ![]() ![]() Съжалявам много обаче отдавна не съм се занимавал с програмиране и сега гледай за какви работи трябва да откривам топлата вода. ![]() ![]() Мерси отново и Весела Коледа на всички. Титла: Отдалечено управление Публикувано от: VladSun в Dec 30, 2004, 16:46 root@server:# chmod 6755 executable_file
Титла: Отдалечено управление Публикувано от: toxigen в Jan 25, 2005, 12:34 Ако все още мислиш да го правиш с уеб интерфейс ето начина:
имаш два скрипта на PHP (каза, че предпочиташ), единия е този, който изпълнява нещата, т.е. този, който ще ти командва компютъра и е примерно следния: execute.php
Това е най-простия вариант. От друга страна имаш един HTML файл, който ти се явява в браузъра, например: admin.html
Това е схемата накратко. Естествено ще трябва да си го доработиш, но ако създадеш тези два файла в някоя директория на апаха и отвориш в браузъра admin.html ще можеш да си изпълниш каквото искаш. Ако искаш и да ти връща изхода от командата пак има начини - виж psopen в php.net Надявам се да е полезно поне за някой друг път (сега ще го правиш клиент сървър) Титла: Отдалечено управление Публикувано от: Йордан в Jan 25, 2005, 12:57 да, но няма начин да пуснеш нещо с UID=0
![]() Титла: Отдалечено управление Публикувано от: toxigen в Jan 25, 2005, 14:18 То има ама никой не иска да става така.... Само показах схемата.
Иначе варианта със сокетите е добър, но мисля че клинтската програма ще му отнеме повече време отколкото очаква..... |