Temat: Status połączenia - problem

Witam
Zrobiłem wszystko według
http://eko.one.pl/?p=openwrt-statuspolaczenia
z tym że dla uhttpd i portu 8080
Po wpisaniu w przeglądarce

http://adres_ip_rutera:8080

otrzymuję komunikat

Unable to launch the requested CGI program:
  /www1/cgi-bin/status.sh: Exec format error

Co zrobić, żeby zadziało?

2

Odp: Status połączenia - problem

chmod 755 /www1/cgi-bin/status.sh ?

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

3

Odp: Status połączenia - problem

Niestety dalej to samo

Unable to launch the requested CGI program:
  /www1/cgi-bin/status.sh: Exec format error

4

Odp: Status połączenia - problem

A sam /www1/cgi-bin/status.sh się wykonuje?

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

5 (edytowany przez spameiro 2011-01-15 14:24:49)

Odp: Status połączenia - problem

Chyba się wykonuje.

root@OpenWrt:~# /www1/cgi-bin/status.sh
Content-type: text/html


    <html>
    <style type="text/css">
    .centered {
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        width: 50%;
        height: 50%;
        margin: auto;
        text-align: center;
    }
    h1 {
        color: red;
    }
    h2 {
        color: green;
    }
    </style>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body><div class=centered>
<h2>Połšczony</h2>
81.190.235.148 / 255.255.240.0
</div></body></html>
root@OpenWrt:~#

6

Odp: Status połączenia - problem

Ok, to jeszcze musisz powiedzieć uhttpd jak ma pliki .sh traktować.

uci set uhttpd.main.interpreter=".sh=/bin/sh"
uci commit

coś takiego.

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

7

Odp: Status połączenia - problem

Niestety nie pomogło.
Dalej jest

Unable to launch the requested CGI program:
  /www1/cgi-bin/status.sh: Exec format error

8

Odp: Status połączenia - problem

Zrestartowałeś uhttpd?

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

9

Odp: Status połączenia - problem

Oczywiście.

/etc/init.d/uhttpd stop
/etc/init.d/uhttpd start

10

Odp: Status połączenia - problem

Pokaż uci show uhttpd.

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

11

Odp: Status połączenia - problem

Proszę.

root@OpenWrt:~# uci show uhttpd
uhttpd.main=uhttpd
uhttpd.main.listen_http=0.0.0.0:80
uhttpd.main.listen_https=0.0.0.0:443
uhttpd.main.home=/www
uhttpd.main.rfc1918_filter=1
uhttpd.main.cert=/etc/uhttpd.crt
uhttpd.main.key=/etc/uhttpd.key
uhttpd.main.cgi_prefix=/cgi-bin
uhttpd.main.script_timeout=60
uhttpd.main.network_timeout=30
uhttpd.main.interpreter=.sh=/bin/sh
uhttpd.px5g=cert
uhttpd.px5g.days=730
uhttpd.px5g.bits=1024
uhttpd.px5g.country=DE
uhttpd.px5g.state=Berlin
uhttpd.px5g.location=Berlin
uhttpd.px5g.commonname=OpenWrt
uhttpd.@uhttpd[0]=uhttpd
uhttpd.@uhttpd[0].listen_http=0.0.0.0:8080
uhttpd.@uhttpd[0].home=/www1

12

Odp: Status połączenia - problem

Ehhh. Jeżeli ustawiłeś drugą instancję uhttpd to ustaw tez interpreter dla niej:

uci set uhttpd.@uhttpd[0].interpreter=".sh=/bin/sh"
uci set uhttpd.@uhttpd[0].cgi_prefix=/cgi-bin
uci commit
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: Status połączenia - problem

Poniższe komendy nic nie dopisują

uci set uhttpd.@uhttpd[0].interpreter=".sh=/bin/sh"
uci set uhttpd.@uhttpd[0].cgi_prefix=/cgi-bin
uci commit

Dopisałem wszystko "ręcznie"

root@OpenWrt:~# uci show uhttpd
uhttpd.main=uhttpd
uhttpd.main.listen_http=0.0.0.0:80
uhttpd.main.listen_https=0.0.0.0:443
uhttpd.main.home=/www
uhttpd.main.rfc1918_filter=1
uhttpd.main.cert=/etc/uhttpd.crt
uhttpd.main.key=/etc/uhttpd.key
uhttpd.main.cgi_prefix=/cgi-bin
uhttpd.main.script_timeout=60
uhttpd.main.network_timeout=30
uhttpd.main.interpreter=.sh=/bin/sh
uhttpd.px5g=cert
uhttpd.px5g.days=730
uhttpd.px5g.bits=1024
uhttpd.px5g.country=DE
uhttpd.px5g.state=Berlin
uhttpd.px5g.location=Berlin
uhttpd.px5g.commonname=OpenWrt
uhttpd.@uhttpd[0]=uhttpd
uhttpd.@uhttpd[0].listen_http=0.0.0.0:8080
uhttpd.@uhttpd[0].home=/www1
uhttpd.@uhttpd[0].cgi_prefix=/cgi-bin
uhttpd.@uhttpd[0].interpreter=.sh=/bin/sh
root@OpenWrt:~#

ale dalej nie działa

14

Odp: Status połączenia - problem

uhttpd.@uhttpd[0].cgi_prefix=/cgi-bin
uhttpd.@uhttpd[0].interpreter=.sh=/bin/sh

Jak widzisz dopisały. To nie uruchamiaj tego z automatu tylko zobacz co będzie jak uruchomisz uhttp z palca, czyli

uhttpd -h /www1 -p 8080

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

15

