Niestety nie działa jak należ.
Gdy podaje się godzinę z minutami to zadziała tylko i wyłącznie o tej godzinie. Gdy nie poda się minut to co minutę w danej godzinie będzie próbowało co przy powyższym skrypcie też nic nie da jeśli zalogujesz się o innej godzinie.
Nie podawanie godzin ani minut tylko dnia tygodnie sprawi, że będzie się uruchamiało co minutę przez cały dzień - skoro jest wyłączenie tak uruchamiane to sieć będzie cały czas odłączona.
Walczę już z tym od 12:00 i po usunięci bugów doszedłem do czegoś takiego:
Kod: Zaznacz cały
#!/bin/bash
_userSched="$1"
_startHour=$(echo "$2" | /usr/bin/awk '{split($1,a,":"); print a[1]}')
_startMinute=$(echo "$2" | /usr/bin/awk '{split($1,a,":"); print a[2]}')
_stopHour=$(echo "$3" | /usr/bin/awk '{split($1,a,":"); print a[1]}')
_stopMinute=$(echo "$3" | /usr/bin/awk '{split($1,a,":"); print a[2]}')
_start=$[($_startHour*60)+$_startMinute]
_stop=$[($_stopHour*60)+$_stopMinute]
_userLoged=$(/usr/bin/users | /usr/bin/awk '{print $1}')
if [ "$_userLoged" = "$_userSched" ]; then
_Time=$(echo $(date +%H)*60+$(date +%M)|bc -l)
if [ -z "$(/sbin/ifconfig | /bin/grep eth0)" ]; then
if [ $_Time -ge $_start ] && [ $_Time -lt $_stop ]; then /sbin/ifup eth0; fi
else
if [ $_Time -lt $_start ] || [ $_Time -ge $_stop ]; then /sbin/ifdown eth0; fi
fi
fi
exit
trzeba zapisać tak jak poprzednio a potem w "sudo crontab -u root -e":
Kod: Zaznacz cały
* * * * 0 /usr/sbin/netsched.sh aga 11:00 19:00
* * * * 1 /usr/sbin/netsched.sh aga 17:00 19:00
* * * * 2 /usr/sbin/netsched.sh aga 09:00 10:30
* * * * 3 /usr/sbin/netsched.sh aga 17:00 19:00
* * * * 4 /usr/sbin/netsched.sh aga 17:00 19:00
* * * * 5 /usr/sbin/netsched.sh aga 09:00 11:15
* * * * 6 /usr/sbin/netsched.sh aga 11:00 19:00
i masz harmonogram dla użytkownika "aga" na cały tydzień, od niedzieli (pierwszy wpis) do soboty.
CRON uruchamia skrypt co minutę a ten sprawdza użytkownika i jeśli się zgadza podany z zalogowanym to sprawdza czy sieć jest podniesiona i czy obecna godzina znajduje się w podanych widełkach.
Jeśli sieć podniesiona i obecna godzina w widełkach tak to nic nie robi a jeśli nie to rozłącza "eth0".
Jeśli sieć nie działa a obecna godzina wejdzie w widełki to podnosi sieć.
I tak sprawdza co minutę.
I tym razem to działa jak należy - sprawdzałem na sobie
