sexta-feira, 30 de janeiro de 2009

novas tecnologias para o ensino de física

Palestra da prof. Marisa Cavalcante no XVIII Smipósio Nacional do Ensino de física na Oficina de Novas Tecnologias do Ensino de Física

http://xviiisnefnovastecnologias.blogspot.com/

sábado, 17 de janeiro de 2009

Tunel criptografado SSH para executar comandos em máquinas remotas com pipes

Aproveitando o post do Franklin: “SSH: confiança entre servidores” e também o post anterior “Usando PIPEs no Linux: mknod p, mkfifo“, vamos compartilhar com a comunidade mais uma solução interessante usando os PIPES.. mas dessa vez não será preciso criar um FIFO com mknod ou mkfifo…

Dessa vez, vamos criar uma estrutura para poder digitar um comando uma vez só em um linux, e ele será replicado para várias máquinas linux, simultaneamente…

Antes de tudo, a máquina central onde você executará o comando, deve ter confiança para executar comandos SSH em outras máquinas sem a solicitação de senha (veja o post SSH: confiança entre servidores).

Então temos que definir algumas informações e os arquivos, em forma de variável para facilitar a utilização:

#!/bin/sh
IP1=”192.168.0.10″ # Endereço IP da maquina linux1
IP2=”192.168.0.20″ # Endereço IP da maquina linux2
TUN1=”/tmp/.tun2linux1″ # Tunnel ssh para a maquina linux1
BUF1=”/tmp/.buf2linux1″ # Arquivo de buffer para maquina linux1
TUN2=”/tmp/.tun2linux2″ # Tunnel ssh para a maquina linux2
BUF2=”/tmp/.buf2linux2″ # Arquivo de buffer para linux2

Explicação:
Os arquivos nomeados como TUN serão criados em seguida em forma simples arquivo em disco, e serão interceptados pelo “tail -f” e jogar tudo que receberem via ssh para os IPs definidos…

Já os arquivos nomeados como BUF serão criados em forma de simples arquivo em disco também, e servirão de buffer mesmo, onde toda a saída padrão do comando executado remotamente será armazenada… Por exemplo se você mandar o comando “ls -la /tmp”, cada arquivo BUF definido conterá o conteúdo do diretório “/tmp” respectivo de cada máquina da nossa solução..

Após isso, podemos então iniciar a criação dos túneis:

echo -n > $TUN1
echo -n > $TUN2
tail -f $TUN1 | ssh -T root@${IP1} >> $BUF1 &
tail -f $TUN2 | ssh -T root@${IP2} >> $BUF2 &

Pronto! Agora qualquer comando que você jogar com “echo” pra cima do $TUN1, será enviado via SSH para a máquina LINUX1 que você configurou, e o resultado (output) desse comando será armazenado no $BUF1. A mesma coisa acontece para o $TUN2, $BUF2, LINUX2.. e assim sucessivamente..

Exemplo de como usar:

linha1: comando=”ls -la /tmp”
linha2: echo -n > $BUF1
linha3: echo “$comando” >> $TUN1
linha4: while [ `cat $BUF1 | wc -l` -eq 0 ]
linha5: do
linha6: sleep 0.2s
linha7: done
linha8: cat $BUF1

Comentários:
linha1: definição de qual comando você vai querer executar nas máquinas remotas.
linha2: limpa o BUFFER, caso já tenha algum output de outro comando anterior
linha3: manda o comando configurado para dentro do tunnel $TUN1, nesse momento ele viaja pelo SSH até a shell na máquina remota com output para o buffer.. isso pode demorar alguns segundos..
linha4, 5, 6 e 7: laço de repetição.. enquanto o buffer BUF1 estiver vazio, aguarda 2 milésimos de segundo..
linha8: depois que detectou dados no buffer, joga na tela o conteúdo do buffer, ou seja, o output do seu comando.

Agora deixo pra você a parte de pensar o que mais você pode criar a partir disso… e contribuir ainda mais para a evolução da comunidade Linux no mundo.

No próximo POST, devo exemplificar melhor como fazer o seu shell solicitar pra você qual comando você deseja executar, e então usar um laço de repetição para cada máquina configurada e sair executando..

Por: Hudson Murilo dos Santos

créditos:

http://cialinux.wordpress.com/2009/01/15/tunel-criptografado-ssh-para-executar-comandos-em-mquinas-remotas-com-pipes/

sexta-feira, 16 de janeiro de 2009

Could not create guest user record !!! - Moodle

Could not create guest user record !!!

Problema

Ao acessar a página principal do MOODLE você não consegue logar, nem como administrador.

