Temat: uruchamianie skryptów przez www

Otóż jak już kiedyś planowałem chciałbym zrobić zdalne wykonywanie skryptów stworzonych na routerze. Tzn ma to być na stronie www i po kliknięciu np przycisku wykona się dany skrypt z routera. Tylko nie bardzo wiem jak to ma wyglądać, tzn np w putty skrypt wykonuje tak :

/bin/skrypt.sh

a jak miałoby to wyglądać w takim przycisku na stronce www? musze się jakoś specjalnie logować po ssh do routera?

2

Odp: uruchamianie skryptów przez www

Nie - poczytaj o html/formularzach i cgi. Jak chcesz przykład to ściągnij sobie mój pakiet "blokada" który ideologicznie to robi.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: uruchamianie skryptów przez www

z html i formularzami juz troche sie bawiłem, bo częściowo mam już stronkę www, a z cgi nie miałem do  czynienia. Nie działa mi domyślne hasło dla Twojego pakietu blokada....

4

Odp: uruchamianie skryptów przez www

Działa działa. Zresztą masz go w pliku jawnie zapisanego.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: uruchamianie skryptów przez www

tak działa juz znalazłem smile

6

Odp: uruchamianie skryptów przez www

chyba nie bardzo o to mi chodzi jak masz w "blokadzie". Blokada to są skrypty w których zawarty jest już panel stronki w html. Moja stronka jest na innym serwerze, nie na routerze, więc jakoś musi wiedzieć gdzie szukać skryptu który ma wykonać. Doczytałem gdzieś o wykonywaniu zewnętrznych skryptów, ale nie wiem czy o to chodzi... coś takiego kombinowałem

cript type="text/sh" language="sh" src="http://192.168.1.1/reboot.sh"

tylko to chyba wykonuje sie od razu po uruchomieniu stronki, a mnie interesuje po kliknięciu w przycisk, lub np link odnoszący się adresem do skryptu. Nie wiem czy dobrze kombinuję, ale dopiero zaczynam zabawę z stronkami www, a już potrzebuje wykonać skryp, lub polecenie po ssh do routera.

7

Odp: uruchamianie skryptów przez www

Tak się nie da. Tym bardziej że każdy mógłby wykonać po prostu http://192.168.1.1/reboot.sh i byłby kłopot.

Jak chcesz wykonać polecenie na routerze możesz użyć albo ssh i zautomatyzować to (też przez cgi), albo właśnie zrobić stronę na serwerze która parametry przez url przyjmuje (get lub post)

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: uruchamianie skryptów przez www

Cezary napisał/a:

Tak się nie da. Tym bardziej że każdy mógłby wykonać po prostu http://192.168.1.1/reboot.sh i byłby kłopot.

Tak się da. Konfigurujesz Lighttpd, żeby wykonywał skrypt po odwołaniu do niego z przeglądarki. Można to zrobić za pomocą mod_cgi. Potem można zabezpieczyć hasłem ścieżkę ze skryptami za pomocą mod_auth. Wtedy trzeba podać hasło, żeby wykonać skrypt. Wydaje mi się, że można tak zrobić, ale spróbuję to potestować jak będę miał wolną chwilę.

Tylko zależy co miałby taki skrypt robić. Jeśli rebootować router, to padnie nam serwer http i co chcemy wyświetlić w przeglądarce? :]

9

Odp: uruchamianie skryptów przez www

Na pewno tak nie chce akurat smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: uruchamianie skryptów przez www

chodzi mi akutat o zdalne uruchamianie skryptów do włączania i wyłączania podsłuchu audio, oraz skryptów do motion. Daniel byłbym bardzo wdzięczny jakbyś sprawdził czy tak się da i napisał jak to robiłeś smile bardzo ułatwiłoby mi to sprawe.

11 (edytowany przez xellon03 2011-12-03 16:54:09)

Odp: uruchamianie skryptów przez www

Może ja ci pomogę, próbowałem kiedyś coś takiego zrobić.
Potrzebujesz serwera z mod-cgi.
Masz plik "polecenie.html" w głównym katalogu serwera. Przy domyślnej konfiguracji jest to "/www". Po otwarciu tego pliku przez przeglądarkę www wpisujesz polecenie do wykonania i hasło, aby nikt obcy nie mogł przykładowo wpisać reboot i zrestartować routera zdalnie, bez twojej wiedzy.
Zawartość "polecenie.html"

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>Polecenie</title>
<form action="cgi-bin/ps.sh" method="get" enctype="text/plain"><div>
<p align="center">Polecenie</p>
<table align="center" bgcolor="silver">
<tr>
 <td>
   Podaj polecenie: <input type="text" name="polecenie">
 </td>
