segunda-feira, 6 de outubro de 2014

Bash: hosts ativos


arp-scan --interface=eth0 192.168.0.0/24 | grep 192. | sort -n | uniq -w 15 | wc -l

  • Listar máquinas ativas
arp-scan --interface=eth0 192.168.0.0/24
  • Apresentar apenas as linhas que contenham "192."
 grep 192.
  • Ordenar
 sort -n
  • Apresentar apenas linhas únicas (sem IP repetido => primeiros 15 caracteres únicos)
uniq -w 15
  •  Contar as linhas (seja IP's únicos)
wc -l

sexta-feira, 5 de setembro de 2014

Terminar Sessões Remotas em W2K3

Para listar as sessões de ambiente remoto num servidor windows 2003 server executar na linha de comandos:
> qwinsta

Serão depois listadas as sessões ativas e a indicação do ID de cada uma.

Para terminar sessões basta executar o comando rwinsta seguido do ID da sessão, normalmente 1 ou 2:
> rwinsta 1

domingo, 8 de junho de 2014

CrunchBang 11 waldorf - LiveUSB Persistente

A utilização de um sistema operativo persistente numa pen drive USB permite executar o sistema operativo em diferentes computadores e guardar todas as alterações efetuadas ao mesmo na mesma pen drive.

No caso do CrunchBang existem também diversos guias mas para versões diferentes ou então com métodos que me pareceram menos óbvios. Assim, e após muitas pesquisas e análises encontrei este guia [1] que contém informação importantíssima, nomeadamente a indicação que o CrunchBang utiliza um sistema antigo do Debian Live (que serve de base ao ambiente live do CrunchBang) e, assim, a documentação oficial do projeto Debian Live [2] não é suportada pelo CrunchBang.

Setup da Pen

Criar as partições necessárias

Serão utilizadas duas partições:
  1. A primeira partição será ext2 com a label persistence e que terá todo o espaço disponível na pen subtraindo o espaço necessário para gravar o ISO.
  2. A segunda partição ext2 e com espaço para gravar o ISO.

Atenção ao caminho do device da pen!

$ sudo fdisk /dev/sdX
n - criar nova partição
p - partição primária
0 - início da partição
+3GB - espaço a ocupar
a - ativar flag de boot para poder arrancar por pen
n - criar nova partição
p - partição primária
[enter] - aceitar início da partição (setor a seguir ao último da anterior)
[enter] - aceitar final da partição (último setor do volume)
w - escrever as alterações a tabela de partições
q - sair

Escrever ISO do CrunchBang para a segunda partição

Caso a segunda partição esteja montada deve ser desmontada antes de se escrever o ISO.

Atenção ao caminho do device da pen!

$ dd if=crunchbang-11-20130506-amd64.iso of=/dev/sdX2; sync
1513472+0 records in
1513472+0 records out
774897664 bytes (775 MB) copied, 359.334 s, 2.2 MB/s


Criar o filesystem para a persistência


Atenção ao caminho do device da pen!

$ mkfs.ext2 -L persistence /dev/sdX1

Configurar a persistência

Há várias hipóteses de configuração da persistência da informação e tal tem que ser feito no ficheiro live-persistence.conf (porque o CrunchBang utiliza uma versão antiga do debian live, senão seria o ficheiro persistence.conf como é documentado oficialmente) na raiz da primeira partição (designada de persistence). Assim, é necessário montar esta partição para que se possa criar e editar o ficheiro.

Persistência Total
Neste caso todos os ficheiros que são alterados ou criados são copiados e guardados na pen. É possível atualizar o sistema, instalar outros programas e alterar configurações e manter tudo isso na pen. Para tal, o ficheiro live-persistence.conf deverá ter apenas uma linha com:
/        union

Persistência Parcial
Se não for pretendido guardar toda a informação é possível definir apenas as definições dos utilizadores e indicar apenas a pasta /home para persistência.

No exemplo seguinte, o ficheiro live-persistence.conf as pastas /home e /opt serão montadas com a opção bind (que é a opção por defeito e pode ficar apenas com o caminho da pasta) pois no ISO não existem informações dos novos utilizadores que serão criados nem software instalado em /opt (esta é uma opção minha, explicada mais à frente na Instalação de Software).
A pasta /boot/grub também será montada desta forma pois é lá que se encontra o grub.cfg responsável pelo arranque da pen (será explicado de seguida em Instalar e Configurar o GRUB) e que assim poderá ser editado facilmente também a partir do sistema persistente.
A opção de montagem das restantes pastas é union que faz a reunião (em tudo análogo à reunião da teoria de conjuntos na matemática) dos ficheiros existentes no ISO com os que ficam na pen nas mesmas pastas, poupando-se assim bastante espaço na pen, pois apenas ficam guardados os novos ficheiros ou os que forem alterados.

/home
/opt
/boot/grub
/etc union
/usr union
/var union
/bin union
/sbin union


Tudo o que for guardado fora destes locais será descartado quando o computador for desligado ao reiniciado.

Nota: Até agora não foi necessário incluir outras pastas, mas com instalações de mais software é provável que seja necessário acrescentar ao live-persistence.conf as pastas /lib, /lib32 ou /lib64 como union.
Também será óbvio que caso sejam configurados serviços ou programas que necessitem guardar informação noutras pastas, as mesmas sejam acrescentadas, por exemplo: /srv ou /root.

Instalar e Configurar o GRUB

A partir deste momento é necessário instalar o GRUB e configurá-lo para que a pen possa arrancar em modo persistente ou efetuar um arranque live.

A documentação relativa ao GRUB2 (1.99) existente na comunidade ubuntu [3] e do dedoimedo [4]. ajuda muito na configuração do GRUB.

Outra ajuda está no ficheiro ISO do CrunchBang em /isolinux/live.cfg.

As opções para o boot de persistência e a forma de funcionamento estão no projeto debian live [2].


Atenção ao caminho do device da pen!


$ grub-install --force --no-floppy --root-directory=/media/persistence /dev/sdX
$ nano /media/persistence/boot/grub/grub.cfg
set timeout=5
set default=0

menuentry "#! 11 - waldorf 64bits - Persistence" {
  linux (hd0,2)/live/vmlinuz boot=live config persistence
  initrd (hd0,2)/live/initrd.img
}

menuentry "#! 11 - waldorf 64bits - Live" {
  linux (hd0,2)/live/vmlinuz boot=live config            
  initrd (hd0,2)/live/initrd.img
}

Nota: Ainda falta confirmar se a partir do sistema live da pen dá para fazer uma instalação limpa num computador.

Configuração do ambiente com persistência

Gestão de utilizadores

É conveniente criar um novo utilizador pois por defeito o ambiente live do CrunchBang permite autologin do utilizador crunchbang e cuja password é live.

Acrescentar o utilizador user e fazer dele colocá-lo como sudoer:
$ sudo adduser user
$ sudo adduser user sudo

Acrescentar uma password à conta de root:
$ sudo su
$ passwd

Remover o utilizador crunchbang (depois de ter trocado para o utilizador criado anteriormente):
$ sudo deluser crunchbang

Para desativar o autologin e alterar o utilizador por defeito é necessário ir a System > User Login Settings e alterar conforme o pretendido.

Teclado

Para definir o teclado português é necessário alterar o ficheiro /etc/default/keyboard e depois reiniciar o computador ou então executar o comando udevadm.
$  sudo nano /etc/default/keyboard
...
XKBLAYOUT=pt
...


$ sudo udevadm trigger --subsystem-match=input --action=change


 Atualização do sistema

$ sudo apt-get update
$ sudo apt-get upgrade


Instalação de software

A instalação de software através de apt-get install irá acrescentar informação à pen, normalmente nas pastas /usr e /var.

Caso se pretenda instalar software extra que não está nos repositórios ou versões mais atualizadas destes é possível instalá-los manualmente em /opt, o que também irá ocupar espaço na pen.

Dúvidas, Problemas e Pensamentos

Depois deste setup não tive ainda grandes problemas, mas deverão surgir com uma utilização do persistente mais intensiva...

De futuro falta garantir que a utilização do ambiente live da pen permite instalar fisicamente uma nova máquina com o crunchbang.

Falta ainda saber se a adição de mais software necessitará da utilização persistente de mais pastas (/lib e afins) na pen.

Referências e Hiperligações


domingo, 20 de abril de 2014

ubuntu server 14.04 LTS + miniDLNA 1.1.2

Instalação do serviço MiniDLNA numa máquina virtual com ubuntu server 14.04 LTS 64bits.

0. Index

1. Instalar MiniDLNA
2. Configurar o MiniDLNA
3. Utilizar o serviço MiniDLNA
4. Outras opções

1. Instalar MiniDLNA

1.1. Descarregar código-fonte


$ tar zxvf minidlna-1.1.2.tar.gz
$ cd minidlna-1.1.2

1.2. Compilar em ubuntu server 14.04 LTS 64 bits

  • Instalar pacotes para compilação:

# apt-get install autoconf autopoint gcc make gettext


  • Criar ficheiros de configuração para a compilação:
$ sh autogen.sh


  • Instalar dependências necessárias para a compilação:
# apt-get install libavcodec-dev libavformat-dev libavutil-dev libjpeg-dev libsqlite3-dev libexif-dev libid3tag0-dev libogg-dev libvorbis-dev libflac-dev

  • Compilar:
$ ./configure
$ make
$ make install


1.3. Copiar ficheiros necessários

  • Copiar binário do serviço:
# cp minidlnad /usr/local/sbin/

  • Copiar script do serviço e configurar o arranque automático com o sistema:
# cp linux/minidlna.init.d.script /etc/init.d/minidlna
# chmod 755 /etc/init.d/minidlna
# update-rc.d minidlna defaults

  • Copiar ficheiro de configuração:
# cp minidlna.conf /etc/

2. Configurar o MiniDLNA

O ficheiro de configuração /etc/minidlna.conf permite especificar o funcionamento do serviço, devendo ser personalizado:
  • Localização da base de dados relativa aos ficheiros e localização do log:
db_dir=/var/cache/minidlna
log_dir=/var/log

  • Modo automático de descoberta de ficheiros e o tempo para descoberta:
inotify=yes
notify_interval=30

  • Pastas a partilhar (é possível especificar diferentes pastas para diferentes tipos de media, conforme é explicado no próprio ficheiro de configuração):
media_dir=/srv/media

  • Nome do servidor na rede
friendly_name=DLNA Server

3. Utilizar o serviço MiniDLNA

Após a instalação e configuração é possível arrancar o serviço com:
# service minidlna start

O primeiro arranque irá demorar algum tempo até estar concluída a indexação dos ficheiros existentes, é possível acompanhar o desempenho através do comando top e esperando que o minidlna deixe de ocupar o processador de forma intensiva.

Após a indexação é possível aceder ao serviço nos dispositivos com suporte para DLNA.

4. Outras opções

  • Para reiniciar o serviço:
# service minidlna restart

  • Para reconstruir a base de dados:
# service minidlna stop
# minidlna -R
# service minidlna start

sábado, 8 de março de 2014

Plotter de Corte: Silhouette Portrait em Linux

Plotter de Corte

Uma plotter de corte permite cortar diversos materiais: tecido, papel, vinil, cartão, etc. E pode assumir a forma de uma impressora que, em vez de ter tinteiros para imprimir, tem apenas uma lâmina de corte ajustável.

Possuem diversas características como: materiais passíveis de serem cortados, largura máxima suportada, comprimento máximo suportado, etc.

A Silhouette Portrait é uma plotter de corte básica (corta apenas até 21cm de largura) com ligação USB e que funciona muito bem em Linux.

Existem outras alternativas, até mais baratas, mas que têm subjacentes modelos de negócio fechados e/ou focados apenas em sistemas operativos fechados (Windows ou Mac).

Por exemplo, muitas não permitem que sejam utilizados SVG criados pelos utilizadores, pelo que são muito limitadas no tipo de formas que podem cortar pois é necessário que os utilizadores comprem "moldes" digitais (no fundo ficheiros vetoriais) em sites oficiais para que a plotter os possa depois executar (estranhíssimo ecossistema, mas de certo muito rentável para as marcas).

Como a Silhouette Portrait pode ser comandada por software open source com suporte para SVG torna-se a solução ideal para dar largas à imaginação!

Software

0. CrunchBang Waldorf - Sistema operativo baseado em Debian com interface gráfica muito leve providenciada por OpenBox, conky e tint2.

1. Inkscape - para edição vetorial dos cortes a fazer.
Tudo deve ser convertido em paths (caminhos), incluindo as letras.
Os bitmaps podem ser facilmente vetorizados pelo Inkscape, com resultados variáveis.
No final basta guardar o desenho como SVG, tendo em atenção o tamanho do desenho e o tamanho do material a cortar.

2. Robocut - ferramenta que carrega ficheiros SVG e opera a plotter de corte.
É necessário descarregar o código fonte e compilar, mas é muito fácil de cumprir em 4 ou 5 passos.
A aplicação carrega o ficheiro SVG do Inkscape e permite cortar selecionando o tipo de material e os valores de velocidade e pressão a serem utilizados.
Na aplicação dá para ver os cortes que serão feitos (quando são vários aparecem multicoloridos) e dá para ver uma animação de como serão feitos os cortes para confirmar se está tudo bem.
Na interface não indica nada sobre a plotter, mas o que é certo é que funciona direitinho sem problemas.

3. Inkcut - extensão para o inkscape que permite tratar de tudo sem sair do inkscape.
Como não funcionou direto não perdi mais tempo com ela (ainda falta testar algumas configurações para ver se dá).
Há também outra questão que se prende com a conversão do cógigo HPGL (gerado pela extensão a partir do SVG) para GPGL (que é muito parecido e converte-se apenas com algumas substituições diretas de comandos) que é usado pela plotter.
No site é indicado que a Cameo (a irmã mais velha da Portrait) é suportada.

quinta-feira, 13 de fevereiro de 2014

Acesso remoto sem utilização de passwords

Criar as chaves para o utilizador atual:
cd .ssh
ssh-keygen -t rsa -b 4096
[Não introduzir pass-phrase]
ssh-copy-id admin@192.168.1.1

No servidor criar ficheiro remote
nano ~/remote

Com o conteúdo:

# For remote control
admin ALL = NOPASSWD:ALL

Copiar o ficheiro para o host (-t para escrever a password uma última vez para execução como sudo no host):

ssh -t admin@192.168.1.1 "sudo scp admin@server.local:~/remote /etc/sudoers.d; sudo chmod 0440 /etc/sudoers.d/remote;sudo service sudo restart"

Testar
ssh -t admin@192.168.1.1 "sudo ls"

Batch:
for IP in {1..14};do ssh-copy-id admin@192.168.1."$IP";ssh -t admin@192.168.1."$IP" "sudo scp admin@server.local:~/remote /etc/sudoers.d; sudo chmod 0440 /etc/sudoers.d/remote;sudo service sudo restart"; done

Migração de Servidor GNU/Linux


rsync -rtavP -e ssh «pasta_a_mover» root@«newserver»:«pasta_de_destino»

2. Fazer o export das Bases de Dados
Para BD grandes pode utilizar-se a compressão.

3. Fazer o import dos ficheiros anteriores

sexta-feira, 25 de outubro de 2013

Router/Firewall interno com bloqueio de tráfego e gestão web


Criação de um router interno que permita gerir o acesso à Internet através de um GUI web em PHP.

0. Pré-requisitos

1x máquina com duas placas de rede eth0 = WAN e eth1 = LAN

1. Instalação e Configuração como Router

Adicionar ao ficheiro /etc/init.d/nat:


#! /bin/bash
# Author: Mario Pinto
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="NAT router"
NAME=nat
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
WAN=eth0
# Function that starts the daemon/service
do_start()
{
   echo -n "Starting $DESC... "
   [ ! -e $PIDFILE ] || return 1
   touch $PIDFILE
   modprobe iptable_nat
   modprobe ip_conntrack_tftp # Allow TFTP UDP traffic
   modprobe ip_nat_tftp # Allow TFTP UDP traffic
   iptables -t nat -F
   iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE

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

   return 0
}
# Function that stops the daemon/service
do_stop()
{
   echo -n "Stopping $DESC... "
   [ -e $PIDFILE ] || return 1
   iptables -t nat -F
   echo 0 > /proc/sys/net/ipv4/ip_forward
   rm $PIDFILE
   return 0
}
# MAIN OPTIONS
case "$1" in
   start)
      do_start
      case "$?" in
             0) echo "done" ;;
             1) echo "already running" ;;
             2) echo "error" ;;
      esac
      ;;
   stop)
      do_stop
      case "$?" in
                  0) echo "done" ;;
                  1) echo "not running" ;;
                  2) echo "error" ;;
      esac
      ;;
   restart)
      do_stop
          case "$?" in
                  0) echo "done" ;;
                  1) echo "not running" ;;
                  2) echo "error" ;;
          esac
      do_start
          case "$?" in
                  0) echo "done" ;;
                  1) echo "already running" ;;
                  2) echo "error" ;;
          esac
          ;;
   status)
      echo "Status: IPTABLES" >&2
      iptables -t nat -L
      echo "";echo "IP forward: ";cat /proc/sys/net/ipv4/ip_forward
      ;;

   *)
      echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
      exit 3
      ;;
