Nie potrzebne ci php. Sterować możesz z normalnej strony w html za pomocą linka albo formularza z przyciskiem.
Link albo przycisk prowadzi do skryptu sh, w którym możesz już zrobić cokolwiek.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Posty przez mrox
Nie potrzebne ci php. Sterować możesz z normalnej strony w html za pomocą linka albo formularza z przyciskiem.
Link albo przycisk prowadzi do skryptu sh, w którym możesz już zrobić cokolwiek.
root@OpenWrt:/etc# mount
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,size=14680k)
tmpfs on /dev type tmpfs (rw,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,noatime,mode=600)
/dev/mtdblock4 on /tmp/overlay type jffs2 (rw,noatime)
root on /tmp/root type tmpfs (rw,noatime,mode=755)
overlayfs:/tmp/root on /tmp/root type overlayfs (ro,noatime,lowerdir=/,upperdir=/tmp/root)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)
/dev/mtdblock4 on /overlay type jffs2 (rw,noatime)
overlayfs:/overlay on / type overlayfs (rw,noatime,lowerdir=/,upperdir=/overlay)Próbowałem i tak i tak - efekt ten sam. Możliwe, że te pliki są jakoś przywracane po restarcie, bo wystarczy sam reboot bez wyłaczenia zasilania żeby zniknęło.
Mam dopiero co skompilowane AA i nie mogę zmienić konfiguracji. Sprawa jest o tyle dziwna, że zapisują sie nowe pliki, (są też w /overlay) natomiast zmiany w /etc/config/network i .../wireles przepadają po restarcie. Nie wiem czy ma znaczenie pakiet mtd, który jakoś przypadkiem odznaczyłem i nie skompilował się, ale przecież bez niego ustawiłem hasło i pozmieniałem kilka plików - później doinstalowałem mtd jak już zauważyłem problemy, ale nic to nie dało.
Ale to IMHO raczej w bramce szukać trzeba przyczyny a nie w routerze.
Stronka może po prostu nie działać... albo nie wszędzie działać. Puszczasz wol ze swojego routera na swoje IP? No to pomijając już sens takiego zabiegu - nie wiem czy zadziała - niby powinno ale nie musi.
Zrozum, że pakiet wol NIE JEST wysyłany do kompa, bo on nie ma ŻADNEGO adresu IP - nie odpowiada na żadnym, switch nie wie gdzie on jest. Po sieci lokalnej jest wysyłany broadcast, a "śpiąca" karta wyłapuje go na podstawie adresu MAC. Jeśli router pamięta go w arp, to oczywiście wyśle na odpowiedni port... ale tak nie będzie przecież zawsze. Mnie się wydaje że tobie to działało zawsze (tak jak pisałem - router "wie" co z pakietem wol zrobić) - tylko źle wywoływałeś wol z neta.
Rozgłoszenia pięknie widać po jednocześnie mrugających diodkach - na routerze (jeśli masz) albo na kartach urządzeń podłaczonych do routera - sprawdź jak to wygląda podczas wysyłania wol z lan i z wan. Pytanie czy w ogóle pakiet dociera do WAN twojego routera - pamiętaj, że to jego adres wpisujesz (wpisywanie adresu komputera budzonego jest pozbawione sensu, gdyż on jest wyłaczony i nie ma jeszcze żadnego adresu). Na konies spróbowałbym użyć innego portu, gdyż port 9 akurat może być inaczej traktowany przez router.
No to broadcast nie działa - sprawdź czy masz zdefiniowany adres broadcastowy (ifconfig........ Bcast:192.168.1.255) i sprawdź czy router to rozgłasza (mruganie wszystkich diodek podłączonych urządzeń jednocześnie) - ewentualnie sprawdź np wiresharkiem - ale to trudniejsza sprawa.
Przekieruj port 9 na adres 192.168.1.255.
Przekieruj na broadcast, czyli na 192.168.1.255. Niektóre routery działają i bez tego.
Ale ty chcesz żeby z sieci 192.168.0.0 widzieć sieć 10.10.10.0 i odwrotnie? No to jakim cudem? Wysłanie pakietu na WAN routera "wyżej" nic nie da bo przecież on tej sieci też nie widzi.
Edit:
Znalazłem jednak router, z którym ten numer przechodzi. Nie wiem czy to dziura w oprogramowaniu czy dziura w mojej wiedzy o sieciach ![]()
Coś się jednak błędnie zapisało do konfiguracji, bo zwykły fconfig nie przechodził wszystkich parametrów tylko zakończał się z jakimś błędem. Pomogło fconfig -i. Jestem w punkcie wyjścia, bo wygląda na to, że mam sam kernel - brakuje filesystemu.
57600 ![]()
Kluczem było właśnie to słowo "po wszytkich" - ja szukałem w minicomie i tam jest tylko 9600, 38400 i 115200 plus kupa możliwości z bitami. Uruchomiłem GtkTerm i pierwszy strzał okazał się trafiony. Nie mam pojęcia skąd taka prędkość - nic takiego nie wpisywałem - jak się okazuje było bez błędu 115200. Nawet nie wiem jak teraz wrócic do poprzedniej.
Oryginalnie było 115200 8N1. Próbowałem też 9600 8N1, ale nic to nie daje - śmieci wyglądają tak:
�XHR��H�RJ�BXPz�H�Vs�,HH[
HF��k
X h
�R
JB��natomiast na 115200 8N1 tak:
����f<������`?����~<��f����fÆ���f<������przy czym to jest ostatni widok bo ta linijka się nadpisuje kilka razy.
Pytanie jakie się nasuwa to czy przy zmianie tych parametrów kernela on to zmienia gdzieś w rejestrach UART-a a RedBoot już tego nie zmienia i też startuje na tej prędkości. Przecież nie zmieniałem parametrów RedBoota i powinien on wstawać na 115200 tak jak było, a dopiero po starcie kernela zmieniać się ewentualnie na coś innego.
Jest sobie urządzenie (nie ruter, nie OpenWrt) na nim bootloader RedBoot. Nie startował mi linux, więc kombinowałem z parametrami kernela i zrobiłem niestety błąd. Prawdopodobnie błędnie wpisałem parametry konsoli w skrypcie startowym - chodzi o:
exec -c "noinitrd console=...... "i teraz mam efekt taki, że mam śmieci na terminalu i nie mogę wejść do RedBoot-a - śmieci są od samego początku - tak jakby RedBoot też startował ze zmienionymi parametrami (?). Próbowałem oczywiście przełaczać terminal na inną predkość i kombinację bitów - śmieci się zmieniają ale nadal są śmieciami. Próbowałem wbić się przez telnet - nie zgłasza się telnet na porcie 9000 ani na standartowym. Będę próbował jeszcze podpiąć oscyloskop i odgadnąć jaka w ogóle jest prędkość transmisji, a tymczasem będę wdzięczny za sugestie.
Ja mam jakąś starszą wersję w DIR-300 i jest gpio. Nie ma tylko przycisku "ses" jako button: http://eko.one.pl/forum/viewtopic.php?id=4157
IMHO odwrotnie - zostaw go włączonego na dłuższy czas - musi się zrobić ten jffs2. To wymaga trochę czasu a ten router demonem prędkości nie jest.
Przekazywanie zmiennych z formularza do skryptu. Poczytaj o formularzach html i skryptach sh.
W skrócie:
jeśli masz skrypt: skrypt.sh, a w nim np. napiszesz:
sterownik $1
echo $2to jeśli wywołasz
skrypt.sh argument1 argument2 to skrypt wykona:
sterownik argument1
i zwróci:
argument2
Z formularza można to wysłać tak:
<form action="skrypt.sh?argument1+argument2" method="post">z tym że przekazanie tego do wykonania bez sprawdzenia w skrypcie będzie bardzo nierozsądne.
Przecież napisałem już. Dopisz w pliku:
#!/bin/sh
echo 1 > /dev/ttyUSB0
echo "Wlaczylem... chyba"Czyli to co ma się pojawić na stronie... albo cały kod nowej strony... albo przekierowanie do tej poprzedniej itp.
Plik musi wyglądać tak:
#!/bin/sh
echo 1 > /dev/ttyUSB0I musi miec atrybut "uruchamialny". Jak mimo to nie działa, to serwer nie pozwala na uruchomienie.
W serwerze http na routerze musisz mieć zezwolone uruchamianie skryptów. Skrypty umieszczasz w katalogu gdzie masz stronę (zwykle w podkatalogu /cgi-bin ). Na stronie robisz np:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<TITLE>Sterowanie</TITLE>
</head>
<body>
<form action="cgi-bin/zalacz.sh" method="post">
<button type="submit">zalacz</button>
</form>
<form action="cgi-bin/wylacz.sh" method="post">
<button type="submit">wylacz</button>
</form>
</body>
</html>W plikach zalacz.sh, wylacz.sh oprócz wysłania komendy do urządzenia możesz echem wyrzucić zwrotnie stronę z odpowiednim komunikatem.
root@Gargoyle:/# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 2.5M 2.5M 0 100% /rom
tmpfs 6.6M 68.0K 6.5M 1% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
/dev/mtdbloc 384.0K 244.0K 140.0K 64% /overlay
mini_fo:/overlay 2.5M 2.5M 0 100% /
Mógłbyś to "rozebrać"?
Wydaje mi się to bardzo dziwne, że ten "podstawowy" przycisk nie jest obsługiwany - są z resztą opisy jak zrobić na nim włączanie i wyłączanie wifi. A ja mam marzenie żeby zrobić na nim zmianę konfiguracji: mam światełko niebieskie i mam router do podstawowego połaczenia z internetem i tryb wifi AP... w razie "w" wciskam przycisk i router przestawia się na tryb klienta - zapala się światełko czerwone i łączy się z moim telefonem na androidzie.
Dir-300 - system nie widzi przycisku SES - czy jak on się tam nazywa.
Do /etc/hotplug.d/button/ wsadziłem plik, a w nim:
#!/bin/sh
logger $BUTTON
i teraz w logread pięknie mi loguje przycisk reset, natomiast po przycisku SES (tym kwadratowym z boku) ani śladu.
Przycisk reset również dobrze działa po dodaniu do config:
system.@button[0]=button
system.@button[0].button=reset
system.@button[0].action=pressed
system.@button[0].handler=gpioctl dirout 1 && gpioctl set 1
- zapala się niebieska dioda, ale po zamianie "reset" na "ses" czy "SES" nic się nie dzieje.
I teraz najciekawsze: gpioctl get 4
daje: Pin 4 is LOW
a przy wciśniętym przycisku: Pin 4 is HIGH - czyli przycisk jednak działa! tylko coś brakuje w systemie.
BTW: jak można sprawdzić ilość wolnej pamięci (na zainstalowanie jakiegoś pakietu)?
Nie. To nie to - jak łącze się z innym komputerem mam to samo. Normalnie mogę uruchomić np. top i będzie chodził cały dzień, ale jak nic się nie dzieje, nic nie wpisuję to po dłuższym ~20min? czasie cały terminal zamiera - nic nie można zrobić, można go tylko zamknąć. Nie wiem czy problem występuje tylko na moim komputerze, ale o ile sobie dobrze przypominam to gdzieś indziej też coś takiego zauważyłem. Nie jest to wielki problem toteż zwykle go ignoruje. Z resztą dobrym zwyczajem jest się wylogowywać po skończonej pracy.
eko.one.pl → Posty przez mrox
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc