Sitat av
Tøffetom
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.
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. 11:24.
Grunn: Trynetrøtthet