Автор Тема: Отдалечено управление  (Прочетена 3890 пъти)

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Отдалечено управление
« -: Dec 08, 2004, 17:32 »
Искам да направя следното нещо:
Чрез уеб страничка да си управлявам компютър, който се намира в локалната мрежа. Например като натисна бутонче и да се рестартира, с друго бутонче да се гаси, с трето да се стартира  да речем някаква програма или да се килва някакъв процес например и каквото ми дойде там на ум. Предполагам, че за целта трябва да напиша програмка, която да работи на отдалеченият компютър и да слуша на даден порт за съобщения изпратени от мен чрез страничката и да върши съответната задача.
Въпросът ми е как точно ще стане комуникацията с тази програмка, как ще приема командите?
За предпочитане е  да е на PHP.
Ако някой ме насочи към нещо подобно ще съм много благодарен.
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.

n_antonov

  • Напреднали
  • *****
  • Публикации: 1185
    • Профил
    • WWW
Отдалечено управление
« Отговор #1 -: Dec 08, 2004, 17:36 »
Какво ти пречи да ползваш за целта Webmin?

А, искаш и да се стартира. Е, това вече е интересно как ще става през уебинтерфейс'<img'>
Активен

-------------------------------------------------------------------------
./debian/rules

betso

  • Напреднали
  • *****
  • Публикации: 281
    • Профил
Отдалечено управление
« Отговор #2 -: Dec 08, 2004, 18:04 »
PHP предлага възможност за изпълнение на системни команди по същия начин, както bash го прави - когато командата е в единични, наклонени кавички, например:
Цитат
`echo "running apache as root is not a good idea"`

За да изпълняваш root-команди през web, ще се наложи да пуснеш webserver-а си като root, което не е добро решение. В случай, че наистина искаш да направиш подобно нещо, можеш да си направиш обикновена form-а на html, която да POST-ва зададената от теб команда на един php-скрипт, който да я изпълнява по посочения по-горе начин.
Ако вкараш apache (или каквото там пуснеш) в sudoers може да постигнеш частично по-добро решение, макар че пак ще куца много сериозно по отношение на сигурността.
Може би по-добрият вариянт за това, което искаш да направиш, е все пак ssh. :)
Активен

  • Гост
Отдалечено управление
« Отговор #3 -: Dec 08, 2004, 19:39 »
Друго (по-сложно) решение е клиент-сървър приложение. Сървърната част ще бъде на машината, която искаш да управляваш (демон без никакъв потребителски интерфейс, който например при стартиране да получава параметър на кой порт да слуша), а клиентската да се направи с графичен потребителски интерфейс. Реализира се прост протокол за комуникция, например

клиент               сървър
REBOOT              рестартира
SHUTDOWN         гаси компютъра
PS                     връща списък с процесите (разделени с някакъв символ)
KILL #nomer        убива процеса с PID #nomer

и така нататък.
Задачата не е сложна и може да ти послужи като стимул да се научиш да програмираш (ако не можеш де!).

Успех!
Активен

  • Гост
Отдалечено управление
« Отговор #4 -: Dec 08, 2004, 19:44 »
Съжалявам, че изпуснах най-важното- езика за програмиране може да е С/С++ или perl (най-популярни). За клиента можеш да ползваш GTK модула за пърл, с който си правиш графичен интерфейс ;)
И все пак доста ще се поозориш докато постигнеш функционалността на ssh.

Успех!
Активен

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Отдалечено управление
« Отговор #5 -: Dec 08, 2004, 19:56 »
Значи Webmin не го знам какво е, ще го погледна и дано да върши работа. Благодаря за съвета. А за стартирнето става въпрос за стартиране на приложения, а не за стартиране на компютъра.
@betso - схемата която си представям е следната. Страничката е да речем на PC1, аз я зареждам от PC2 и с форма или с бутон, (предполагам че няма значение) предавам командата на PC3, където както казваш работи скрипт, който изпълнява дадената команда. И през ума ми не е минавало да си пускам Апачето като рут. Въпросът ми е както вече казах: как точно от формата в страничката командата се предава на скрипта, който работи на друг компютър? Може да е нешо елементарно, обаче аз нещо не мога да вдяна.  '<img'>  Търсих насам натам, изчетох документацията на socket командите, обаче пак не мога до го измисля.
Благодаря отново и се надявам на по-детайлно обяснение.
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Отдалечено управление
« Отговор #6 -: Dec 08, 2004, 20:27 »
Понеже съм писал поста си докато wh331 е писал  и не съм го прочел  да добавя: идеята е точно да има скриптче, което работи като демон и приема команди, уеб страничката замества програмирането на графичен интерфейс, защото на мен така ми е по-лесно. Пак повтарям - проблемът ми е, че не знам как точно да реализирам комуникацията на клиента със сървъра. За някои може да е елементарно, обаче като за мен ако може едно обяснение няма да е зле.  '<img'>  И понеже съм си избрал да е на PHP ако може да е за този език.
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.

