Выключение компа с помощью php
Модератор: Модераторы разделов
-
McLeod095
- Сообщения: 477
- ОС: Люблю слаку
Выключение компа с помощью php
Имею маршрутизатор на линухах. т.к. никто кроме меня с ентим чудом не дружит встала проблема. Когда кому то надо выйти в инет включают комп с линухами и ходят, но так как меня дома не бывает днями то выключают они его при помощи кнопки power. мне это не совсем нравится вот и решил что нибудь сделать так чтобы выключали нормально. решил сделать через веб сервер с php. сервер запускается с правами пользователя www группы www как мне написать скрипт чтобы выполнял команду халт на сервере через веб мордочку не давая прав на команду halt пользователю www и не раскрывая пароля root??????
"Work PC" E6750/2GB/Asus P5B Deluxe/2x250GB/6600GT 128/Slackware Current (Win 2003 in VmWare)
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Выключение компа с помощью php
а как ты себе это представляешь? чтобы пользователь www выполнял команду halt не имея на это прав?
а в чем проблема вообще с выключением? открути кнопку выключения от материнки, и нехай себе работает 24x7.
а в чем проблема вообще с выключением? открути кнопку выключения от материнки, и нехай себе работает 24x7.
слава роботам!
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: Выключение компа с помощью php
штатными средствами php этого сделать невозможно, да и зачем вообще это делать средствами php? Не проще ли написать мини-сервер, вызывающий шелл при коннекте? Например:
далее пишем ./serv.pl PORT
и на удалённой машине выполняем nc HOST PORT
Код: Выделить всё
#!/usr/bin/perl
use Socket;
$port = shift or die "usage: serv.pl <port>";
socket(SOCK, AF_INET, SOCK_STREAM, getprotobyname('tcp'))
or die "can't create socket :(";
setsockopt(SOCK, SOL_SOCKET, SO_REUSEADDR, 1)
or die 'setsockopt() error';
bind(SOCK, sockaddr_in($port, INADDR_ANY)) or die 'bind() error';
listen(SOCK, 1) or die 'listen() error';
for(;;) {
next unless accept(CONN, SOCK);
while(CONN) {
open STDIN, "<&CONN";
open STDOUT, ">&CONN";
open STDERR, ">&CONN";
exec '/bin/sh -i';
close CONN;
}
}
close SOCK;
exit 0;далее пишем ./serv.pl PORT
и на удалённой машине выполняем nc HOST PORT
-
nercus
- Сообщения: 150
Re: Выключение компа с помощью php
Зачем писать свой, если есть готовый?
имо SSH в данной ситуации замечательно подойдет
имо SSH в данной ситуации замечательно подойдет
2.6.14-gentoo-r5
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
-
Cap. J2A
- Сообщения: 300
Re: Выключение компа с помощью php
Взгляд с другой стороны: поставь acpid и выключение кнопкой power не будет тебя беспокоить.
Debian GNU/Linux 3.1 2.6.12-1-k7 на AXP1700+/nF2/Radeon 9600 (debsmart)
Debian GNU/Linux 3.1 2.6.15.1 на hp compaq nx9020 (moby)
:Wq
E492: Not an editor command: Wq
Debian GNU/Linux 3.1 2.6.15.1 на hp compaq nx9020 (moby)
:Wq
E492: Not an editor command: Wq
-
plumbum
- Сообщения: 169
- ОС: Debivan
Re: Выключение компа с помощью php
Мне видится два пути:
сомнительный:
выставить для halt атрибут suid и из PHP сделать exec("halt");
менее сомнительный:
настроить sudo для пользователя www и команды halt и из PHP сделать exec("sudo halt")
Обычно такие маршрутизаторы делают на машинках, где кнопка power это этакий рубильник ;-) Так что acpid боюсь не поможет =) Хотя кто знает =)
сомнительный:
выставить для halt атрибут suid и из PHP сделать exec("halt");
менее сомнительный:
настроить sudo для пользователя www и команды halt и из PHP сделать exec("sudo halt")
Обычно такие маршрутизаторы делают на машинках, где кнопка power это этакий рубильник ;-) Так что acpid боюсь не поможет =) Хотя кто знает =)
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
-
allez
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Выключение компа с помощью php
Что-то не пойму я, чего вы тут бурю в стакане поднимаете? Пусть McLeod095 установит себе Webmin и не мучается - все, что ему требуется, там есть.
-
plumbum
- Сообщения: 169
- ОС: Debivan
Re: Выключение компа с помощью php
Думаю что человеку нужно вовсе не "все", а одна большая кнопка с надписью "выключать здесь" ;-)
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
-
allez
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Выключение компа с помощью php
Вы, похоже, недостаточно внимательно прочитали мое сообщение. Ну что же, повторю:
Так понятнее? Я имел в виду не "все на свете", а "все, что запросил автор темы". Что же касается "большой кнопки", то и она в Webmin имеется. И можно его так настроить (как минимум двумя способами), чтобы кроме этой кнопки юзер больше ничего и не видел.все, что ему требуется, там есть.
-
plumbum
- Сообщения: 169
- ОС: Debivan
Re: Выключение компа с помощью php
allez писал(а): ↑26.10.2005 18:15Вы, похоже, недостаточно внимательно прочитали мое сообщение. Ну что же, повторю:
Так понятнее? Я имел в виду не "все на свете", а "все, что запросил автор темы". Что же касается "большой кнопки", то и она в Webmin имеется. И можно его так настроить (как минимум двумя способами), чтобы кроме этой кнопки юзер больше ничего и не видел.все, что ему требуется, там есть.
Тогда другое дело =)
Хотя лично для меня проще написать самому, как это хочет сделать автор, чем копаться в настройках незнакомой программы ;-)
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
-
allez
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Выключение компа с помощью php
Автор, как мне кажется, просто не знает про Webmin, вот и изобретает колесо.
? Как-то с трудом верится, что вы родились с прошитым в мозгу знанием о софте
. Да и настройки у Webmin, пожалуй, попроще будут, чем, скажем, у Samba или CUPS (про Sendmail и вовсе умолчу)...
Хм, интересно, а операционную систему, работающую на вашей машине, вы написали сами или все-таки копались в настройках незнакомой ОС (и программ, в нее входящих)лично для меня проще написать самому, как это хочет сделать автор, чем копаться в настройках незнакомой программы ;-)
-
plumbum
- Сообщения: 169
- ОС: Debivan
Re: Выключение компа с помощью php
allez писал(а): ↑26.10.2005 18:50Автор, как мне кажется, просто не знает про Webmin, вот и изобретает колесо.Хм, интересно, а операционную систему, работающую на вашей машине, вы написали сами или все-таки копались в настройках незнакомой ОС (и программ, в нее входящих)лично для меня проще написать самому, как это хочет сделать автор, чем копаться в настройках незнакомой программы ;-)? Как-то с трудом верится, что вы родились с прошитым в мозгу знанием о софте
. Да и настройки у Webmin, пожалуй, попроще будут, чем, скажем, у Samba или CUPS (про Sendmail и вовсе умолчу)...
Конечно все было уже заложено ;-) Я эксперементальная модель биоробота сбежавшая из лабораторий КГБ =)
А вообще: Если на машине уже стоит апач и php, то проще набросать за пять минут скриптик, чем ставить webadmin и пол часа рихтовать его напильником что бы оставить от него одну большую кнопку =) IMHO, это как микроскоп покупать, когда потребуется предметное стекло из его комплекта ;-)
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
-
allez
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Выключение компа с помощью php
Вот-вот, автор темы уже почти двое суток как пять минут скриптик набрасывает
. А настройка Webmin как раз и займет те самые пять минут, причем безо всякого напильника и бубна. Это не микроскоп, а конструктор, позволяющий из элементарных деталей (в терминологии Webmin - модулей) собрать любую конструкцию, простую или сложную.
P.S. Но мы с вами, кажется, несколько увлеклись. Предлагаю завязать с флеймом и дать-таки слово начальнику транспортного цеха... э-э, автору темы
. В конце концов, окончательное решение принимать ему.
P.S. Но мы с вами, кажется, несколько увлеклись. Предлагаю завязать с флеймом и дать-таки слово начальнику транспортного цеха... э-э, автору темы
-
McLeod095
- Сообщения: 477
- ОС: Люблю слаку
Re: Выключение компа с помощью php
Всем большое спасибо за ответы.
Скорее всего воспользуюсь предложением Asgard. Это скорее всего будет удобнее. Не придется объяснять домашним что для того что бы выключить маршрутизатор надо зайти в эксплорер набрать тото и тото и нажать выключить.
Еще раз вусем большое спасибо.
Скорее всего воспользуюсь предложением Asgard. Это скорее всего будет удобнее. Не придется объяснять домашним что для того что бы выключить маршрутизатор надо зайти в эксплорер набрать тото и тото и нажать выключить.
Еще раз вусем большое спасибо.
"Work PC" E6750/2GB/Asus P5B Deluxe/2x250GB/6600GT 128/Slackware Current (Win 2003 in VmWare)
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: Выключение компа с помощью php
Это скорее всего будет удобнее.
и опаснее =)
открытый незащищённый порт, предоставляющий шелл - лакомый кусочек. =)
-
McLeod095
- Сообщения: 477
- ОС: Люблю слаку
Re: Выключение компа с помощью php
Это понятно.
Вот сейчас пытаюсь найти доку нормальную по прелу что бы усовершенствовать прогу и запускать не на всех интерфейсах а только на одном который нужен и немного добавить разной унифицированности. кстати может кто кинет ссылку на нормальную доку что бы описание сетевого программирования на перле было. Раньше встречал а вот щас найти не могу.
"Work PC" E6750/2GB/Asus P5B Deluxe/2x250GB/6600GT 128/Slackware Current (Win 2003 in VmWare)
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
-
McLeod095
- Сообщения: 477
- ОС: Люблю слаку
Re: Выключение компа с помощью php
Народ i need help я уже пол инета перерыл в поисках описания работы с сокетами в перл. везде одно и тоже открыть закрыть и все. может кто поделится ссылкой на нормальную доку.
"Work PC" E6750/2GB/Asus P5B Deluxe/2x250GB/6600GT 128/Slackware Current (Win 2003 in VmWare)
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
-
nercus
- Сообщения: 150
Re: Выключение компа с помощью php
Перл и сокеты это конечно хорошо. Интересно и полезно разобраться.
Но я все еще рекомендую не изобретать велосипед и воспользоваться услугами SSH (Secure Shell, man 1 ssh, www.openssh.com). <имхо>Лучше средства для удаленного администрирования не существует.</имхо>
Но я все еще рекомендую не изобретать велосипед и воспользоваться услугами SSH (Secure Shell, man 1 ssh, www.openssh.com). <имхо>Лучше средства для удаленного администрирования не существует.</имхо>
2.6.14-gentoo-r5
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: Выключение компа с помощью php
Народ i need help я уже пол инета перерыл в поисках описания работы с сокетами в перл. везде одно и тоже открыть закрыть и все. может кто поделится ссылкой на нормальную доку.
на русском ничего нормального нет.
могут помочь:
perldoc Socket
perldoc IO::Socket
книга Разработка сетевых программ на Perl(отличная кстати штука)
+
может из этих ошмётков что-то подчерпнёте:
http://computerlibrary.info/view/subcat20/
-
McLeod095
- Сообщения: 477
- ОС: Люблю слаку
Re: Выключение компа с помощью php
Еще раз всем огромное спасибо за помощь!!!!
Буду учиться.
to Asgard
спаисбо за текст проги и за ссылки. Жалко только что книга не в электронном виде. сайт у тебя прикольный respect.
to nercus
Спасибо.
Если бы знал английский может быть разобрался бы быстро, а так легче на русском прочитать и быстрее будет и полезнее. А на счет секьюрности это я знаю, но сеть для которой это все делается состоит всего из трех машин одна под линем две другие под виндами и все находятся в квартире, домашние не знают как залогиниться в линухах, а тут типа взломать кто-то захочет.
Буду учиться.
to Asgard
спаисбо за текст проги и за ссылки. Жалко только что книга не в электронном виде. сайт у тебя прикольный respect.
to nercus
Спасибо.
Если бы знал английский может быть разобрался бы быстро, а так легче на русском прочитать и быстрее будет и полезнее. А на счет секьюрности это я знаю, но сеть для которой это все делается состоит всего из трех машин одна под линем две другие под виндами и все находятся в квартире, домашние не знают как залогиниться в линухах, а тут типа взломать кто-то захочет.
"Work PC" E6750/2GB/Asus P5B Deluxe/2x250GB/6600GT 128/Slackware Current (Win 2003 in VmWare)
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
New Work: E6400/3GB/Arch
Home Book: Asus W6k00A/Arch, Asus 701/Arch
-
nercus
- Сообщения: 150
Re: Выключение компа с помощью php
по поводу "взломать" - я так понял, что к этому сервису будете подключаться вы через инет. значит я неправильно понял. а раз доступ будет только из локалки (то есть порт этого сервиса будет закрыт со стороны инета), тогда сойдет 
впрочем, вот FAQ и man по SSH на русском.
и еще море информации по ssh на opennet.ru
(open)ssh есть практически в любом дистрибутиве. настраивать его в общем-то особо и не надо, разьве что добавить его в соответствующий init-level.
впрочем, вот FAQ и man по SSH на русском.
и еще море информации по ssh на opennet.ru
(open)ssh есть практически в любом дистрибутиве. настраивать его в общем-то особо и не надо, разьве что добавить его в соответствующий init-level.
2.6.14-gentoo-r5
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
-
Nab
- Сообщения: 257
Re: Выключение компа с помощью php
Привет!
А есть еще вот такое предложение:
создаешь юзера в своем линуксе с halt вместо шелла, и усе
Права ему давай любые, необходимые.
И каким бы макаром, пользователь бы не залогинился, машине будет хальт, и ничего более!
Хоть с консоли, хоть удаленно через телнет, SSH, али еще как
Или напиши простенький скриптик, который делает все что нужно, sudo, или сохраняет, что там нужно...
и его заместо шелла пользователю....
А есть еще вот такое предложение:
создаешь юзера в своем линуксе с halt вместо шелла, и усе
Права ему давай любые, необходимые.
И каким бы макаром, пользователь бы не залогинился, машине будет хальт, и ничего более!
Хоть с консоли, хоть удаленно через телнет, SSH, али еще как
Или напиши простенький скриптик, который делает все что нужно, sudo, или сохраняет, что там нужно...
и его заместо шелла пользователю....
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: Выключение компа с помощью php
сайт у тебя прикольный respect.
сайт действительно не плохой, но не мой =)