Ajuda com script (desativar conexão com a internet)

1. Ajuda com script (desativar conexão com a internet)

sheldon
sheldon

(usa Debian)

Enviado em 17/05/2015 - 18:43h

olá pessoal, tudo bem?
estou tentando criar um script para bloquear a conexão com a internet
em determinados horários do dia, aqui em casa. depois de algumas tentativas sem sucesso
de usar squid e iptables, então, resolvi fazer um script para isso.
mas não está dando muito certo, não. alguem pode me ajudar?

segue o código do script:

#!/bin/bash

WEEKDAYS=("mon" "tue" "wed" "thu" "fri" "sat" "sun")

block_data=\
"block, mon tue wed thu fri, 00:00-05:59;"\
"block, sat sun, 01:00-05:59;"

updatetime=10 #secs
started=false

execute() {

name="$1"
day="$2"
from_time="$2"
to_time="$3"

if [ "$name" == "block" ]; then
echo "conexão com internet desativada!!!"
#iptables -I INPUT -j REJECT
#iptables -I FORWARD -j REJECT
#iptables -I OUTPUT -j REJECT

elif [ "$name" == "none" ]; then
echo "conexão com internet ativada!!!"
#iptables -I INPUT -j ACCEPT
#iptables -I FORWARD -j ACCEPT
#iptables -I OUTPUT -j ACCEPT

fi
}

scheduleCalendar() {
count=0
OIFS=$IFS; IFS=";"
for line in $block_data; do
Ok=false
OIFS=$IFS; IFS=","
range_value=($line)
name=${range_value[0]#* }
days=(${range_value[1]#* })
IFS=$OIFS
from_hour=""
from_minute=""
to_hour=""
to_minute=""
OIFS=$IFS; IFS="-"
arr=(${range_value[2]#* })
for s in ${arr[*]}; do
if [ -z "$from_hour" ]; then
from_hour=${s%%:*}
from_minute=${s##*:}
else
to_hour=${s%%:*}
to_minute=${s##*:}
fi
done
IFS=$OIFS
h=`date +%H`
m=`date +%M`
u=$((`date +%u`-1))
OIFS=$IFS; IFS=" "
for day in ${days[*]}; do
if [ "${WEEKDAYS[$u]}" == "$day" ]\
&& [ $h$m -ge $from_hour$from_minute ]\
&& [ $h$m -le $to_hour$to_minute ]; then
Ok=true
execute $name $day\
$from_hour:$from_minute\
$to_hour:$to_minute
fi
done
IFS=$OIFS
count=$(($count + 1))
done
IFS=$OIFS
if [ $Ok == false ]; then
execute "none" ${WEEKDAYS[$u]} $h:$m ""
fi
}

start() {
started=true
while $started; do
scheduleCalendar
sleep $updatetime
done
}

stop() {
started=false
}

case $1 in
start)
start;;
stop)
stop;;
restart)
stop; start;;
esac


grato se alguem poder ajuda.

EDIT: obs: eu comentei os códigos do iptables, por que as regras estavam ficando dublicada.




  


2. Re: Ajuda com script (desativar conexão com a internet)

sheldon
sheldon

(usa Debian)

Enviado em 19/05/2015 - 16:42h


Na verdade minha dúvida é como desativar/ativar a conexão com a internet pelo iptables.


3. Re: Ajuda com script (desativar conexão com a internet)

thinomar
thinomar

(usa Linux Mint)

Enviado em 19/05/2015 - 18:10h

Tenta isso, ajustando os horários e dias para as suas necessidades:
# Bloquear tudo das 09:00 as 18:00 de segunda a sexta
iptables -I INPUT -m time --timestart 09:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j DROP
iptables -I FORWARD -m time --timestart 09:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j DROP
iptables -I OUTPUT -m time --timestart 09:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j DROP

# Liberar tudo das 18:00 as 9:00 de segunda a sexta
iptables -I INPUT -m time --timestart 18:00 --timestop 09:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT
iptables -I FORWARD -m time --timestart 18:00 --timestop 09:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT
iptables -I OUTPUT -m time --timestart 18:00 --timestop 09:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT

--
The flames warm my languid soul


4. Re: Ajuda com script (desativar conexão com a internet)

sheldon
sheldon

(usa Debian)

Enviado em 19/05/2015 - 20:36h


Beleza, funcionou
mas eu tive que adaptar algumas coisa, veja como ficou:

iptables -I INPUT -m time --timestart 00:00 --timestop 06:00 --kerneltz --weekdays Mon,Tue,Wed,Thu,Fri -j DROP
iptables -I FORWARD -m time --timestart 00:00 --timestop 06:00 --kerneltz --weekdays Mon,Tue,Wed,Thu,Fri -j DROP
iptables -I OUTPUT -m time --timestart 00:00 --timestop 06:00 --kerneltz --weekdays Mon,Tue,Wed,Thu,Fri -j DROP


obrigado




5. Re: Ajuda com script (desativar conexão com a internet)

thinomar
thinomar

(usa Linux Mint)

Enviado em 20/05/2015 - 13:23h

Ótimo. Caso a dúvida tenha sido mesmo sanada, marque-a como resolvida.
--
The flames warm my languid soul






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts