terça-feira, 26 de março de 2019

O "Jamming"



Fonte: Revista Saber 
Edição 16 - 1989

Autor Valter Aguiar



Incessantemente praticado durante muitos anos, o jamming era a grande "praga" dos ouvintes de ondas curta do mundo inteiro. Hoje, com a política de abertura da União Soviética, o jamming é muito menos praticado, mas ele  ainda existe. Mas, afinal de contas, o que é o jamming?  Jamming é o nome dado a qualquer espécie de interferência proposital destinada a encobrir o sinal de urna emissora que se deseje censurar, normalmente com fins políticos. O rádio internacional é um meio de comunicação sem fronteiras. Qualquer pessoa pode acompanhar os acontecimentos mundiais através da fonte de informação que bem entender. Pode-se ouvir a Voz da América ou a Rádio Moscou;  a Rádio Pequim ou a Voz da China Livre, de Formosa;  a Voz da Alemanha, de Colônia, ou a Rádio Berlim Internacional. A única limitação, nesta análise, refere-se ao orçamento de cada emissora. Naturalmente, os países ricos podem investir mais em rádios internacionais do que os países pobres. Com isso, as emissoras mais potentes e mais fáceis de captar são, via de regra, as dos países ricos. Entretanto, nem sempre é interessante para um governo permitir que uma emissora estrangeira com pontos de vista contrários ideologicamente seja ouvida pela sua população. E ai que entra a única forma de censura possível nas ondas curtas: o jamming, ou sejas, o bloqueio da emissora através da transmissão de ruído na mesma frequência. Como qualquer outro tipo de censura, o jamming é fruto de governos autoritários. Surgiu na ll Guerra Mundial, com o governo de Adolf Hitler interferindo nas frequências de várias emissoras dos aliados, em particular a BBC. Após a guerra, a União Soviética passou a interferir em várias emissoras do bloco capitalista. Os alvos principais eram a Rádio Liberdade e a Rádio Europa Livre, emissoras sediadas na Alemanha Ocidental e mantidas pelo governo dos Estados Unidos, que transmitem programas nos idiomas falados nos países socialistas. E não se trata apenas das grandes potências. Existem grupos contrários aos governos de seus países que mantêm emissoras clandestinas para difundir as suas ideias. Estas emissoras são alvo frequente de jamming. Um dos muitos exemplos é a conhecida centro americana Rádio Venceremos. Há ainda casos da interferência sofridas pela Voz  da América em chinês durante os episódios da Praça da Paz Celestial, em Pequim.
Existem diversas formas de se diminuir o problema causado pelo jamming. Do lado dos ouvintes, existe um modelo especial de antena de quadro que reduz o nível de ruído pela interferência. Por parte das emissoras, há duas saídas:  aumentar a potência de transmissão ou o número de frequências utilizadas, de forma a esgotar a capacidade de jamming do oponente e ainda restar alguma frequência livre. Tanto em um caso corno no outro, o resultado é o mesmo:  congestionamento da faixa, um problema já abordado em artigo anterior e do qual o jamming sempre foi um dos grandes responsáveis. As emissoras clandestinas, que não têm capacidade de transmissão para utilizar um dos sistemas acima, costumam adotar um artifício bastante interessante: variam suas frequências dia após dia, e até, durante uma mesma transmissão, a fim de despistar os praticantes do jamming.  Felizmente para os ouvintes de onda curta do mundo  inteiro, a política de abertura do presidente soviético Mikhail Gorbachev fez com que o jamming da União Soviética deixasse de ser praticado. No inicio de 1988, a União Soviética parou de interferir nas, transmissões da BBC e da Voz da América em  idioma russo. Posteriormente, foi  a  vez da Rádio Europa Livre e da Rádio Liberdade.
 O jamming continua sendo praticado por outros. países mas, na. maior parte das vezes, de maneira esporádica. Os transmissores que eram utilizados pela União Soviética para jamming agora emitem programas de um serviço mundial da Rádio Moscou, em russo. Esta atitude trouxe excelentes novidades para os radio escutas: menos ruído no ar e um novo e interessante serviço para ser ouvido!


domingo, 3 de fevereiro de 2019

Automatização de tarefas com crontab e cron



Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 19 de janeiro de 2018

Sem sombra de dúvida, um complemento fundamental para shell scripts, é a possibilidade de agendamento de tarefas. Com este recurso, propiciado pelos aplicativos cron e crontab, a tarefa de administração de sistemas fica grandemente facilitada. Eu mantenho cinco portais (Dicas-L, Contando Histórias, Aprendendo Inglês, Inglês Instrumental e o portal do Instituto de Desenvolvimento do Potencial Humano). Todas as tarefas de manutenção destes portais são feitas por meio de shell scripts, com execução automatizada por meio do cron. O envio das mensagens, a publicação das páginas, o backup do banco de dados, a cópia de segurança de todo o portal para outro servidor, a verificação da taxa de ocupação de espaço em disco, alertas em caso de uso excessivo de CPU e muito mais. Em suma, automatizei tudo que pude, caso contrário seria impossível cuidar de tantos portais.

