Obsah fóra koppel.cz koppel.cz
Díky, krtku...
 
 FAQFAQ   HledatHledat   Seznam uživatelůSeznam uživatelů   Uživatelské skupinyUživatelské skupiny   RegistraceRegistrace 
 ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Digital I/O
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď    Obsah fóra koppel.cz -> Projekty
Zobrazit předchozí téma :: Zobrazit následující téma  

Máte zájem o tutu funkci?
ANO
100%
 100%  [ 6 ]
NE
0%
 0%  [ 0 ]
JE TO BLBOST
0%
 0%  [ 0 ]
Celkem hlasů : 6

Autor Zpráva
devyx
CDMA geek


Založen: 23.11.2006
Příspěvky: 22

PříspěvekZaslal: čt únor 15, 2007 4:34 pm    Předmět: Citovat

jurasek napsal:
takže jsem se rozhodl pro toto řešení, připojit se na interní seriový kanál, a k němu připojit například 8051, na seriový kanál jsem schopen zapisovat pomocí telnetu. ted resim problém jak zapisovat na seriový kanál z webového rozhraní, chtěl jsem použít cgi skript, a HTTP server přístupný z venku, HTTP sem nainstaloval, ale nemůžu spustit žádný cgi skript, nevíte někdo o nejakém návodu, HTTP pužívám lighttpd ale cgi skript mi to nechce vykonat, zobrazí jeho obsah. do budoucna bych chtěl řídit více I/O, či přidat teploměr nebo jiné kokotinky


K tomu aby vam lighttpd poustel spravne skripty je potreba nasledujici :
1) povolit v konfiguraku mod_cgi
2) odkomentovat cgi.assign cast a pridat do ni asociaci k pripone skriptu (u mne .sh pro shellove skripty)
kód:

#### CGI module
cgi.assign                 = ( ".sh"  => "/bin/sh",
                               ".cgi" => "/usr/bin/perl" )

3) mit ten soubor spustitelny (chmod +x)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jurasek
CDMA geek


Založen: 21.1.2007
Příspěvky: 13

PříspěvekZaslal: čt únor 15, 2007 10:45 pm    Předmět: Citovat

tak se mi stala nepříjemná věc, při vykonávaní cgi skriptu mi nejak zádaně spadl systém na disku, proto sem chtěl zkusit thttpd server, ale tam zase nejsem schopný rozjet skripty, nevíte někdo jak na to? jedná se mi o sh skript
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
devyx
CDMA geek


Založen: 23.11.2006
Příspěvky: 22

PříspěvekZaslal: pá únor 16, 2007 7:10 pm    Předmět: Citovat

u thttpd nevim, ale obycejny busybox_httpd na to staci :
kód:
busybox_httpd -h /tmp/harddisk/www/ -p 8080


prepinace -h a -p jsou doufam jasne, tady jen poznamka - skripty se pusti jen tehdy kdyz jsou v adresari cgi-bin.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jurasek
CDMA geek


Založen: 21.1.2007
Příspěvky: 13

PříspěvekZaslal: so únor 17, 2007 4:43 pm    Předmět: odpoved Citovat

devyx napsal:
u thttpd nevim, ale obycejny busybox_httpd na to staci :
kód:
busybox_httpd -h /tmp/harddisk/www/ -p 8080


prepinace -h a -p jsou doufam jasne, tady jen poznamka - skripty se pusti jen tehdy kdyz jsou v adresari cgi-bin.


tak sjem to rozchodil na busybox_httpd, hodil jsem ho do rootu, a tak nemusím mít připojenou flasku. při realizaci jsem narazil na tento problém, když sem si v kompu připravil cgi skript, a pak jsem jej nahrál pomocí FTP do asuse, tak ten skript nešel spustit, ikdyž mel nastaven chmod +x, až když jsem soubor s cgi skriptem vytvořil v asusu, a pak si ho otevřel v nanu a nakopíroval tam samotný obsah, tak tento skript jde spustit. nevím z jakého důvodu ale je to tak.
Ted bych v tom skriptu potřeboval pingnout PC v lokalu a podle toho zda je dostupný provést nejakou akci nemáte někdo nápad jak to provést?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jurasek
CDMA geek


