rw9uao
Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
для таржета собрал микроперл, поднял в бизибоксе web демона с поддержкой CGI.
цги вроде работает. башевые скрипты не работают на парсинге, но прекрасно работают на вывод. бинарники на С и выводят и парсят, все хорошо.
микроперл не работает с парсингом. не видит переменную $ENV.
Код print $ENV{'QUERY_STRING'};
отдает "", т.е. нифига.
куда копать?
rw9uao
Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
оформление в виде
Код #!/usr/bin/microperl
print "Content-type: text/html\n\n";
print "<HTML><BODY>\n";
print "=========================================================<BR>\n";
и
Код print "</BODY></HTML>\n";
естественно есть.
sasamy
Пункты: 83542
Регистрация: 14.08.2009
А нужен ли тебе перл ? :) Есть такой проект замечательный
http://haserl.sourceforge.net/
в буилдруте для него цель для сборки есть, позволяет встраивать скрипты шелл в html в стиле php. Как раз недавно стояла у меня задача - сделать вебинтрфейс.
rw9uao
Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
видимо нужен.
или я совсем дурак. но у меня даже в башевых скриптах CASE не работает.
sasamy
Пункты: 83542
Регистрация: 14.08.2009
case в шелл не работает ?? как же тогда все загрузочные скрипты работают :)
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
Если тебе не CMS писать а для удаленного управления - haserl просто идеален :) там и парсить уже ничего не надо - он тебе все переменные из форм на блюдечке выкладывает, а в общем если тебе нужен перл - компиляй перл :)
rw9uao
Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
Сань, размести тут, плс, исходник своих хасерл скриптов.
sasamy
Пункты: 83542
Регистрация: 14.08.2009
Цитата Сань, размести тут, плс, исходник своих хасерл скриптов.
cgi-bin/has
Код
#!/usr/bin/haserl --upload-limit=10240 --upload-target=/tmp
Content-type: text/html
<html lang="ru">
<head>
<title><% cat /etc/hostname %></title>
<link rel="stylesheet" type="text/css" href="/radio.css">
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
</head>
<body>
<!-- generate menu -->
<h2><font color=#FF0000><% cat /etc/hostname %></font></h2>
<div id="menu">
<a href="/cgi-bin/has?page=index">Status</a>
·
<a href="/cgi-bin/has?page=log">Log</a>
·
<a href="/cgi-bin/has?page=config">Config</a>
·
<a href="/cgi-bin/has?page=update">Update</a>
·
<a href="/cgi-bin/has?page=control">Control</a>
</div>
<!-- main page -->
<% if test "$FORM_page" = "index"; then %>
<pre>
<b>Version</b>
<% uname -a %>
<% cat /etc/radio.ver %>
<b>Status</b>
<% date %>
<% mpc status %>
<b>Uptime</b>
<% uptime %>
<b>Process list</b>
<% ps %>
</pre>
<% fi %>
<!-- page Log -->
<% if echo "$FORM_page" | grep -q log; then %>
<ul>
<li><a href="/cgi-bin/has?page=log_messages">/var/log/messages</a></li>
<li><a href="/cgi-bin/has?page=log_mpd">/var/log/mpd.log</a></li>
</ul>
<% fi %>
<% if test "$FORM_page" = "log_messages"; then %>
<form action="<% echo -n $SCRIPT_NAME %>" method="POST">
<textarea name="log" wrap="virtual" cols="100" rows="20"><% cat /var/log/messages %></textarea>
</form>
<% fi %>
<% if test "$FORM_page" = "log_mpd"; then %>
<form action="<% echo -n $SCRIPT_NAME %>" method="POST">
<textarea name="log" wrap="virtual" cols="100" rows="20"><% cat /var/log/mpd.log %></textarea>
</form>
<% fi %>
<!-- page Config -->
<% if echo "$FORM_page" | grep -q config; then %>
<ul>
<li><a href="/cgi-bin/has?page=config_radio">/etc/radio.conf</a></li>
<li><a href="/cgi-bin/has?page=config_shed">/etc/radio.shed</a></li>
</ul>
<% fi %>
<% if test "$FORM_page" = "config_radio"; then %>
<form action="<% echo -n $SCRIPT_NAME %>" method="POST">
<textarea name="radioconf" wrap="virtual" cols="100" rows="20"><% cat /etc/radio.conf %></textarea>
<p>Password:</p>
<input type="password" width="10" name="pass_radio">
<input type="submit" value="Save">
</form>
<% fi %>
<% if test -n "$FORM_pass_radio"; then %>
<% salt=`cat /etc/shadow | grep root | cut -d: -f2 | cut -d$ -f3` %>
<% if test "`mkpasswd -m md5 "$FORM_pass_radio" "$salt"`" = "`cat /etc/shadow | grep root | cut -d: -f2`"; then %>
<% echo "$FORM_radioconf" > /etc/radio.conf %>
<p>/etc/radio.conf is changed</p>
<% else %>
<p>incorrect password</p>
<% fi %>
<% fi %>
<% if test "$FORM_page" = "config_shed"; then %>
<form action="<% echo -n $SCRIPT_NAME %>" method="POST">
<textarea name="shedconf" wrap="virtual" cols="100" rows="20"><% cat /etc/radio.shed %></textarea>
<p>Password:</p>
<input type="password" width="10" name="pass_shed">
<input type="submit" value="Save">
</form>
<% fi %>
<% if test -n "$FORM_pass_shed"; then %>
<% salt=`cat /etc/shadow | grep root | cut -d: -f2 | cut -d$ -f3` %>
<% if test "`mkpasswd -m md5 "$FORM_pass_shed" "$salt"`" = "`cat /etc/shadow | grep root | cut -d: -f2`"; then %>
<% echo "$FORM_shedconf" > /etc/radio.shed %>
<p>/etc/radio.shed is changed</p>
<% else %>
<p>incorrect password</p>
<% fi %>
<% fi %>
<!-- page Update -->
<% if test "$FORM_page" = "update"; then %>
<p>
<form action="<% echo -n $SCRIPT_NAME %>" method=POST enctype="multipart/form-data">
<input type=file name=uploadfile>
<p>Password:</p>
<input type="password" width="10" name="pass_update">
<input type=submit value=Update>
</form>
</p>
<% fi %>
<% if test -n "$FORM_pass_update"; then %>
<% salt=`cat /etc/shadow | grep root | cut -d: -f2 | cut -d$ -f3` %>
<% if test "`mkpasswd -m md5 "$FORM_pass_update" "$salt"`" = "`cat /etc/shadow | grep root | cut -d: -f2`"; then %>
<p>The file was <% cat $FORM_uploadfile | wc -c %> bytes long</p>
<% if test "$FORM_uploadfile_name" = "linux.sb"; then %>
<p>Writing kernel...</p>
<% kobs-ng $FORM_uploadfile %>
<p>kernel update complete</p>
<% else if test "$FORM_uploadfile_name" = "rootfs.tgz"; then %>
<p>Writing rootfs...</p>
<% tar xf $FORM_uploadfile -C / %>
<p>rootfs update complete</p>
<% else %>
<p>incorrect file name</p>
<% fi %>
<% fi %>
<% rm $FORM_uploadfile %>
<% else %>
<p>incorrect password</p>
<% fi %>
<% fi %>
<!-- page Control -->
<% if test "$FORM_page" = "control"; then %>
<p>
<form action="<% echo -n $SCRIPT_NAME %>" method=POST>
<input type="radio" name="system" value="audio_vol">Playback Volume (min=0,max=127)
<input type="text" name="volume" value="<% amixer cget numid=3 | grep ": values" | cut -d, -f2 %>" size="3" maxlength="3"><br>
<input type="radio" name="system" value="audio_on">Speaker ON<br>
<input type="radio" name="system" value="audio_off">Speaker OFF<br>
<input type="radio" name="system" value="reboot">Reboot<br>
</p>
<p>Password:</p>
<input type="password" width="10" name="pass_control">
<input type=submit value=Apply>
</form>
</p>
<% fi %>
<% if test -n "$FORM_pass_control"; then %>
<% salt=`cat /etc/shadow | grep root | cut -d: -f2 | cut -d$ -f3` %>
<% if test "`mkpasswd -m md5 "$FORM_pass_control" "$salt"`" = "`cat /etc/shadow | grep root | cut -d: -f2`"; then %>
<% if test "$FORM_system" = "audio_vol"; then %>
<pre>
<% amixer cset numid=3 "$FORM_volume","$FORM_volume" %>
</pre>
<% fi %>
<% if test "$FORM_system" = "audio_on"; then %>
<% echo "1" > /sys/class/gpio/gpio50/value %>
<p>Speaker GPIO state = <% cat /sys/class/gpio/gpio50/value %></p>
<% fi %>
<% if test "$FORM_system" = "audio_off"; then %>
<% echo "0" > /sys/class/gpio/gpio50/value %>
<p>Speaker GPIO state = <% cat /sys/class/gpio/gpio50/value %></p>
<% fi %>
<% if test "$FORM_system" = "reboot"; then %>
<p>Rebooting system...</p>
<% echo "0" > /sys/class/gpio/gpio50/value %>
<% /sbin/reboot %>
<% fi %>
<% else %>
<p>incorrect password</p>
<% fi %>
<% fi %>
<!-- bottom text -->
<hr>
<small>
Copyright © 2010 A. Kudjashev | Content generated by <a href="http://haserl.sourceforge.net">Haserl</a>
</small>
</body>
</html>
index.html
Код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta http-equiv='Cache-Control' content='no-cache' />
<Meta http-equiv='Pragma' content='no-cache' />
<meta http-equiv='refresh' content='0; url=/cgi-bin/has?page=index'>
</head>
<body>
</body>
radio.css
Код
body {
color: #000000 ;
background-color: #FFFFFF ;
font-family: sans-serif ;
text-align: justify ;
margin-right: 20px ;
margin-left: 20px ;
}
h1, h2, h3, h4 {
font-weight: bold ;
font-style: normal ;
}
#menu {
padding-top: 0.2em ;
padding-bottom: 0.2em ;
padding-left: 20px ;
margin-left: -20px ;
background-color: #CCCCCC ;
}
#menu a {
color: #000000 ;
font-weight: bold ;
text-decoration: none;
}
#menu a:hover {
color: #FFFFFF ;
}
a:link, a:visited {
color: #FF0000 ;
background-color: inherit ;
text-decoration: none ;
}
a:link:hover, a:visited:hover {
text-decoration: underline ;
}
a:link:active, a:visited:active {
color: #FF0000 ;
}
hr {
border: 0 ;
height: 1px ;
color: #000000 ;
background-color: #000000 ;
}
Прекрасно работает с httpd из состава busybox