Manutenção:

logue-se no mysql como usuário root, use o comando:

mysql -p -u root. Password: ******

mysql> use 'nome_do_banco';

Testar as tabelas até descobrir qual é a tabela ruim:

mysql> check table 'nome_da_tabela';

Reparar a tabela ruim:

mysql> repair table 'nome_da_tabela'

Pronto...o nome da tabela ruim (que não permite logar) é mdl_user

abraços!

quinta-feira, 15 de janeiro de 2009

Baixando sites inteiros com o wget com autenticação de pasta do Apache

Baixando sites inteiros com o wget com autenticação de pasta do Apache


wget -r --http-user=nome_do_usuario --http-password=senha "site"

Protegendo pastas do Apache com senha

Protegendo pastas do Apache com senha



entre na pasta do apache que deseja proteger, por exemplo /var/www/pasta_com_senha/

utilize o comando abaixo para criar o arquivo com a senha

# htpasswd -c /var/www/pasta_com_senha/.htpasswd usuario

-c (cria se já não existir , sobrescreve!!!)

Explicando:

/var/www/pasta_com_senha/.htpasswd é o arquivo que armazena a senha, você pode utilizar o nome que quiser porém por questões de segurança sempre o mantenha oculto. Obrigatoriamente ele deve estar na pasta que você deseja proteger.

usuário é o usuário que vai acessar a pasta, você pode escolher qualquer usuário.

após executar o comando ele vai pedir uma senha, que será a de acesso junto com o usuário web.

Agora no arquivo de configuração do Apache 2, /etc/apache2/apache2.conf , adicione o seguinte trecho:




AllowOverride None
Options Indexes MultiViews
Order allow,deny
Allow from all

AuthType Basic
AuthName "Acesso Restrito: "
AuthUserFile "/var/www/pasta_com_senha/.htpasswd"
Require valid-user





Explicando as últimas linhas:

AuthType Basic É o tipo de autenticação
AuthName "Acesso Restrito: " É a mensagem que aparece quando pedir a senha
AuthUserFile "/var/www/pasta_com_senha/.htpasswd" É o arquivo que armazena a senha
Require valid-user Essa linha indica que usuário pode acessar, pode trocar valid-user pelo nome do usuário no caso web.

Para testar crie um arquivo php dentro da pasta com o seguinte conteúdo:

phpinfo()
?>


Agora renicie o apache2

# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start

e tente acessar o arquivo php.

Créditos: http://linuxfreedom.blogspot.com/2007/08/protegendo-pastas-do-apache-com-senha.html

quarta-feira, 14 de janeiro de 2009

BAckup de Todos os programas do apt-get já instalados

Todos os programas do apt-get já instalados

Todo mundo do mundo Ubuntu conhece o AptonCD. Com ele você cria CD/DVD's de "backup" dos aplicativos .DEB que você tem instalado no PC usando a pasta CACHE.

MAS... e se por engano a pasta cache tem o conteúdo apagado?? Como fazemos para ter de volta os 450mb (por exemplo) de arquivos .DEB que foram pro espaço???

Segue a sugestão (não testei ainda):

Se quer todos os programas do apt-get já instalados, pode tentar isso aqui pelo terminal:

$ mkdir aptoncd


$ cd aptoncd

$ dpkg --get-selections | awk '{if ($2 == "install") print "dpkg-repack "$1}' > lista


isso vai criar uma lista com todos os pacotes .deb já instalados, confere aí se tá com todos mesmo.

agora como root:

# cd aptoncd

# sh lista

isso vai fazer um "dpkg-repack" (recria todos os pacotes .deb já instalados) na pasta aptoncd (aqui demorou pelo menos uns 30 minutos)

copie todos os .deb para /var/cache/apt/archives/

# cp *.deb /var/cache/apt/archives

agora roda o aptoncd, e cria o cd/DVD com todos os pacotes já instalados.

Créditos : http://ubuntudicas.blogspot.com/2008/01/todos-os-programas-do-apt-get-j.html

sábado, 3 de janeiro de 2009

Mandar mensagens via ssh

Curiosidade é bom, afinal, faz com que busquemos soluções para algumas dúvidas. Eu tinha a curiosidade de enviar mensagem tipo net send do Windows, mas como nunca precisei nunca busquei, hoje tive a curiosidade e achei bem fácil até!

Depois de logado na máquina destino por ssh, é só fazer:


$ xmessage Mensagem Desejada -display :0 &

Exemplo:

$ xmessage "Título" "Frase" -display :0 &

fonte:

http://www.linuxforums.org/forum/misc/23161-net-send-command.html