Založen: 21.1.2007
Příspěvky: 13

PříspěvekZaslal: ne únor 18, 2007 12:20 am    Předmět: Zapnutí PC Citovat

Tak jsem to konečně rozchodil, cvilku to trvalo protože sem na linuxu nikdy nic nedelal.
Je to udělané tak že není potřeba externí flešky ale jde to nahodit na flasku, jen to celé bude umístěné na ní.
tady je postup:
1) vytvořte adresař www
kód:
mkdir /tmp/local/sbin/www

2) v něm vytvořte adresář cgi-bin
kód:
mkdir /tmp/local/sbin/www/cgi-bin

3) v adresáři /tmp/local/sbin/www vytvořte soubor index.html
kód:
vi /tmp/local/sbin/www/index.html

a nakopirujte tam tento obsah
kód:
<FORM  method="GET" name="form" action="cgi-bin/serial.cgi">
Zapnuti PC pres seriovy port
<INPUT TYPE="SUBMIT"  name="Zapni" value="Zapni PC">
</FORM>

4) v adresáři /tmp/local/sbin/www/cgi-bin/ vytvořte soubor serial.cgi
kód:
vi /tmp/local/sbin/www/cgi-bin/serial.cgi

a do nej nakopirujte toto:
kód:
#!/bin/sh
#promene definovane uzivatelem
IP=192.168.1.7    #IP adresa PC ktere se ma zapinat
prikaz=zapPC      #prikaz pro mikroprocesor pripojeny k asusu
#dale uz nic nemente
echo Content-type: text/html
echo
echo "<HEAD>"
echo '<META NAME="keywords" CONTENT="'
y=""
x=$(ping -c 1 $IP | grep ttl)
if `test -z $x`
then
busybox stty 9600 < /dev/tts/1
#more /proc/tty/driver/serial
echo $prikaz > /dev/tts/1
echo '">'
echo "</HEAD>"
echo "<html>"
echo Prikaz byl zaslan
else
echo '">'
echo "</HEAD>"
echo "<html>"
echo PC uz bezi a proto jej nelze zapnout
fi
echo "</html>"
exit

a nastevte přístup pomocí chmod
kód:
chmod +x /tmp/local/sbin/www/cgi-bin/serial.cgi

5) pokud chcete omezit přístup k temto skriptům tak vytvořte v adresaři /tmp/local/sbin/ vytvořte soubor httpd.conf, jinak tento bod vynechte
kód:
vi /tmp/local/sbin/httpd.conf

a nokopirujte tento obsah:
kód:
A:*
/:uzivatel:heslo
.htm:text/html
.au:audio/basic
.asp:text/html

6) ted je potřeba nahodit web server a zajisti aby se automaticky spustil při startu, to uděláte přidáním tohoto příkazu do souboru post-boot v adresáři /tmp/local/sbin/
kód:
vi /tmp/local/sbin/post-boot

a vložením tohoto řádku:
kód:
busybox_httpd -h /tmp/local/sbin/www/ -p 81 -c /tmp/local/sbin/httpd.conf

pokud tento soubor neexistuje musite jej vytvořit a vložit tento kod:
kód:
#!/bin/sh
busybox_httpd -h /tmp/local/sbin/www/ -p 81 -c /tmp/local/sbin/httpd.conf

a nastavit mu přistup
kód:
chmod +x /tmp/local/sbin/post-boot

přepínač -p určuje port na kterém poběží web server
7) jako poslední a to nutná věc je uložit pridané soubory to provedete příkazem:
kód:
flashfs save && flashfs commit && flashfs enable && reboot


tak doufám že jsem na nic nezapoměl, jestě jedna rada skrity musí být vytvořeny přímo v asusu, když jsem je vytvořil pod voknama a pak nakopíroval do asuse tak nešly spustit

help: program vi se ovládá takto:
po spustení se nacházíte v tzv command modu
pro zapis je nutno stisknout "a" ted mužete zapisovat
pokud chcete uložit změny musíte se dostat do tzv command modu to provedete stiskem "ESC" ted stisknete ":" a pro uložení napiste "wq" a entr pro odchod bez uložení napiste "q" a stisknete entr