empty

  • Напреднали
  • *****
  • Публикации: 893
  • Distribution: Gentoo
  • Window Manager: KDE
  • Alien Invader
    • Профил
    • WWW
Отдалечено управление
« Отговор #7 -: Dec 09, 2004, 03:24 »
Цитат (n_antonov @ Дек. 08 2004,18:36)
Какво ти пречи да ползваш за целта Webmin?

А, искаш и да се стартира. Е, това вече е интересно как ще става през уебинтерфейс'<img'>

Както човека вече каза WebMin е точно това което търсиш.
http://webmin.com/ е адреса на WebMin. Много е полезен и дори за машината на която работиш защото можеш лесно да направиш настройки на всичко без да губиш време. Няма смисъл да правиш нещо което хората вече са го направили.
Активен

Powered by 220 Volts.

kostadinz

  • Напреднали
  • *****
  • Публикации: 197
    • Профил
Отдалечено управление
« Отговор #8 -: Dec 09, 2004, 10:27 »
можеш да направиш формата с php скрипт, който в една директория само създава файлче с пододящо име напр.:
halt.cmd
killpid.3244
reboot
restart.httpd
restart.smb
list_pids
runme.sh   ......
или да пишеш желания процес или демон, a защо не и скрипт вътре във файла.
и  в cron-a слагаш един скрипт дето да дебне наличието на файлчето. Ако го намери го трие и пуска съответната поредица команди.
файла трябва да се намира в директория достъпна и за уеб сървъра и за cron демона
Активен

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Отдалечено управление
« Отговор #9 -: Dec 09, 2004, 12:03 »
Може Апаха да не работи под роот, но трябва да се окаже дадения скрипт да се изпълнява от роот. Подобно нещо за иптаблес имаше на сайта. В тази статия беше обяснено за УИД=0

Успех
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

  • Гост
Отдалечено управление
« Отговор #10 -: Dec 09, 2004, 17:24 »
Здравей, XaugyTuH!
В интернет има доста материали, посветени на програмирането със сокети в РНР (например тук). Малко четене и няма да имаш никакъв проблем да се справиш. Но преди да започнеш експериментите, трябва да провериш дали РНР-то ти е компилирано с поддръжка на сокети. А именно,  ако получиш съобщение за грешка, че функцията socket() не е дефинирана, трябва да прекомпилираш РНР като изпълниш конфигурирането с параметър
Цитат
./configure --enable-sockets

Успех!
Активен

  • Гост
Отдалечено управление
« Отговор #11 -: Dec 17, 2004, 18:04 »
probvaj da razbere6 kak dejstva HTTP '<img'> ne e slojen protokol i e to4no tova koeto ti trqbva... ako dyrjish da ne polzvash gotova programa
Активен

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Отдалечено управление
« Отговор #12 -: Dec 24, 2004, 06:05 »
Благодаря на всички за съветите.  Работата ще стане.  '<img'>
Последно се спрях на варианта 'клиент - сървър'. Както каза wh331 малко четене и всичко става.
Идеята на kostadinz също е интересна. Може да я приложа в някой друг случай.
А сега един друг въпрос, малко встрани от темата: може ли  от уеб страница да се укаже по някакъв начин на браузъра, който я е заредил да я презарежда на определен интервал от време, да речем една минута, без да се налага да се натиска refresh бутона? И естествено, ако има начин, някакви напътствия как става това?
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
Отдалечено управление
« Отговор #13 -: Dec 24, 2004, 08:56 »
<meta http-equiv="refresh" content="300">
Това е за пет минути
<meta http-equiv="refresh" content="60">
а това за една
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

XaugyTuH

  • Напреднали
  • *****
  • Публикации: 267
    • Профил
    • WWW
Отдалечено управление
« Отговор #14 -: Dec 25, 2004, 00:29 »
Мерси много GigaVolt.  '<img'>  '<img'>  '<img'>
Съжалявам много обаче отдавна не съм се занимавал с програмиране и сега гледай за какви работи трябва да откривам топлата вода.  '<img'>  Ама ще се оправим. Като пораснем.  '<img'>  Сега ако ми кажеш и къде по сайта има статия за стартирането на скриптове (или каквото и да е) като root, цена няма да имаш.Аз не намерих.
Мерси отново и Весела Коледа на всички.
Активен

Когато говорите, трябва думите ви да бъдат по-добри от мълчанието!

Не правете от мухата слон. Разходите са прекалено големи.