exekvere en kommando fra boot på DM500HD - busybox [SOLVED]
hey gutter.
Jeg roder med et problem da jeg gerne vil have kørt en kommando på min Dreambox ( som kører busybox) allerede ved opstarten.
jeg har nu prøvet flere metoder - men kan ikke få det til at blive afviklet under opstarten.
Har lavet et script:
/var/etc/init.d/start.sh
kører jeg dette direkte - virker alting. Men skal hen og logge ind på boksen for derefter at aktivere kommandoen - det burde da vel være til at fungere under boot.
Normalt havde jeg bare lagt kommandoen in i /etc/rc.local men den findes ikke - hvordan skal jeg så gøre dette
Jeg roder med et problem da jeg gerne vil have kørt en kommando på min Dreambox ( som kører busybox) allerede ved opstarten.
jeg har nu prøvet flere metoder - men kan ikke få det til at blive afviklet under opstarten.
Har lavet et script:
/var/etc/init.d/start.sh
kører jeg dette direkte - virker alting. Men skal hen og logge ind på boksen for derefter at aktivere kommandoen - det burde da vel være til at fungere under boot.
Normalt havde jeg bare lagt kommandoen in i /etc/rc.local men den findes ikke - hvordan skal jeg så gøre dette
Kommentarer31
Jeg kan desværre ikke
PS. Synes at alt der kører Linux er spændende :)
#0 du kan ikke bruge noget a
Jeg har lavet mit script
og derefter lavet symlinks som skal gå i rc0-6.d.
Men efter en reboot ligger de stadigvæk - men ikke bliver kørt ???
Og det er reelt underligt - for kører jeg filen i hånden - kører det uden problemer.
Der må simpelthen være noget specielt omkring at tilføje denne på en måde
Re: exekvere en kommando fra boot på DM500HD - busybox
Du mangler lige og opdatere din deamon.
Mangler lige at skrive en enkelt linie i din terminal.
update-rc.d script navn defaults
Så skal du lige genstarte og så starter dit script ved start.
Normalt er denne kommando da
update-rc.d scripts defaults
Så laver den da også sine symlinks - så hvis jeg skal skrive script/navn ?? så må jeg vel have lavet noget forkert - kan dog ikke forstå at den accepterer og siger OK - hvis jeg mangler en parameter
Re: Re: exekvere en kommando fra boot på DM500HD - busybox
Det har du givet et navn fx start, som jeg tror du har kaldt dit script.
update-rc.d start defaults
Det burde nu virke
Ellers skal vi have kørt /etc/init.d/start start ved opstart på en anden måde.
Har du forresten husket og gøre din fil eksekverbar?
chmod +x start
update-rc.d start
Det burde virke - i min forstand og filen er exekverbar - så alt er i den fineste orden.
kører jeg manuelt /etc/init.d/start - kører det perfekt - men jkeg kan ikke få det til at starte automatisk - er nødt til at logge ind på boksen og køre det hver gang!
en TV-boks der kører Linux,
PS. Synes at alt der kører Linux er spændende :)
Mon ikke de fleste "alm. tv-bokse" kører Busybox/Linux? ;-)
Jeg tror forskellige devices der kører Linux er mere udbredte end du tror, mit Philips tv gør f.eks. også - og det formoder jeg at stort set alle deres modeller gør.
Firmaerne har ofte så travlt med at smide busybox på deres devices at de glemmer at læse GPL først ;-)
Så vidt min opfattelse er -
Men tror de fleste devices reelt kører linux.
Men der er ingen der kan fortælle mig hvorfor jeg ikke kan aktivere det script så det kører automatisk fra starten - da jeg ville mene at det burde fungere som jeg nu har gjort - men alligevel ikke.
Skal manualt køre det script før end det virker
Ved du om busybox læner sig
Der burde vel være en fil i /etc/init.d/ til at køre egne kommandoer under boot. På suse ville det være boot.local eller after.local.
må ærlig indrømme - jeg
Under inet.d ligger kun de almindelige scripts som er llinket til under diverse rc[0-6].d biblioteker.
Men kan ikke se nogen almindelig fil der skulle kunne håndtere det - da alle der ligger derinde er diverse daemons der starter almindeligt.
Re: exekvere en kommando fra boot på DM500HD - busybox
Det virkede heller ikke. Så jeg prøvede at sætte mit script til at starte 20 sekunder efter opstart, for at se om der var noget som forstyrrede mit script.
Det virkede for mig.
#!/bin/bash
sleep 20 && nautilus
Håber det hjælper med dit problem.
Nope - prøvede at sætte
Så er totalt på herens mark - syntes det er ufatteligt det ikke kan køre
Re: exekvere en kommando fra boot på DM500HD - busybox
Hvordan har du præcist
Dette burde virke med et script der hedder "testmig"
(Jeg kan ikke huske hvad "20" gør, men må kunne findes i man pagen)
1) Kopier filen til init.d hvis du ikke har gjort det.
cp testmig /etc/init.d/testmig
2) Sæt rettigheder på filen
chmod 755 /etc/init.d/testmig
3) Opdater init scripts og fortæl hvilke runlevels scriptet skal køre og stoppe i.
BEMÆRK PUNKTUM !!
update-rc.d testmig start 20 2 3 4 5 . stop 20 0 1 6 .
hermed gjort - men med samme
Altså det med testing og opdatere rc.d - men samme resultat - der vil ikke starte af sig selv under opstarten. Men det er nøjagtigt som jeg har gjort tidligere.
Jeg er fra Arch vant /etc/rc.local men sådanne fil findes ikke og de andre muligheder ligger der heller ikke.
Kan bare ikke rigtig se hvad der reelt skulle kunne gøre dette.
Mit script er at starte en SSH tunnel således at jeg kan oprette forbindelse til min DB.
det ser således ud:
#!/bin/sh
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
dbclient -T -i ~/.ssh/mykey -L 2345:localhost:22 root@ServerIP
(har endda prøvet med og uden & efter linien
Kan da ikke forstå at dette ikke fungerer da man burde kunne afvikle dette på en enkelt måde!
Per
Kan du ikke prøve at lave
Umiddelbart så lugter det lidt af, at den laver en fejl ved eksekvering af scriptet ved boot af den ene eller anden årsag.
peger ~/.ssh/myke til
Bare et skud i tågen, men:
Nu har jeg leget et par
#!/bin/sh
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
echo "HELLO" >> /tmp/test.txt
dbclient -T -i ~/.ssh/mykey -L 2345:localhost:22 root@ServerIP
og den kommer ind - så skriptet bliver kaldt og køres - så det er selve linien / måden det er skrevet på der er forkert i min dbclient linie.
hvis jeg kører det manuelt - afslutter den ikke - så hvordan kan dette skrive anderledes - da jeg normalt bare ville kalde kommandoen fra rc.local - men busybox på denne syntes at være ret begrænset
#20:
Jeg kommer til at
Jeg kommer til at tænke på at jeg havde/har et problem der minder meget om det:
http://www.linuxin.dk/node/16898
Når jeg kører scriptet manuelt, så virker det helt perfekt, men kører det under opstarten så fejler det af grunde jeg aldrig blev klar over. Måtte give op til sidst.
Peger ~/.ssh/mykey til
Jeg tænker at hvis du kører scriptet når detvirker som en normal bruger vil ~ pege til /home/myuser, så har du muligvis en ugyldig sti da den sikkert kører som root ved boot er dermed kigger i /root i stedet.
Gav det mening? :)
Hey IBM.
Scriptet bliver
Scriptet bliver kørt som root - og brugeren er root.
Der er som default ikke andre brugere og normalt ville man slet ikke kigge ind på OS på en Dreambox - da den reelt kun bruges til at glo TV på.
Alting kører i baggrunden som root - og jo nøglen ligger det rigtige sted! Så det kan desværre ikke være der problemet ligger
Re: exekvere en kommando fra boot på DM500HD - busybox
http://www.linux.com/archive/feed/46892
Jeg fandt det her link og har kigget hans script igennem. Her starter han sit script med
. /etc/init.d/functions
Har ikke selv prøvet det, da jeg ikke har haft tid. Håber der er nogen som får det til at virke.
Hey Gutter nu er jeg nået
#!/bin/sh
#
# /etc/init.d/sshtunnel: start or stop SSH tunnel.
#
. /etc/default/sshtunnel
case "$1" in
start)
echo -n "Starting up SSHtunnel: sshtd"
dbclient -T -i ~/.ssh/mykey -L 2345:localhost:22 $SERVERIP || exit 0
echo "."
;;
stop)
echo -n "Shutting down SSHtunnel: sshtd"
killall dbclient
echo "."
;;
*)
echo "Usage: /etc/init.d/sshtunnel {start|stop}"
exit 1
;;
esac
exit 0
Fungerer i realiteten OK - MEN jeg skal uanset hvad kalde scriptet manuelt. I /etc/default/sshtunnel ligger hvilken host den skal udføre kommandoen på.
Jeg kan starte og stoppe min daemon med mit script. Dog imens den kører står den sådanne:
# /etc/init.d/ssh_tunnels start
Starting up SSHtunnel: sshtd
hvilket nok har nået at gøre med hvordan linien exekveres - hvordan kan jeg smide den i baggrunden, alt selve kommando linien ?? således at den forbliver aktiv og exitter. Jeg har sat & ind og prøvet med || exit 0 , men hvordan kan man få dette til at holde den SSHtunnel oppe, så jeg kan logge ind på boksen
Uanset hvad - så har jeg disse muligheder igennem ssh ?
# ssh -h
Dropbear client v0.48
Usage: ssh [options] [user@]host
Options are:
-p
-l
-t Allocate a pty
-T Don't allocate a pty
-i (multiple allowed)
-L Local port forwarding
-g Allow remote hosts to connect to forwarded ports
-R Remote port forwarding
Så har nogle et rigtig godt udgangspunkt videre - for lige nu er jeg lidt blank overfor den ikke vil køre
Du kan prøve med nohup til
" nohup - run a command immune to hangups, with output to a non-tty "
Hey Ibm.
Jeg har tjekket og
Jeg har tjekket og set overalt.
Som jeg lige kan se er nohup ikke en del af busybox på disse dreamboxe ???
root@dm500hd:~# uname -r
2.6.12-5.1-brcmstb
Og kender slet ikke kommandoen i kernen, der er ingen man-sider help.
Så hmmmmm det er da imponerende det kan være så svært at køre et script
På min NAS der også kører
OK, det var også et wild
@ibm: hvordan ville du lave
hvordan ville du lave det script med nohup - bare for sjov - da jeg har opdateret min kernel og nu har nohup med - så er spørgsmålet lige at få det tilrettet korrekt.
Så ville da gerne høre et bud med nohup
Netop da jeg har nu fået den til at kalde scriptet men for denne udmelding i scriptet - selvom i nohup smider den følgende kommentar:
Host 'xxx.xxx.xxx.xxx' is not in the trusted hosts file.
(fingerprint md5 8d:6a:da:40:80:82:aa:a1:ff:4d:5a:71:69:36:a3:91)
Do you want to continue connecting? (y/n) /usr/bin/dbclient: connection to root@xxx.xxx.xxx.xxx exited: Didn't validate host key
Så ergo må den ikke kunne finde min fil der giver den adgang til at kende hosten. Altså hvilken kommando er det så ? hvordan kommer jeg videre - da den bruger ikke kender known hosts
Nu er jeg nået så langt
/etc/init.d/sshtunnel indeholder:
nohup /etc/sshtunnel &
det køres og giver output i nohup.out om den accepterer nøglen osv.
Derefter indeholder scriptet /etc/sshtunnel følgende:
/usr/bin/dbclient -T -i /home/root/.ssh/mykey -y -L 2345:localhost:22 root@xxx.xxx.xxx.xxx
Køres /etc/sshtunnel manuelt kører det. Køres /etc/init.d/sshtunnel - kører det ikke, men kan se ved hjælp af echo af scriptet køres - men afsluttes igen med det samme derefter. har prøvet at holde sleep på 20sek men samme problem alligevel!
Hvordan kan dette script foresættes i baggrunden.
Løsningen var:
/usr/bin/dbclient -T -i /home/root/.ssh/mykey -y -L 2345:localhost:22 root@xxx.xxx.xxx.xxx -N &
bare til orientering