Bashscript [LÖST]

Här diskuteras programmering och utveckling
Dexxa
Inlägg: 226
Blev medlem: 12 aug 2006, 19:46
OS: Crunchbang

Bashscript [LÖST]

Inlägg av Dexxa »

Tjo, håller på att sätta ihop ett script,

Dator1 pingar Dator2, om Dator2 svarar händer inget med Dator1, men ifall den inte svarar så ska Dator1 stänga av sig om 20min.
Men ifall Dator2 svarar inom dom där 20min så ska den inte stänga av sig.

Hoppas ni förstår vad jag menar, lite rörigt kanske.
Mina skills när det gäller bash är inte så höga så skulle vara väldigt glad ifall någon kunde hjälpa mig,

EDIT: Har kommit en bit på vägen

#!/bin/sh

alive=`/usr/local/sbin/fping 10.32.0.9 | grep alive | wc -l`
date=`date`

if [ $alive -eq 1 ]; then
/sbin/shutdown -c && exit;
fi

/sbin/shutdown -h +20


Nu verkar det funka som det ska.
KiviE
Inlägg: 2157
Blev medlem: 25 okt 2007, 14:00
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Luleå

Re: Bashscript

Inlägg av KiviE »

Dexxa skrev:#!/bin/sh

alive=`/usr/local/sbin/fping 10.32.0.9 | grep alive | wc -l`
date=`date`

if [ $alive -eq 1 ]; then
/sbin/shutdown -c && exit;
fi

/sbin/shutdown -h +20
Ett tips när man lägger in kod är att använda code tagarna.

Kod: Markera allt

#!/bin/sh

alive=`/usr/local/sbin/fping 10.32.0.9 | grep alive | wc -l`
date=`date`

if [ $alive -eq 1 ]; then
   /sbin/shutdown -c && exit;
fi

/sbin/shutdown -h +20
Varför har du med date=`date`? den verkar du ju inte använda....

Kod: Markera allt

#!/bin/sh

alive=`/usr/local/sbin/fping 10.32.0.9 | grep alive | wc -l`

if [ $alive -eq 1 ];
then
   /sbin/shutdown -c
else
  /sbin/shutdown -h +20
fi

exit 0
Edit: det här medför att skriptet måste köras väldigt ofta, hur ofta har du tänkt köra det?
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Bashscript

Inlägg av andol »

Annars kan du testa direkt på exitkoden från fping.

Kod: Markera allt

if fping -q 10.32.0.9; then
    gör magiska saker
fi
KiviE
Inlägg: 2157
Blev medlem: 25 okt 2007, 14:00
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Luleå

Re: Bashscript

Inlägg av KiviE »

andol skrev:Annars kan du testa direkt på exitkoden från fping.

Kod: Markera allt

if fping -q 10.32.0.9; then
    gör magiska saker
fi
Problemet som jag ser det är att han ändå måste ha en else sats så spelar ingen större roll, antar att skriptet kommer köras var 5e minut eller så... om hosten plötsligt vaknar till liv igen så ska den avsluta avstängningen.

Fast skriptet kommer ju gå lite snabbare på ditt sätt :)
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Bashscript

Inlägg av andol »

Jovisst vill man ha en else-sats.

Mitt kodsnutt handlade bara om att byta ut konstruktionen alive=`kommandoharrang`.
KiviE
Inlägg: 2157
Blev medlem: 25 okt 2007, 14:00
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Luleå

Re: Bashscript

Inlägg av KiviE »

andol skrev:Jovisst vill man ha en else-sats.

Mitt kodsnutt handlade bara om att byta ut konstruktionen alive=`kommandoharrang`.
Kom på det ;) så la till en rad till i slutet av mitt inlägg, tänkte inte så långt ;) hehe
Dexxa
Inlägg: 226
Blev medlem: 12 aug 2006, 19:46
OS: Crunchbang

Re: Bashscript

Inlägg av Dexxa »

Tack så mycket för all hjälp,

EDIT:

Kod: Markera allt

#!/bin/sh

alive=`/usr/local/sbin/fping -q 10.32.0.9 | grep alive | wc -l`
if [ $alive -eq 1 ];
then

ps=`/bin/ps aux | grep shutdown -h +20 | wc -l`
if [ $ps -eq 1 ];
then
        /bin/kill $(grep /sbin/shutdown -h +20)
else
        exit;
fi

else
        /sbin/shutdown -h +20
fi

exit 0
Den här kommer inte funka så bra va :P? somsagt, försöker göra så att ifall datorn svarar på ping inom dom där 20min så ska shutdownen avbrytas.. och det har jag ingen aning om hur jag ska göra.
KiviE
Inlägg: 2157
Blev medlem: 25 okt 2007, 14:00
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Luleå

Re: Bashscript

Inlägg av KiviE »

Kod: Markera allt

#!/bin/sh

if fping -q 10.32.0.9;
then
   /sbin/shutdown -c
else
  /sbin/shutdown -h +20
fi

exit 0
Kommer att fungera men du måste ju köra skriptet i ett cronjob.

Funkar det inte att köra shutdown -c? eller varför försöker du döda processen?
Ska det stå +20 och inte bara 20?
Dexxa
Inlägg: 226
Blev medlem: 12 aug 2006, 19:46
OS: Crunchbang

Re: Bashscript

Inlägg av Dexxa »

KiviE skrev: Kommer att fungera men du måste ju köra skriptet i ett cronjob.

Funkar det inte att köra shutdown -c? eller varför försöker du döda processen?
Ska det stå +20 och inte bara 20?
Ja, Jag kör scriptet i cronjob. anledningen till att jag kör +20 är att freebsd vill att det ska vara så för att funka :P, och shutdown -c funkar inte i freebsd, det är därför jag kör /bin/kill $(grep /sbin/shutdown -h +20)

EDIT: kom på att det är lite smartare att köra /usr/bin/pkill shutdown istället för /bin/kill $(grep /sbin/shutdown -h +20)

EDIT2: Nu funkar sciptet precis som jag vill, tack för all hjälp, så här ser det ut för tillfället

Kod: Markera allt

#!/bin/sh

if /usr/local/sbin/fping -q 10.32.0.1;
then
  /usr/bin/pkill shutdown
else
  /sbin/shutdown -h +20
fi

exit 0
Skriv svar

Återgå till "Programmering och webbdesign"