|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 18 Feb 2005 21:36:19 To : Vasiliy Volik Subject : Re: web-страничка для управления сервером -------------------------------------------------------------------------------- 18 фев 2005, пятница, в 14:23 KRAST, Vasiliy Volik написал(а): VV> Есть ли готовые решения для сабжа? VV> Желательно очень простое и надёжное. VV> Hужно буквально 2 действия: перезагрузка и выключение. Кусочки из моего HTTP-сервера на /bin/sh (запускается из inetd). Доточить по вкусу. Hа шелле - потому что работал на четверке в условиях 8Mb RAM и около 160Mb винта и наклепать надо было быстро. Многочисленные использования case - из-за того, что test тогда еще не был builtin, а fork/exec стоил дорого на этом железе - свопилось. read_request() { read -t 10 -r request url rest case $request in [Gg][Ee][Tt]) ;; *) send_headers "501 Method not allowed" norefresh show_error 501 "This server only supports GET request" exit esac } send_headers() { printf "HTTP/1.0 $1\r\n" printf "Allow: GET\r\n" printf "Date: `date +'%a, %d %b %Y %T' GMT\r\n" printf "Server: HTTP/ipstat 1.0\r\n" printf "Connection: close\r\n" printf "Language: ru\r\n" printf "Expires: Thu, 1 Jan 00:00:00 1970 GMT\r\n" case "$2" in norefresh) ;; *) printf "Refresh: 60\r\n" ;; esac printf "Content-Type: text/html; charset=koi8-r\r\n\r\n" } read_request case "$url" in /shutdown) send_headers "200 OK" draw_title echo '<p>Вы действительно хотите выключить роутер?</br>' echo '<a href="/shutdown_the_router">Да, выключить</a>' echo '<a href="/">Hет, отменить</a></p></body></html>' ;; /shutdown_the_router) send_headers "200 OK" norefresh draw_title echo '<h1>Через минуту роутер можно выключить</h1></body></html>' shutdown -h now "shutdown from web by $REMOTE_ADDR" ;; /reboot) send_headers "200 OK" draw_title echo '<p>Вы действительно хотите перегрузить роутер?</br>' echo '<a href="/reboot_the_router">Да, перегрузить</a>' echo '<a href="/">Hет, отменить</a></p></body></html>' ;; /reboot_the_router) send_headers "200 OK" norefresh draw_title echo '<h1>Роутер перегружается</h1></body></html>' shutdown -r now "reboot from web by $REMOTE_ADDR" ;; /) send_headers "200 OK" draw_title draw_table $REMOTE_ADDR echo '</body></html>' ;; *) send_headers "404 Not found" norefresh show_error 404 "URL Not Found" ;; esac Eugene --- slrn/0.9.8.0 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/26093a93e5c58.html, оценка из 5, голосов 10
|