quarta-feira, 26 de junho de 2013

sshpass - Passando senha como parâmetro no SSH e scp sem registro de chave pública

Olá, galera.

Vou mostrar para vocês como acessar um servidor remoto através do SSH, passando a senha como parâmetro pela linha de comando, ou no shell script, sem que seja necessário registrar uma chave pública.

Para poder fazer isso, primeiro você precisa baixar/instalar um programinha chamado sshpass.

Em distribuições baseadas no Debian, você pode instalar com:

# aptitude install sshpass

Agora, cada vez que você quiser passar a senha como parâmetro, é só você colocar o sshpass antes do comando.

Exemplo:

$ sshpass -p "seu_password" scp root@seu_ip:/etc/hosts /root
Ou:
$ sshpass -p "seu_password" ssh root@seu_ip

Também dá pra passar uma variável como parâmetro:

$ sshpass -p "$PASS_SERVER" scp -P52000 root@$IP_SERVER:/etc/hosts /root


Abraço a todos!

OpenVPN no Ubuntu Server - Instalação e configuração



OpenVPN no Ubuntu Server - Instalação e configuração

Ambiente na Matriz:
  • ADSL com IP: 200.217.222.222
  • LAN com a classe: 192.168.1.0/24
Ambiente na Filial:
  • ADSL com IP: 200.141.64.33
  • LAN com a classe: 192.168.2.0/24

Instalações e configurações

Instalar o pacote openvpn e biblioteca lzo:

# apt-get install openvpn liblzo2-dev

Criar chave de segurança:

# cd /etc/openvpn
# openvpn --genkey --secret /etc/openvpn/chave


Verificar se a chave foi criada:

# cat /etc/openvpn/chave

Criar arquivo de configuração na matriz:

# vi /etc/openvpn/matriz.conf

Incluir o texto abaixo no arquivo: "/etc/openvpn/matriz.conf"

# Usar como interface o driver TUN
dev tun
# 10.0.0.1 IP que será assumido na matriz
# 10.0.0.2 IP remoto, ou seja, esse será o IP da filial

ifconfig 10.0.0.1 10.0.0.2
# Entra no diretório onde se encontram os arquivos de configuração
cd /etc/openvpn
# Indica que esse túnel possui uma chave de criptografia
secret chave
# OpenVPN usa a porta 5000/UDP por padrão.
# Cada túnel do OpenVPN deve usar
# uma porta diferente.
# O padrão é a porta 5000

port 5000
# Usuário que rodará o daemon do OpenVPN
user nobody
# Grupo que rodará o daemon do OpenVPN
group nobody
Usa a biblioteca lzo
comp-lzo
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para manter
# a conexão de pé em firewall statefull
# Muito recomendado, mesmo se você não usa
# um firewall baseado em statefull.

ping 15
# Nível de log
verb 3


--script-security 3 system
# Informações de status da conexão
status /var/log/openvpn/matriz-staus.log

# Arquivo de log
log-append /var/log/openvpn/matriz.log

# Criando rotas
up /etc/openvpn/rotas.up

# Apagando rotas
down /etc/openvpn/rotas.down

# mkdir /var/log/openvpn
# touch /var/log/openvpn/filial-status.log
# touch /var/log/openvpn/filial.log



# vim rotas.up


route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.6.0.2 dev tun0

# vim rotas.down

route del -net 192.168.0.0 netmask 255.255.255.0 gw 10.6.0.2 dev tun0

Agora é só iniciar a VPN:


Executar comando para iniciar o OpenVPN:

# openvpn --config /etc/openvpn/matriz.conf -daemon &

Verificar se a conexão VPN na matriz está OK:

# ifconfig tun0

Configuração da filial

Instalar o pacote openvpn e biblioteca lzo:

# apt-get install openvpn liblzo2-dev

Copiar a chave de segurança da matriz para a filial:

# scp /etc/openvpn/chave ip_filial:/etc/openvpn

Criar o arquivo de configuração na filial:

# vi /etc/openvpn/filial.conf

Incluir o texto abaixo no arquivo: "/etc/openvpn/filial.conf"

# Usar como interface o driver TUN
dev tun
# 10.0.0.1 IP que será assumido na matriz
# 10.0.0.2 IP remoto, ou seja, esse será o IP da filial

