Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 13210
Hei,

Har et .sh script som loader environment og kjører et .py script som invoker videre oppstartssekvens. Jeg trenger at det enten i .sh(foretrukket) eller .py - format sjekkes om kontakt med master på ip 192.168.45.5 er oppnådd. Hvis ikke kjør omstart. Ideelt sett snakker vi noe bash magi som jeg ikke forstår bæret av, i verste fall kan det pinges fra .py scriptet, så bruke system sin reboot kommando.

Så enten nevnte løsning i bash, eller en måte å pinge IP'er (lokal tilkobling) i python.

Takker!
Bash:

Kode

if ping -c 1 some_ip_here &> /dev/null
then
"Invoke pythonscript here"
else
  echo 0
fi
Edit:
Du kan tweake ping-kommandoen din til å få noe mer fornuftig for ditt usecase.

Denne URL'en kan kanskje hjelpe med litt inspirasjon:
https://unix.stackexchange.com/quest...t-availability
Sist endret av lsrr; 18. januar 2020 kl. 02:03.
Hva returnerer ping -c 1 ?

?Kan du hjelpe meg å bruke det sånn som dette:

Kode

#!/bin/bash -i
source /home/"pc1"/.bashrc
cd /home/"pc1"/boot
if ping -c 1 < 1.0 *notat* &> /dev/null
then
    python bootlaunch.py
else
     sudo reboot
fi
*notat*
Jeg vet ikke hvordan det funker, men jeg er interessert i å starte opp enda ping er urovekkende høy. Hele systemet koker under oppstart. Men hvis det ikke er svar å få på 1 sekund må den pcen starte om.

Husker jeg feil eller kan jeg skrive output til destinasjon i stedet for /dev/null?

Ok alt funker, må bare klare å bruke output fra ping -c 1 ip til å gi meg enten ping i tall eller tid uten svar.

Trenger også å enten sette ping-cutoff høyt (eks 10 sekunder), eller ved å gi meg 20 sekunder med sleep før reboot kjøres. Dette er så sykt tidsfelle, plutselig sitter du en halv dag og kriger mot en altfor kjapp reboot-loop fordi uttrykket aldri returnerer true.

Ble akkurat rebootet til Windows i alle fall, så festen er over for min del.
Sist endret av Tøffetom; 18. januar 2020 kl. 05:28. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Sitat av Tøffetom Vis innlegg
Hva returnerer ping -c 1 ?

?Kan du hjelpe meg å bruke det sånn som dette:

Kode

#!/bin/bash -i
source /home/"pc1"/.bashrc
cd /home/"pc1"/boot
if ping -c 1 < 1.0 *notat* &> /dev/null
then
    python bootlaunch.py
else
     sudo reboot
fi
*notat*
Jeg vet ikke hvordan det funker, men jeg er interessert i å starte opp enda ping er urovekkende høy. Hele systemet koker under oppstart. Men hvis det ikke er svar å få på 1 sekund må den pcen starte om.

Husker jeg feil eller kan jeg skrive output til destinasjon i stedet for /dev/null?

Ok alt funker, må bare klare å bruke output fra ping -c 1 ip til å gi meg enten ping i tall eller tid uten svar.

Trenger også å enten sette ping-cutoff høyt (eks 10 sekunder), eller ved å gi meg 20 sekunder med sleep før reboot kjøres. Dette er så sykt tidsfelle, plutselig sitter du en halv dag og kriger mot en altfor kjapp reboot-loop fordi uttrykket aldri returnerer true.

Ble akkurat rebootet til Windows i alle fall, så festen er over for min del.
Vis hele sitatet...
Outputen kan skrives til noe annet ja, STDOUT hvis du ikke føyer på noe destinasjon, du kan bruke en fil-destinasjon ved å bytte ut /dev/null med /fil.

Kan det være en idé å se på exit-koder? Ping med svar exiter med 0, ping med timeout exiter med 1.

Du kan endre timeout-value med "-W"-flagget.

Litt vel trøtt i trynet her, vet ikke om det kan være noe hjelp (tror ikke jeg forsto helt )