Hardwarovou část zveřejním později ted na to nemám čas, ale to už snad není tak složité

[img] http://wl500g.info/attachment.php?attachmentid=864&stc=1&d=1150812229 [/img]
v pravé části obrázku uprostřed u toho velkého kondenzátoru je přípojka pro dva seriové porty, ty připojíte přímo k atmelu a ten si naprogramujte, ja to navrhoval pro uart 1, pokud vím tak uart 0 je pro upload firmwaru a další blbosti, pokud tam nemáte napájené piny tak si je tam napájejte a nebo použijte vodivý lak, ja to napájel, je to levnější

do budoucna by nebylo špatné dodělat načítání stavů z mikroprocesoru, ale netuším jak na to poraďte napadá mě pověsit se na přerušení od serového portu ale netuším jak to provést
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
JFíla
CDMA geek


Založen: 11.4.2008
Příspěvky: 21

PříspěvekZaslal: so listopad 15, 2008 1:02 pm    Předmět: Problém s CGI Citovat

Proč není možné zprovoznit CGI skripty? Po zadání adresy skriptu do prohlížeče se ho prohlížeč pokouší stáhnout. Opera zase zobrazí obsah souboru serial.cgi (v /opt/share/www/lighttpd jsem vytvořit složku cgi-bin). do init.usb jsem přidal následující:
kód:
busybox_httpd -h /opt/share/www/lighttpd/ -p 8081 -c

Co znamená ".cgi" => "/usr/bin/perl" ) ? v /usr/bin/ položka perl není?
Obsah lighttpd.conf je
kód:
# lighttpd configuration file
#
# use it as a base for lighttpd 1.0.0 and above
#
# $Id: lighttpd.conf 2976 2006-03-06 23:31:44Z bzhou $

############ Options you really have to take care of ####################

## modules to load
# at least mod_access and mod_accesslog should be loaded
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules              = (
#                               "mod_rewrite",
#                               "mod_redirect",
#                               "mod_alias",
                                "mod_access",
#                               "mod_cml",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
#                               "mod_status",
#                               "mod_setenv",
                                "mod_fastcgi",
#                               "mod_proxy",
#                               "mod_simple_vhost",
#                               "mod_evhost",
#                               "mod_userdir",
                                "mod_cgi",
#                               "mod_compress",
#                               "mod_ssi",
#                               "mod_usertrack",
#                               "mod_expire",
#                               "mod_secdownload",
#                               "mod_rrdtool",
                                "mod_accesslog" )

## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root        = "/opt/share/www/lighttpd/"

## where to send error-messages to
server.errorlog             = "/opt/var/log/lighttpd/error.log"

# files to check for if .../ is requested
index-file.names            = ( "index.php", "index.html",
                                "index.htm", "default.htm" )

## set the event-handler (read the performance section in the manual)
# server.event-handler = "freebsd-kqueue" # needed on OS X