ifconfig 10.0.0.2 10.0.0.1
# Indica onde está o IP da Matriz (essa é a única linha que acrescentamos
# no arquivo de configuração da filial), o resto é tudo igual.

remote 200.217.222.222
# Entra no diretório onde se encontram os arquivos de configuração
cd /etc/openvpn
# Indica que esse túnel possui uma chave de criptografia
secret chave
# OpenVPN usa a porta 5000/UDP por padrão.
# Cada túnel do OpenVPN deve usar
# uma porta diferente.
# O padrão é a porta 5000

port 5000
# Usuário que rodará o daemon do OpenVPN
user nobody
# Grupo que rodará o daemon do OpenVPN
group nobody
# Usa a biblioteca lzo
comp-lzo
# Envia um ping via UDP para a parte
# remota a cada 15 segundos para manter
# a conexão de pé em firewall statefull
# Muito recomendado, mesmo se você não usa
# um firewall baseado em statefull.

ping 15
# Nível de log
verb 3




Iniciar o serviço OpenVPN na filial:

# openvpn --config /etc/openvpn/filial.conf -daemon &

Verificar se a conexão VPN na matriz está OK:

# ifconfig tun0

Testando conexão

Na matriz, pingar a filial:

# ping 10.0.0.2

Na filial, pingar a matriz:

# ping 10.0.0.1

Criando as rotas

Ativar o roteamento no kernel em ambas as pontas (matriz e filial):

# echo 1 > /proc/sys/net/ipv4/ip_forward

Para adicionar a rota com destino à rede da filial, execute de dentro do servidor da matriz, o seguinte comando:

# route add -net 192.168.2.0/24 gw 10.0.0.2

Para adicionar a rota com destino à rede da matriz, execute de dentro do servidor da filial, o seguinte comando:

# route add -net 192.168.1.0/24 gw 10.0.0.1


Fonte: VPN em Linux com OpenVPN [Artigo]

segunda-feira, 24 de junho de 2013

Redundância de PtP usando bonding com Mikrotik

powered_mfm
Hoje falaremos sobre bonding, que resumidamente sua função é de utilizar duas placas de rede ou mais, para redundância ou soma de banda aumentando o limite de tráfego.
Hoje utilizaremos como redundância, no caso de PtP e tambem de placa de rede, caso o link principal fique down ( não importando de quem foi a culpa, se foi do rádio ou da porta de rede ) ele vai passar automaticamente para o link secundário ( slave ).
Teremos o seguinte cenário, imagine que temos um duplo ponto-a-ponto em dois pontos específicos, e o objetivo de ambos no mesmo roteador em cada um dos pontos é que caso um PtP trave, o outro entra em ação instantaneamente.
bounding1
A ideia deste post é criar exatamente isso, uma redundância de PtP para o seu cliente com o minimo dificuldade.
Primeiro vamos as informações sobre os roteadores e os rádios.
Mikrotik 1
ether1: 192.168.1.1/24
radio1(link1): 192.168.1.2/24
ether2: 192.168.2.1/24
radio1(link2): 192.168.2.2/24
bonding1: 192.168.100.1/24 ( essa interface ainda não existe )
Mikrotik 2
ether1: 192.168.1.4/24
radio2(link1): 192.168.1.3/24
ether2: 192.168.2.4/24
radio2(link2): 192.168.2.3/24
bonding2: 192.168.100.2/24 ( essa interface ainda não existe )
Como já expliquei como adicionar IPs nas portas nos meus posts anteriores, vou presumir que você já saiba fazer isso, agora vamos criar as interfaces bonding.
Mikrotik1
Interfaces -> + ( adicionar ) -> Bonding
Irá aparecer a seguinte tela:
bonding1
O Name você manterá bonding1 e logo após irá para a tela Bonding que veremos na foto abaixo:
bonding2
Em Slaves colocaremos a lista das portas podendo colocar quantas for possível, porém só iremos colocar a ether1 e após clique na seta para baixo e irá aparecer um novo campo para colocar a ether2.
Agora vem o segredo, em Mode escolheremos a opção Active Backup, em que ela que fará todo o trabalho de verificar o link principal ( que está selecionado na opção abaixo do Mode, Primary, você selecionará a ether1 ) se está de pé ou não e caso não esteja ele vai alterar automaticamente para o link secundário.
Caso você queira saber mais sobre as outras opções ( até mesmo de somar a banda dos dois links ) veja a Wiki da Mikrotik sobre a bouding.
Agora na lista de Interfaces, você irá ver que a sua bonding foi criada e basta você adicionar IP a essa nova porta.
Fazendo exatamente a mesma coisa no Mikrotik 2, alterando apenas o Name da bonding para bonding2 e adicionando o IP descrito a cima para o Mikrotik 2, está pronto a sua redundância.
Você consegue pingar 192.168.100.2 do Mikrotik 1 para o Mikrotik 2 sem problemas agora você basta alterar a rota da sua rede interna da matriz para poder pingar a rede interna da sua filial.
Rede Interna Matriz
192.168.150.0/24
Rede Interna Filial
192.168.200.0/24
Acesse o seguinte menu
IP -> Routes -> + ( adicionar )
e criaremos a seguinte regra para o Mikrotik 1:
route1
e para o Mikrotik 2 será:
route2
pronto com isso sua rede Matriz pinga diretamente a rede da filial.
Com isso sua empresa estará segura caso um dos links de PtP caia, qualquer dúvida só comentar. Espero que tenha sido útil.

