Sida 1 av 1
Bashscript [LÖST]
Postat: 11 jun 2008, 15:01
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.
Re: Bashscript
Postat: 12 jun 2008, 15:24
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?
Re: Bashscript
Postat: 12 jun 2008, 15:41
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
Re: Bashscript
Postat: 12 jun 2008, 15:44
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

Re: Bashscript
Postat: 12 jun 2008, 15:47
av andol
Jovisst vill man ha en else-sats.
Mitt kodsnutt handlade bara om att byta ut konstruktionen alive=`kommandoharrang`.
Re: Bashscript
Postat: 12 jun 2008, 15:47
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
Re: Bashscript
Postat: 13 jun 2008, 01:07
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

? 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.
Re: Bashscript
Postat: 13 jun 2008, 08:31
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?
Re: Bashscript
Postat: 13 jun 2008, 11:49
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

, 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