A automatização de tarefas em sistemas GNU/Linux é feita por meio de dois programas: crontab e cron. Além destes programas, temos também, para cada usuário, um arquivo chamado crontab, que é o local onde são gravadas as diretivas que serão seguidas pelo cron. O arquivo crontab é editado pelo comando crontab. Os arquivos crontab dos usuários são gravados no diretório /var/spool/cron/crontabs.


O formato do arquivo crontab

Uma linha do arquivo crontab possui o seguinte formato:
0 6 * * * comando 
Os cinco primeiros campos determinam a periodicidade de execução do comando. Abaixo segue uma explicação do significado de cada um destes campos:

CampoSignificadoValores
1Minutos0 a 59
2Hora0 a 23
3Dia do mês1 a 31
4Mês1 a 12
5Dia da semana0 a 7, sendo que os números 0 e 7 indicam o domingo
6Comando a ser executadoqualquer comando válido do sistema

Exemplos
0  20 * * 1-5 comando
O comando será executado de segunda a sexta (1-5), exatamente às 20h.
10 10 1 * * comando
O comando será executado às 10h10, do dia 1º de todos os meses.
0,10,20,30,40,50, * 31 12 * comando


No dia 31 de dezembro, o comando será executado a cada dez minutos, o dia inteiro. Sempre que um campo for preenchido com o asterisco, significa que aquele campo assumirá todos os valores possíveis.

Podemos abreviar esta notação, em vez de especificar cada um dos minutos, podemos fazer da seguinte forma:
*/10 * 31 12 * comando


Os dias da semana podem também ser indicados por sua abreviação: sun, mon, tue, wed, thu, fri, sat.

Prosseguindo ...
* * * * * comando


Esta linha da crontab fará com que o comando seja executado todos os minutos, de todos os dias, de todos os meses. É apenas um exemplo, não faça isto, a não ser que tenha uma razão muito boa para tal.

Isto é o básico, mas o aplicativo cron oferece mais alguns recursos muito úteis. A tabela abaixo relaciona mais alguns parâmetros que podemos usar na crontab com seu significado:

ParâmetroDescriçãoEquivale a
@rebootocorre ao iniciar o computador
@yearlyocorre 1 vez ao ano0 0 1 1 *
@annuallyo mesmo que @yearly0 0 1 1 *
@monthlyocorre 1 vez ao mês0 0 1 * *
@weeklyocorre 1 vez na semana0 0 * * 0
@dailyExecuta uma vez ao dia0 0 * * *
@midnightmesmo que @daily0 0 * * *
@hourlyocorre 1 vez a cada hora0 * * * *


A diretiva @reboot é particularmente útil, pois em cada sistema nós temos tarefas que precisam ser executadas quando da inicialização da máquina e este parâmetro é um atalho muito conveniente para representar estas atividades.

Para utilizar estes parâmetros, bastam dois campos: o parâmetro em si e o nome do comando. Por exemplo, para executar o backup do banco de dados diariamente, acrescente a seguinte linha ao arquivo crontab:

@daily /usr/local/bin/db_backup.sh


O script db_backup.sh deve ser criado pelo administrador com as diretivas apropriadas para o backup do banco de dados.

Importante, se o seu computador não estiver no ar quando do horário da execução do comando, o cron não fará um novo agendamento, esta situação precisa ser tratada manualmente. A única exceção é a diretiva @reboot, que faz com que o comando especificado seja executado quanto a máquina for ligada.

Edição da crontab
Falta agora descobrir como editar a crontab, o que é bastante simples:
$ crontab -e
A diretiva -e indica ao programa crontab que queremos editar seu conteúdo. O arquivo crontab padrão vem com um conjunto de instruções (em inglês) sobre a sua sintaxe:
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command

Todas as linhas iniciadas por # são comentários, e você pode removê-las quando quiser, sem problema algum.

O arquivo crontab será aberto utilizando o editor de sua preferência. Você pode definir esta preferência através da variável de ambiente EDITOR:export EDITOR=vi 


Se você não conhece o vi, pode usar o nano, que é um editor mais amigável, embora com muito menos recursos.

Caso deseje apenas listar o conteúdo do arquivo crontab, digite:
$ crontab -l
O usuário root pode editar diretamente a crontab dos usuários do sistema que administra. Para isto basta executar o comando:
# crontab -u [nome do usuário] -e 


IMPORTANTE: não é só colocar o comando na crontab e esquecer da vida, precisamos gerar alertas ou verificar a saída gerada pelo arquivo para ver se tudo deu certo.

Por padrão, o cron envia para o usuário um email com o resultado do comando. Através da análise destas mensagens, podemos decidir o que fazer.
Caso queiramos que o email seja enviado para um outro usuário, podemos definir, no arquivo crontab, a variável MAILTO:
 MAILTO="admin@mydomain.com" 
E se eu errar na edição da crontab, corro o risco de perder alguma coisa? Fique tranquilo, sempre que você gravar a crontab, se houver algum erro de sintaxe, o sistema te avisa, não grava as alterações e te pergunta se você quer refazer a edição:
$ crontab -e

crontab: installing new crontab
"/tmp/crontab.KA6PeR/crontab":24: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit? (y/n)


Não se esqueça, sempre coloque o caminho completo do comando, visto que a variável PATH da execução do comando via cron é diferente daquela do seu ambiente.