Como posso escrever um cron job que bloqueie minha internet das 19h às 7h? (Então eu posso dormir um pouco)

6

Estou usando o OSX 10.6 e ele tem o cron integrado. Como posso escrever um cron job que bloqueará minha internet das 19h às 7h todos os dias?

Tenho certeza de que isso deve ser simples, mas só consegui encontrar um exemplo on-line e não funcionou. Ele disse para:

set /etc/hosts.allow file to 
be empty 
set hosts.deny file to
ALL : ALL

Eu fiz isso e o Google ainda surgiu.

    
por ᔕᖺᘎᕊ 12.06.2010 / 05:31

9 respostas

8

Obrigado Armardeep, depois de passar muitas horas tentando depurar um problema com o trabalho que não está sendo executado pelo root, consegui o que você disse trabalhando. Aqui estão os meus passos exatos:

No tipo de terminal:

$ sudo crontab -eu root

Em seguida, digite:

0 19 * * * /sbin/ifconfig en0 down > /dev/null
0 7 * * * /sbin/ifconfig en0 up > /dev/null

e isso faz! Obrigado Amardeep e Stephenr

    
por 12.06.2010 / 20:06
4

A resposta do Controle dos Pais de Alan é provavelmente a melhor maneira de fazer isso. Mas apenas para a posteridade eu vou descrever por que sua tentativa de hosts não funcionou e descrever uma solução do tipo cron.

O hosts.allow (e seus equivalentes hosts.deny) são usados para especificar hosts que são permitidos (ou não permitidos) para acessar a sua máquina com determinados serviços. O que você está procurando fazer é o contrário, e é por isso que isso não funcionou.

As entradas do crontab que devem desconectar e reconectar sua rede seriam "algo" como:

0 19 * * * /path/ifconfig eth0 down 1> /dev/null
0  7 * * * /path/ifconfig eth0 up   1> /dev/null

o cron é implementado de forma diferente em muitos sistemas * nix e existem variações no formato acima, então consulte sua página de manual. Desculpe eu não posso oferecer detalhes específicos do OS X. Por razões de segurança, algumas implementações do cron apenas definem variáveis de ambiente limitadas ao executar o comando, portanto você deve especificar o caminho completo digitando 'which ifconfig' no prompt do shell. Você pode depurá-lo um pouco removendo o redirecionamento stdout e muitos crons devem enviar por e-mail a saída do comando ou você pode apenas redirecionar para um arquivo de log.

Não tenho certeza de como o dispositivo ethernet do OS X é chamado ... pode ser algo diferente de eth0. Basta digitar ifconfig e ele deve exibir os nomes dos dispositivos ativos. Você pode ter que ser root para executar o ifconfig. Você certamente precisará ser root para editar o arquivo crontab.

    
por 12.06.2010 / 05:56
3

No OS X, considere o uso dos Controles dos pais . Ele fará exatamente o que você está procurando.

    
por 12.06.2010 / 05:37
2

SelfControl faz exatamente isso. Mesmo a reinicialização não irá pará-lo.

    
por 27.07.2010 / 18:17
1

Por que usar o cron? Verifique este aplicativo, muito mais agradável e faz muito mais: link

    
por 12.06.2010 / 05:37
1

Adicione o seguinte ao crontab para excluir a rota padrão que efetivamente desativará qualquer comunicação com a Internet (mas ainda manterá a conectividade de rede).

Para desativar (onde a.b.c.d é o seu roteador):

route delete default a.b.c.d

Para reativar:

route add default a.b.c.d
    
por 12.06.2010 / 15:05
1

Apenas desconecte-o ou desligue-o, por que perder tempo procurando uma solução que requer apenas de 1 a 2 dedos. Por que isso foi postado até lol

    
por 14.06.2010 / 02:24
0

Em um mac, a porta ethernet é chamada en0 e a porta wifi en1.

Você pode verificar isso acessando as Preferências do Sistema - > Rede, em seguida, selecionando Ethernet, clicando em Avançado, em seguida, olhando para a guia Ethernet - isso irá dizer-lhe o endereço MAC. Faça o mesmo, mas selecione Airport para obter o endereço MAC da porta wifi.

Então, em um terminal digite ifconfig para obter uma lista de interfaces de rede, que mostrará o nome da interface para cada interface (en0, en1, etc) e uma carga de outras informações, incluindo o endereço mac que é rotulado ' éter '.

Depois de saber quais são os nomes das interfaces, você pode configurar tarefas agendadas para desativá-las, conforme descrito pela Amardeep. - use en0 em vez de eth0 e repita para a porta wifi.

    
por 12.06.2010 / 07:54
0

Você pode encontrar Liberdade como uma boa alternativa se você for preguiçoso. Custa 10 u $ s, mas é uma boa maneira de dizer ok, sem distrações.

    
por 18.06.2010 / 10:51