quarta-feira, 19 de junho de 2013

Ubuntu SC: Desabilitando a janela de relatório de erro no Ubuntu

Desde o Ubuntu 11.10 os relatórios de erros do Apport – que até então permaneciam habilitados somente nas versões de testes – estão ativados por padrão também na versão final, o que acaba incomodando depois de um tempo.
Apesar do relatório quase nunca ser exibido para quem usa apenas os aplicativos nativos do sistema, o erro aparece sempre que alguma exceção é detectada visando relatar os problemas para os desenvolvedores do aplicativo.
Janela de relatório de erro no Ubuntu 12.04Aviso de relatório de erros do Apport no Ubuntu 12.04
No entanto, como nem tudo são flores, muitas vezes aplicativos - basicamente – mal desenvolvidos, desatualizados e/ou incompatíveis com o sistema acabam gerando exceções repetidamente e, consequentemente, vários avisos de relatório de erros do Apport, oferecendo desconforto para quem está utilizando o sistema.
Com base nisso, resolvi publicar uma simples solução para desabilitar este aviso na versão 12.04 do Ubuntu.

Desabilitando o Apport

Para desabilitar o Apport é simples: basta digitar a linha de comando abaixo via terminal.
sudo sed -i 's/enabled=1/enabled=0/' /etc/default/apport && sudo service apport stop
Feito isso, o Apport estará desativado permanentemente em seu sistema. Se preferir, também pode desinstalar o pacote apport através da Central de programas do Ubuntu :)

sexta-feira, 14 de junho de 2013

bash - Dica simples para aumentar o tamanho do histórico

Essa dica é um complemento desta:
O que fazer para estender o histórico de 500 para 1000 linhas:

Adicione no arquivo ~/.bashrc:

export HISTSIZE=1000
export HISTFILESIZE=$HISTSIZE

Não se esqueça de atualizar o terminal:

$ source ~/.bashrc

Mas, frequentemente, é necessário limpar o terminal:

$ reset

Como disse, é uma dica bem simples, mas é sempre bom agrupar várias dicas úteis.
Espero ter ajudado.

quinta-feira, 13 de junho de 2013

MiniDLNA - Servidor de mídia descomplicado

Introdução

Esse é meu primeiro artigo aqui no VOL, então, decidi abordar um tema que me deu algumas dores de cabeça durante um tempo.

Há muito tempo sou viciado em séries de TV, filmes, etc, mas às vezes, cansa e tal, até por questão de qualidade mesmo.

Mas, enfim, já tem um bom tempo que venho buscando uma maneira de montar um media center. Já busquei na Internet, já vim aqui no VOL, mas nenhuma das soluções que encontrei foi totalmente satisfatória. Entre elas, estavam:
  • XMBC
  • PS3MediaServer
  • MediaTomb
  • uShare