EDIT; bittelitt mer våken nå:

Kode

#!/bin/sh
ping -c 1 -W 10 192.168.45.5
exitcode=$?
if [ $exitcode -eq 1 ]; then
        echo "Rebooting"
else
        echo "All good"
fi
Vil noe sånt være ok, ved å erstatte "echo"-kommandoen(e)?

-W endrer timeout på pingen, og gir den ene repsonsen som ventes på 10 sekunder på å svare i dette tilfellet.

Her går også output til STDOUT, som du heller kan sende til /dev/null, noe du allerede har styring på (&> /dev/null).
Sist endret av rogerrask; 18. januar 2020 kl. 12:24. Grunn: Trynetrøtthet
Sitat av rogerrask Vis innlegg
Outputen kan skrives til noe annet ja, STDOUT hvis du ikke føyer på noe destinasjon, du kan bruke en fil-destinasjon ved å bytte ut /dev/null med /fil.

Kan det være en idé å se på exit-koder? Ping med svar exiter med 0, ping med timeout exiter med 1.

Du kan endre timeout-value med "-W"-flagget.

Litt vel trøtt i trynet her, vet ikke om det kan være noe hjelp (tror ikke jeg forsto helt )


EDIT; bittelitt mer våken nå:

Kode

#!/bin/sh
ping -c 1 -W 10 192.168.45.5
exitcode=$?
if [ $exitcode -eq 1 ]; then
        echo "Rebooting"
else
        echo "All good"
fi
Vil noe sånt være ok, ved å erstatte "echo"-kommandoen(e)?

-W endrer timeout på pingen, og gir den ene repsonsen som ventes på 10 sekunder på å svare i dette tilfellet.

Her går også output til STDOUT, som du heller kan sende til /dev/null, noe du allerede har styring på (&> /dev/null).
Vis hele sitatet...
Tusen hjertelig, tror vi er i mål her.

Sier fra om det skulle dukke opp noe, men det vil oerraske meg om det gjør.
Så bra!

Tenkte i sta på at reboot hørtes ut som overkill for noe relatert til nettverk forresten.

"systemctl restart networking" kan være verdt forsøket i stedet for en full restart av maskinen.

Anyway, lykke til videre, og del gjerne mer av hva du pusler med!
Sitat av rogerrask Vis innlegg
Så bra!

Tenkte i sta på at reboot hørtes ut som overkill for noe relatert til nettverk forresten.

"systemctl restart networking" kan være verdt forsøket i stedet for en full restart av maskinen.

Anyway, lykke til videre, og del gjerne mer av hva du pusler med!
Vis hele sitatet...
Det er ikke så lett. Bare den lille endringen du gjorde til #!/bin/sh hindret all ROS-funksjonalitet environmentet nødvendig for funksjonalitet. Det er noe humbug med root privelegier nødvendig for å restarte den embeddede prosesseringen av bildestrømmen fra to kameraene. Så mye av det du tenker er helt uproblematisk resulterer fort i en halv dag med merarbeid, og det har jeg ikke tid til nå. Hvis jeg restarter hele maskinen så funker det som det skal, det vet jeg av erfaring, så det blir sånn jeg gjør det inntil situasjonen har stabilisert seg.

Funker nå, takk igjen

https://www.youtube.com/watch?v=pXeTZ0i2vj4&feature=y

https://developer.parrot.com/docs/slamdunk/

Kan ikke skjønne at den ikke er mer populær. Det er noe av det best gjennomførte jeg har sett i ROS. Vet dere hvor svak maskin dette er snakk om?? En jævla K1? Samme bøffet som er i DJI's "Manifold". "Next generation supercomputer" my ass, halve prosesseringskapasiteten ble absorbert av å livedevode ett jævla kamera. Men ja, den parrot løsning var langt forut for sin tid. Ingen som skjønte hvorda de skulle bruke den da
Sist endret av Tøffetom; 19. januar 2020 kl. 02:54. Grunn: Automatisk sammenslåing med etterfølgende innlegg.