# mimetype mapping
mimetype.assign             = (
  ".pdf"          =>      "application/pdf",
  ".sig"          =>      "application/pgp-signature",
  ".spl"          =>      "application/futuresplash",
  ".class"        =>      "application/octet-stream",
  ".ps"           =>      "application/postscript",
  ".torrent"      =>      "application/x-bittorrent",
  ".dvi"          =>      "application/x-dvi",
  ".gz"           =>      "application/x-gzip",
  ".pac"          =>      "application/x-ns-proxy-autoconfig",
  ".swf"          =>      "application/x-shockwave-flash",
  ".tar.gz"       =>      "application/x-tgz",
  ".tgz"          =>      "application/x-tgz",
  ".tar"          =>      "application/x-tar",
  ".zip"          =>      "application/zip",
  ".mp3"          =>      "audio/mpeg",
  ".m3u"          =>      "audio/x-mpegurl",
  ".wma"          =>      "audio/x-ms-wma",
  ".wax"          =>      "audio/x-ms-wax",
  ".ogg"          =>      "application/ogg",
  ".wav"          =>      "audio/x-wav",
  ".gif"          =>      "image/gif",
  ".jpg"          =>      "image/jpeg",
  ".jpeg"         =>      "image/jpeg",
  ".png"          =>      "image/png",
  ".xbm"          =>      "image/x-xbitmap",
  ".xpm"          =>      "image/x-xpixmap",
  ".xwd"          =>      "image/x-xwindowdump",
  ".css"          =>      "text/css",
  ".html"         =>      "text/html",
  ".htm"          =>      "text/html",
  ".js"           =>      "text/javascript",
  ".asc"          =>      "text/plain",
  ".c"            =>      "text/plain",
  ".cpp"          =>      "text/plain",
  ".log"          =>      "text/plain",
  ".conf"         =>      "text/plain",
  ".text"         =>      "text/plain",
  ".txt"          =>      "text/plain",
  ".dtd"          =>      "text/xml",
  ".xml"          =>      "text/xml",
  ".mpeg"         =>      "video/mpeg",
  ".mpg"          =>      "video/mpeg",
  ".mov"          =>      "video/quicktime",
  ".qt"           =>      "video/quicktime",
  ".avi"          =>      "video/x-msvideo",
  ".asf"          =>      "video/x-ms-asf",
  ".asx"          =>      "video/x-ms-asf",
  ".wmv"          =>      "video/x-ms-wmv",
  ".bz2"          =>      "application/x-bzip",
  ".tbz"          =>      "application/x-bzip-compressed-tar",
  ".tar.bz2"      =>      "application/x-bzip-compressed-tar"
 )

# Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetype.use-xattr        = "enable"


## send a different Server: header
## be nice and keep it at lighttpd
# server.tag                 = "lighttpd"

#### accesslog module
accesslog.filename          = "/opt/var/log/lighttpd/access.log"

## deny access the file-extensions
#
# ~    is for backupfiles from vi, emacs, joe, ...
# .inc is often used for code includes which should in general not be part
#      of the document-root
url.access-deny             = ( "~", ".inc" )

$HTTP["url"] =~ "\.pdf$" {
  server.range-requests = "disable"
}

##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".fcgi", ".php", ".pl", ".cgi" )

######### Options that are good to be but not neccesary to be changed #######

## bind to port (default: 80)
server.port                = 8081

## bind to localhost (default: all interfaces)
#server.bind                = "grisu.home.kneschke.de"

## error-handler for status 404
#server.error-handler-404   = "/error-handler.html"
#server.error-handler-404   = "/error-handler.php"

## to help the rc.scripts
server.pid-file            = "/var/run/lighttpd.pid"


###### virtual hosts
##
##  If you want name-based virtual hosting add the next three settings and load
##  mod_simple_vhost
##
## document-root =
##   virtual-server-root + virtual-server-default-host + virtual-server-docroot
## or
##   virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root   = "/home/weigon/wwwroot/servers/"
#simple-vhost.default-host  = "grisu.home.kneschke.de"
#simple-vhost.document-root = "/pages/"


##
## Format: <errorfile-prefix><status-code>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix    = "/home/weigon/projects/lighttpd/doc/status-"

## virtual directory listings
#dir-listing.activate       = "enable"

## enable debugging
#debug.log-request-header   = "enable"
#debug.log-response-header  = "enable"
#debug.log-request-handling = "enable"
#debug.log-file-not-found   = "enable"

### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot              = "/"

## change uid to <uid> (default: don't care)
#server.username            = "nobody"

## change uid to <uid> (default: don't care)
#server.groupname           = "nobody"

#### compress module
#compress.cache-dir         = "/tmp/lighttpd/cache/compress/"
#compress.filetype          = ("text/plain", "text/html")

#### proxy module
## read proxy.txt for more info
#proxy.server               = ( ".php" =>
#                               ( "localhost" =>
#                                 (
#                                   "host" => "192.168.0.101",
#                                   "port" => 80
#                                 )
#                               )
#                             )