esac
:


Tornar o script executável:
chmod 755 /etc/init.d/nat

Testar o serviço com:
service nat start
Starting NAT router... done

O serviço pode ser instalado para arrancar automaticamente com:

update-rc.d nat defaults


[Ainda faltam as partes de gestão e controlo]

2. Configuração do iptables

3. Scripts para configuração iptables

4. Aplicação web para gestão



Tutorial iptables:
https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html
TFTP UDP Traffic passthrough:
http://keystoneit.wordpress.com/2007/11/25/tftp-through-ipcop-or-other-iptables-firewalls/
Accounting:
http://www.catonmat.net/blog/traffic-accounting-with-iptables/
Bandwith:
http://jim-zimmerman.com/?p=798

quarta-feira, 2 de outubro de 2013

Configuração do Netbeans 7.3 para o JDK7

O Netbeans 7.3 tem alguns problemas com a última atualização do java 1.6u27.
Assim é necessário instalar a versão 1.7 e alterar o ficheiro de configuração do Netbeans disponível aqui: /usr/local/netbeans-7.3/etc/netbeans.conf e alterar a home do JDK:
netbeans_jdkhome="/usr/lib/jvm/java-7-oracle"

Depois para configurar 13 postos com Caixa Mágica 18 (ubuntu 12.04 LTS) foi necessário:

  • Copiar ficheiro de configuração correto (está no server em /tmp/netbeans.conf)

for IP in {1..13}; do ssh -t 192.168.1.$IP "sudo scp admin@server:/tmp/netbeans.conf /usr/local/netbeans-7.3/etc/"; done;

  • Instalar oracle-jdk7-installer:


for IP in {1..13}; do echo "Conecting to 192.168.1.$IP";ssh -t 192.168.1.$IP "echo Installing oracle-jdk7-installer...;sudo apt-get -y install oracle-jdk7-installer"; done;

Controlar o som remotamente

Utilizando ubuntu 12.04 LTS é possível controlar o volume através da linha de comandos:

Sem som
$ sudo amixer sset Master playback 0 on

No máximo
$ sudo amixer sset Master playback 64 on

No meio
$ sudo amixer sset Master playback 46 on