Porém, há alguns meses atrás, um monstro de 29" CRT que tinha aqui em casa finalmente morreu... Então, junto com a nova 'moradora', uma SmartTV Samsung com Wi-Fi e tudo mais, um amigo me apresentou um programinha muito simples, mas com um potencial incrível, de fácil instalação e manutenção, além de leve e estável. E é justamente sobre essa 'benção' que venho compartilhar com vocês.

P.S.: antes de irmos para a parte interessante, deixe-me apresentar o material usado nesse processo:
  • Notebook STI IS1462 com Slackware 14
  • Roteador Intelbras WRN240
  • SmartTV Samsung - SERIES 5 - 5300

Apresento-lhes: MiniDLNA

MiniDLNA é um servidor objetivo, compatível com clientes DLNA/UPnP. O daemon MiniDLNA compartilha arquivos de mídia (músicas, imagens e vídeos) com clientes numa rede.

Esses clientes incluem aplicações, tais como VLC e XMBC, além de dispositivos, como por exemplo, smartphones, TVs e consoles de jogos (PS3 e Xbox 360).

O MiniDLNA é um alternativa leve ao MediaTomb, por exemplo. Ele não possui uma interface WEB para configuração, as poucas necessárias devem ser feitas editando um arquivo de texto. 
 
 

Instalação / Configuração

Instalação

Em primeiro lugar, o MiniDLNA depende diretamente apenas do pacote ffmpeg.

Debians-like e RPMs-likes: os repositórios oficiais já contém os pacotes já compilados. Além do que, também podem ser encontrados no site:
Slackware: os pacotes podem ser obtidos no SlackBuilds:
E para as demais distribuições, a página oficial do projeto é:
Se você baixar os arquivos binários ".deb", ".rpm", basta iniciá-lo normalmente com dois cliques ou pelo terminal, usando o gerenciador de pacotes da sua distribuição.

Se você, assim como eu, prefere compilar o código, o procedimento é o padrão:

$ ./configure
$ make

# make install


Configuração

O MiniDLNA não possui uma manpage, para acessar a ajuda, use:

$ minidlna -h

Mas, tome isso apenas como um complemento, porque a maior parte do que é mostrado, pode ser definido do arquivo "minidlna.conf".

O arquivo de configuração do programa é criado no diretório "/etc", o caminho completo para o arquivo é: "/etc/minidlna.conf"

No arquivo a seguir, mostrarei as configurações básicas para o uso do servidor:

#network_interface=eth0  # Se estiver comentada, ela é auto configurada, porém, por vezes, é necessário definir manualmente.

media_dir=/home/usuario/midia  # Nesta área são definidos os diretórios de
media_dir=A,/home/usuario/musicas  #origens dos arquivos de mídia.
media_dir=P,/home/usuario/imagens
media_dir=V,/home/usuario/videos

friendly_name=  # Esse item é opcional, mas bem útil, é aqui que será definido o nome pelo qual seu servidor será reconhecido.

db_dir=/var/cache/minidlna  # Essa linha não pode estar comentada, ela mostra o caminho para o banco de dados.

log_dir=/var/log  # Essa linha não pode estar comentada.

inotify=yes  # Use 'no', se você tem poucas fontes de dados, será necessário o servidor se um novo arquivo de mídia for inserido.


A linha "media_dir=/home/usuario/midia", mostra que ele vai buscar os arquivos no diretório descrito, porém, sem distinção de tipo, isso é viável em alguns casos (poucos arquivos para serem exibidos).

Porém, se assim como eu, o seu objetivo for manter um mini cinema em casa (hoje tenho uns 160 GB de filmes, 393 GB de séries e 124 GB de músicas), aí a coisa complica um pouco, pois manter tudo isso misturado é impensável.

Para isso, temos basicamente três marcadores, que dizem ao servidor que tipo de arquivo ele vai buscar em determinado diretório:
  • A → para áudio (e.g.: media_dir=A,/home/usuario/musicas)
  • P → para imagens (e.g.: media_dir=P,/home/usuario/imagens)
  • V → para vídeos (e.g.: media_dir=P,/home/usuario/videos) 

Em funcionamento

Após a instalação e as configurações já devidamente efetuadas, a operação propriamente dita, é a parte mais trivial de todo o processo.