Odp: Status połączenia - problem

uhttpd.@uhttpd[0].cgi_prefix=/cgi-bin
uhttpd.@uhttpd[0].interpreter=.sh=/bin/sh
Powyższych linijek nie dopisywało mi poprzez

uci set uhttpd.@uhttpd[0].interpreter=".sh=/bin/sh"
uci set uhttpd.@uhttpd[0].cgi_prefix=/cgi-bin
uci commit

tylko dopisałem je ręcznie przez WinSCP.
Natomiast

root@OpenWrt:~# uhttpd -h /www1 -p 8080
socket(): Address family not supported by protocol
bind(): Address already in use
Error: No sockets bound, unable to continue
root@OpenWrt:~#

16

Odp: Status połączenia - problem

Zastopuj przedtem uhttpd. bo już chodzi na 8080.

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

17

Odp: Status połączenia - problem

root@OpenWrt:~# /etc/init.d/uhttpd stop
root@OpenWrt:~# uhttpd -h /www1 -p 8080
socket(): Address family not supported by protocol
bind(): Address already in use
Error: No sockets bound, unable to continue
root@OpenWrt:~#

18

Odp: Status połączenia - problem

smile Ubij go siłą. Nadal słucha na 8080

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

19

Odp: Status połączenia - problem

Chyba go ubiłem

root@OpenWrt:~# ps
  PID USER       VSZ STAT COMMAND
    1 root      1364 S    init
    2 root         0 SW   [kthreadd]
    3 root         0 SW   [ksoftirqd/0]
    4 root         0 SW   [events/0]
    5 root         0 SW   [khelper]
    8 root         0 SW   [async/mgr]
   41 root         0 SW   [sync_supers]
   43 root         0 SW   [bdi-default]
   45 root         0 SW   [kblockd/0]
   70 root         0 SW   [kswapd0]
   71 root         0 SW   [aio/0]
   72 root         0 SW   [crypto/0]
   84 root         0 SW   [mtdblockd]
   90 root         0 SW   [ar71xx-spi]
  223 root         0 SW   [ipolldevd]
  277 root         0 SWN  [jffs2_gcd_mtd3]
  295 root      1364 S    init
  312 root      1368 S    syslogd -C16
  314 root      1352 S    klogd
  328 root       776 S    /sbin/hotplug2 --override --persistent --set-worker /
  474 root         0 SW   [cfg80211]
  598 root         0 SW   [khubd]
  652 root         0 SW   [phy0]
  766 root         0 SW   [scsi_eh_0]
  767 root         0 SW   [usb-storage]
  945 root      1424 S    hostapd -P /var/run/wifi-phy0.pid -B /var/run/hostapd
 1157 root       824 S    /usr/sbin/ntpclient -i 600 -s -l -D -p 123 -h 0.openw
 1378 root         0 SW   [jbd2/sda1-8]
 1379 root         0 SW   [ext4-dio-unwrit]
 1504 root      1136 S    /usr/sbin/dropbear -p 22 -P /var/run/dropbear.1.pid
 1520 root      1044 S    vsftpd
 1545 nobody     912 S    /usr/sbin/dnsmasq -K -D -y -Z -b -E -s lan -S /lan/ -
 1554 root      2624 S N  smbd -D
 1560 root      2124 S    nmbd -D
 1562 root      1368 S    udhcpc -t 0 -i eth0.2 -b -p /var/run/dhcp-eth0.2.pid
 1578 root      1360 S    watchdog -t 5 /dev/watchdog
 4281 root      1212 S    /usr/sbin/dropbear -p 22 -P /var/run/dropbear.1.pid
 4282 root      1368 S    -ash
 4470 root      1224 S    /usr/sbin/dropbear -p 22 -P /var/run/dropbear.1.pid
 4471 root      1360 S    -ash
 4491 root      1212 S    /usr/sbin/dropbear -p 22 -P /var/run/dropbear.1.pid
 4492 root      1360 S    -ash
 4846 root      1356 R    ps

a on na to

root@OpenWrt:~# uhttpd -h /www1 -p 8080
socket(): Address family not supported by protocol
root@OpenWrt:~#

20

Odp: Status połączenia - problem

Teraz sie uruchomił - to jego normalny komunikat. Jak podasz port jako 0.0.0.0:8080 to nie bedzie tego wyświetlał.

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

21

Odp: Status połączenia - problem

Tylko że dalej niestety nie działa

Unable to launch the requested CGI program:
  /www1/cgi-bin/status.sh: Exec format error

22

Odp: Status połączenia - problem

Nie wiem wiec w czym jest problem. Sam uhttpd bez problemu intepretuje skrypty shella (moje projekty - blokada czy 3ginfo na tym się opierają).

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

23

Odp: Status połączenia - problem

Według mnie jakiś problem jest w trakcie uruchamiania lub wyświetlania wyniku działania skryptu, bo przecież sam /www1/cgi-bin/status.sh w konsoli się wykonuje.
Dodatkowo po zastąpieniu w index.html

<head>
    <meta http-equiv="refresh" content="0; URL=cgi-bin/status.sh" />
</head>

na

<head>
    test
</head>

to oczywiście po wpisaniu w przegladarce adresu_ip:8080 pojawia się

    test

24

Odp: Status połączenia - problem

Bo nie chce skryptu cgi wykonać. sam serwer działa jak widzisz.

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

25

Odp: Status połączenia - problem

Jak powinien wyglądać najprostszy status.sh, żeby tylko coś wyświetlił po wpisaniu adresu do przeglądarki?

#!/bin/sh
echo "Połączony"

Coś takiego?