</tr>
</table>
<table align="center" bgcolor="silver">
<tr>
 <td>
   Podaj hasło: <input type="password" name="pass">
                <input type="submit" value="Wyślij" />
 </td>
</tr>
</table>
</div></form>
</head>

Powyższy plik odwołuje się do pliku "ps.sh", który jest w katalogu "/www/cgi-bin"
Jego zawartość:

#!/bin/sh

polecenie=`echo "$QUERY_STRING" | sed -n 's/^.*polecenie=\([^&]*\).*$/\1/p' | sed "s/[%20+]/ /g"`
pass=`echo "$QUERY_STRING" | sed -n 's/^.*pass=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`


echo "Content-type: text/plain"
echo ""


 if [ "$pass" != "TU WPISZ HASŁO" ]; then
 echo 'Błędne hasło!'
 exit 0
 fi
$polecenie

exit 0

Dla mnie działało to całkiem dobrze, jest zabezpieczone jako tako hasłem, pokazuje wynik wykonanego polecenia.

12

Odp: uruchamianie skryptów przez www

Tak właśnie blokada realizuje, ale autor wątku nie może tego w taki sposób zrealizować.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: uruchamianie skryptów przez www

w sumie to moge tak to zrealizować, wystarczy że zrobie mała stronke na routerze i wstawie ja na moją stronke na innym serwerze w postaci osobnej ramki.
xellon03 dzięki wielkie za pomoc! to co podałeś sprawdziłem i działa smile
tylko jest taki problem, że polecenia np: motion, czy killall motion działają bez problemu, natomiast jak już chce wykonać coś takiego /bin/motion_on.sh to już nie działa... (motion_on.sh to skrypt zmnieniający zawartość pliku motion.conf a dokładnie zmieniający output_normal na on) wywołanie z konsoli tego skryptu działa prawidłowo i robi to co ma.
Przy okazji, mógłbym prosić o wyjaśnienie co robią te 2 linie w ps.sh

polecenie=`echo "$QUERY_STRING" | sed -n 's/^.*polecenie=\([^&]*\).*$/\1/p' | sed "s/[%20+]/ /g"`
pass=`echo "$QUERY_STRING" | sed -n 's/^.*pass=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`

bo resztę mniej więcej rozumie co sie dzieje.

14

Odp: uruchamianie skryptów przez www

To jest dekodowanie parametrów przekazywanych przez formularz w htmlu. Onie jest są jawnym tekstem zawarte, są w zmiennej $QUERY_STRING (to jeszcze zależy od tego czy formularz woła POST czy GET), a same są trochę inaczej zapisane - z &parmater=wartość z kodowaniem niektórych znaków (spacje, nawiasy itd).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15

Odp: uruchamianie skryptów przez www

a mam jeszcze pytanie co musze zmienić, aby po wykonaniu polecenia nie otrzymywać wyniku, bo dla części poleceń poprostu przechodzi mi do pustej strony, a dla częsci pokazuje co wykonał, więc wolałbym żeby polecenie zostało wysłane i dalej nie przechodził już

16

Odp: uruchamianie skryptów przez www

Zawsze coś zrobi  - w ten sposób jakiś wynik musi być. Przekieruj go na stronę początkową.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: uruchamianie skryptów przez www

Zawsze coś zrobi  - w ten sposób jakiś wynik musi być. Przekieruj go na stronę początkową.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

18

Odp: uruchamianie skryptów przez www

mam taki oto skrypt.

#!/bin/sh
echo "Content-type: text/html"
echo "
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
</head>
<body>"
/usr/bin/date -d '1 days' +%A
echo "
</body>
</html>"\

i zamiast sie wykonac, to sie plik pobiera.
dodam ze mam to w katalogu /www/data/cgi-bin/ , ktory jest uruchamiany za pomoca index.html w /www/data/ smile
sam /www jest uzywany przez webif. smile
co jest nie tak? hmm

ZyXEL NBG6716 (Gargoyle by obsy)

19

Odp: uruchamianie skryptów przez www

Ponieważ to nie jest skrypt cgi. Jeżeli serwer www jest uruchamiany z katalogiem domowym /www i w konfiguracji jest znaczone że cgi są w /www/cgi-bin to właśnie ma tam być skrypt. Nazwanie dowolnego katalogi cgi-bin nic nie daje.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

20

Odp: uruchamianie skryptów przez www

Jeśli nadal rozmawiamy o lighttpd, to jest opcja, która pozwala uruchamiać skrypty cgi spoza katalogu cgi-bin. Pamiętaj, że użytkownik na którego uprawnieniach działa serwer musi mieć uprawnienia do uruchomienia pliku.

21

Odp: uruchamianie skryptów przez www

Hm, bo właśnie. COVERek: jaki serwer www? smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.