Depois de inserir o caminho para os diretórios onde estarão armazenados os arquivos de mídia, precisamos apenas executar o seguinte comando no terminal:

# minidlna -d -R

Ou, para quem preferir, pode-se criar um lançador ou um pequeno script para iniciar o serviço.

O parâmetro "-d" (opcional) faz com que o MiniDLNA rode em modo debug. Nesta opção, ele não ficará em segundo plano, em compensação, será mostrado todo e qualquer evento durante a execução do servidor.

Já o parâmetro "-R" (recomendo) força o MiniDLNA para que faça o rescan completo dos diretórios cada vez que ele for iniciado com esse parâmetro, buscando por novos itens.

As imagens abaixo representam dois clientes distintos para o serviço do MiniDLNA:
Linux: 
MiniDLNA - Servidor de mídia descomplicado
Nos testes, foi o usado o player VLC, mas nada impede de usar outro. Podemos ver aqui que ele listou quatro diretórios dentro do TsUrIu_DLNA_Server, que, por sua vez, é o nome do meu servidor, (Browse Folders, Music, Pictures e Video), sendo que no meu arquivo conf, só estão marcados Music e Video, se eu tentar acessar os outros, estarão obviamente vazios.
Linux: 
MiniDLNA - Servidor de mídia descomplicado
Como a TV é Samsung, ela possui o AllShare que usa o mesmo protocolo DLNA, então, acabou por identificar o servidor como sendo AllShare. Logo em seguida, vemos novamente o nome que identifica o servidor.

Conclusão

Como vocês puderam conferir, o MiniDLNA é um programa poderoso, cumpre plenamente o que promete.

O serviço pode ser acessado de qualquer dispositivo e/ou sistema que possua suporte ao protocolo DLNA, sendo assim, Tablets e Smartphones também estão inclusos.

Além do que, existem aplicativos para Android que possuem a mesma função do MiniDLNA.

Referências

Comandos grep, fgrep e egrep

Procuram em um ou mais arquivos por linhas que contém um padrão de busca (expressão regular simples ou estendida).

Sintaxe:

grep [opções] padrão arquivos
fgrep [opções] padrão arquivos
egrep [opções] padrão arquivos


Opções:
  • -F :: O mesmo que fgrep. Interpreta padrão como uma expressão regular sem metacaracteres.
  • -E :: Similar a egrep. Interpreta padrão como uma expressão regular estendida.
  • -r :: Faz procura recursiva.
  • -e expr :: Procura pela expressão regular expr.
  • -n :: Exibe o número de linhas que contém o padrão.
  • -c :: Exibe apenas o número de linhas que contém o padrão de busca.
  • -f arquivo :: Lê o padrão a partir do arquivo especificado.
  • -i :: Não diferencia maiúsculas de minúsculas na procura.
  • -l :: Exibe os nomes de arquivos que contém o padrão.
  • -v :: Exibe as linhas que não contém o padrão.
  • -w :: Procura apenas palavras inteiras.