#### fastcgi module
## read fastcgi.txt for more info
fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
#                                   "socket" => "/opt/tmp/php-fastcgi.socket",
#                                   "bin-path" => "/opt/bin/php-fcgi"
                                    "host" => "127.0.0.1",
                                    "port" => 1260,
                                 )
                               )
                            )

#### CGI module
 cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
#                               ".cgi" => "/usr/bin/perl" )
#

#### SSL engine
#ssl.engine                 = "enable"
#ssl.pemfile                = "server.pem"

#### status module
#status.status-url          = "/server-status"
#status.config-url          = "/server-config"

#### auth module
## read authentication.txt for more info
#auth.backend               = "plain"
#auth.backend.plain.userfile = "lighttpd.user"
#auth.backend.plain.groupfile = "lighttpd.group"

#auth.backend.ldap.hostname = "localhost"
#auth.backend.ldap.base-dn  = "dc=my-domain,dc=com"
#auth.backend.ldap.filter   = "(uid=$)"

#auth.require               = ( "/server-status" =>
#                               (
#                                 "method"  => "digest",
#                                 "realm"   => "download archiv",
#                                 "require" => "user=jan"
#                               ),
#                               "/server-config" =>
#                               (
#                                 "method"  => "digest",
#                                 "realm"   => "download archiv",
#                                 "require" => "valid-user"
#                               )
#                             )

#### url handling modules (rewrite, redirect, access)
#url.rewrite                = ( "^/$"             => "/server-status" )
#url.redirect               = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
#### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ "^www\.(.*)" {
#  url.redirect            = ( "^/(.*)" => "http://%1/$1" )
#}

#
# define a pattern for the host url finding
# %% => % sign
# %0 => domain name + tld
# %1 => tld
# %2 => domain name without tld
# %3 => subdomain 1 name
# %4 => subdomain 2 name
#
#evhost.path-pattern        = "/home/storage/dev/www/%3/htdocs/"

#### expire module
#expire.url                 = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")

#### ssi
#ssi.extension              = ( ".shtml" )

#### rrdtool
#rrdtool.binary             = "/opt/bin/rrdtool"
#rrdtool.db-name            = "/var/www/lighttpd.rrd"

#### setenv
#setenv.add-request-header  = ( "TRAV_ENV" => "mysql://user@host/db" )
#setenv.add-response-header = ( "X-Secret-Message" => "42" )

## for mod_trigger_b4_dl
# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
# trigger-before-download.trigger-url = "^/trigger/"
# trigger-before-download.download-url = "^/download/"
# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
# trigger-before-download.trigger-timeout = 10

## for mod_cml
## don't forget to add index.cml to server.indexfiles
# cml.extension               = ".cml"
# cml.memcache-hosts          = ( "127.0.0.1:11211" )

#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"

## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")

#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
#include "lighttpd-inc.conf"

#### include_shell
#include_shell "echo var.a=1"
## the above is same as:
#var.a=1
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
engy
CDMA Developer


Založen: 4.11.2004
Příspěvky: 1281

PříspěvekZaslal: so listopad 15, 2008 3:09 pm    Předmět: Citovat

No nevim, ale nemel byste poustet misto busybox_httpd radeji lighttpd ?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
JFíla
CDMA geek


Založen: 11.4.2008
Příspěvky: 21

PříspěvekZaslal: so listopad 15, 2008 9:55 pm    Předmět: Problém s CGI Citovat

Skript pokus.sh je v pořádku, při spuštění ./pokus.sh funguje normálně.
Změnil jsem konfiguraci v souboru /opt/etc/lighttpd/lighttpd.conf. Kde může být problém (tentokrát server ohlásí chybu 500)? Jak nainstalovat a nakonfigurovat jiný HTTP server?
kód:

static-file.exclude-extensions = ( ".fcgi", ".php", ".pl", ".py", ".rb", ".sh", ".cgi" )
 

cgi.assign                 = ( ".sh"  => "/bin/sh",
                               ".cgi" => "/usr/bin/perl" )
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď    Obsah fóra koppel.cz -> Projekty Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.


Powered by phpBB © 2001, 2005 phpBB Group
Český překlad phpBB Czech - www.phpbbcz.com