Observação: recomenda-se que o padrão esteja entre apóstrofos ('), pois alguns caracteres tem significado especial para o shell e podem ser interpretados erroneamente.

Exemplos:

Procura a palavra "tee" dentro do arquivo /etc/info-dir e exibe o número da linha onde ela ocorre:

$ grep -n tee /etc/info-dir
70:* tee: (sh-utils) tee invocation. Redirect to multiple files
Procura todos os arquivos abaixo de /etc que possuem a palavra mouse:

$ grep -r mouse /etc/*

Outros exemplos:

$ grep -n root /etc/passwd
$ grep -v bash /etc/passwd | grep -v nologin
$ grep -c false /etc/passwd


Até mais, pessoal. =D

Synapse, uma alternativa ao Dash do Unity?

O propósito aqui não é comparar o Synapse ao Dash do Unity, mas sim mostrar uma forma de ter o mesmo tipo de produtividade que se tem com o Dash, mas sem o Unity. O Synapse tem muitos plugins semelhantes às lentes do Dash, e mesmo o Dash tendo mais funções, o Synapse ainda é uma boa alternativa.

http://www.youtube.com/watch?feature=player_embedded&v=y7TvNrLiwHs

Synapse: http://synapse.zeitgeist-project.com/wiki (Off no momento desta publicação)
Synapse (launchpad): https://launchpad.net/synapse-project
Zeitgeist: http://zeitgeist-project.com/ (Off no momento desta publicação)
Zeitgeist (launchpad): https://launchpad.net/zeitgeist-project
Como instalar o Synapse:
sudo add-apt-repository ppa:synapse-core/ppa
sudo apt-get update
sudo apt-get install synapse

Instalando o SimpleScreenRecorder no Ubuntu

SimpleScreenRecorder é um gravador de tela Qt para Linux que, apesar do nome, vem com mais recursos do que outras ferramentas semelhantes. A aplicação é muito fácil de usar e as configurações padrão devem ser suficientes para a maioria dos casos, pois dnormalmente não é necessário alterar as configurações.
simplescreenrecorder_1
Com ele, você pode gravar a tela inteira (com suporte multi-monitor), gravar um retângulo fixo, siga o cursor ou gravar aplicativos OpenGL, (que pode ser usado para gravar jogos).
Características do SimpleScreenRecorder:
  • grava a tela inteira ou parte dela, ou grava aplicativos OpenGL diretamente (semelhante ao Fraps no Windows);
  • sincroniza o áudio e o vídeo corretamente (um problema comum com VLC e ffmpeg/avconv);
  • mais rápido do que o VLC e ffmpeg/avconv;
  • reduz a taxa de quadros de vídeo se o computador estiver muito lento (em vez de usando todos os seus RAM como o VLC);
  • totalmente multithread: pequenos atrasos em qualquer um dos componentes nunca irão bloquear os outros componentes, resultando em um vídeo mais suave e melhor desempenho em computadores com vários processadores;
  • pausar e continuar a gravação a qualquer momento (ou clicando em um botão ou usando uma tecla de atalho);
  • mostra estatísticas durante a gravação (tamanho de arquivo, taxa de bits, tempo de gravação total, taxa de quadros reais,…);
  • pode mostrar uma visualização durante a gravação, para que você não perca tempo gravando alguma coisa só para descobrir depois que alguma configuração estava errada;
É importante lembrar que o suporte OpenGL é atualmente experimental e ele pode falhar ou ele pode nem mesmo funcionar em tudo para você. Além disso, o aplicativo tenta capturar os quadros antes que eles sejão exibidos na tela e isso pode ser considerado um hack em alguns jogos e você pode ser banido para verificar se você tem permissão para gravar um jogo antes de utilizar este recurso.
Iniciando o aplicativo, você verá uma interface simples que permite que você selecione a entrada de vídeo, escolha se você deseja gravar o cursor ou se você quer gravar o microfone e definir a taxa de quadros (vide imagem na introdução desse texto). Ao clicar em “Continuar”, você pode selecionar o recipiente para o seu screencast (MP4, Matroska, WebM, OGG ou “Outros”, que você pode usar para selecionar qualquer recipiente apoiado por Libav), nome do arquivo, codec de vídeo (H.264, VP8 , ou Theora, assim como o container, selecione “Outros”, que permite que você use qualquer codec suportado pelo Libav), defina a qualidade do vídeo ou preset (padrão predefinido):
simplescreenrecorder_2
Na próxima tela, você pode iniciar a gravação, permitir a gravação hotkeys que você pode pausar / retomar a gravação através de um atalho de teclado e muito mais.
simplescreenrecorder_3
Instalando o SimpleScreenRecorder
Usuários do Ubuntu podem instalar o SimpleScreenRecorder usando seu PPA oficial. Para adicionar o PPA e instalar o aplicativo, faça o seguinte:
Passo 1. Abra um terminal (Usando o Dash ou pressionando as teclas CTRL+ALT+T);
Passo 2. Adicione o repositório do aplicativo com o seguinte comando:
sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder
Passo 3. Atualize o Apt digitando o comando:
sudo apt-get update
Passo 4. Agora instale o programa com o comando:
sudo apt-get install simplescreenrecorder
Passo 5. Se você quer gravar jogos de 32 bits, certifique-se também instalar simplescreenrecorder-lib:i386 com o comando:
sudo apt-get install simplescreenrecorder-lib:i386
Pronto. Diga como foi sua experiência com esse aplicativo nos comentários para que os outros leitores também se informem.