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

sexta-feira, 7 de junho de 2013

Obter informações do Hardware - dmidecode

Até agora encontrei sempre o dmidecode que permite listar todas as informações referentes ao hardware das máquinas, como modelos, características, velocidades, capacidades, etc.

Por exemplo:
# dmidecode -t system
System Information
Manufacturer: Dell Inc.
Product Name: Latitude 13
Version: Not Specified
Serial Number: .......................
UUID: ...........................
Wake-up Type: Power Switch
SKU Number: Not Specified
Family:

Handle 0x2000, DMI type 32, 11 bytes
System Boot Information
   Status: No errors detected

Para obter informações sobre o processador:
# dmidecode -t processor
Processor Information
Socket Designation: Microprocessor
Type: Central Processor
Family: Core 2 Duo
Manufacturer: Intel
.........
Core Count: 2
Core Enabled: 2
Thread Count: 2
Characteristics:
64-bit capable

Para obter informações sobre a RAM:
# dmidecode -t memory
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 8 GB
Number Of Devices: 2

Memory Device
 Size: 4096 MB
Form Factor: DIMM
Locator: DIMM_A
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
 .....

Memory Device
Size: No Module Installed
Form Factor: DIMM
 Locator: DIMM_B
 Type: DDR3
Type Detail: Synchronous
....

sábado, 2 de março de 2013

Proxmox - Aumentar disco de VM

Para aumentar o espaço do disco de uma máquina virtual (VM) com Windows 2003 Server é necessário fazer algumas considerações:

  • É necessário desligar a VM
  • Aumentar o disco de boot (C:) não é suportado pelo Windows 2003 Server
  • Convém efetuar backup dos dados contidos no disco a dimensionar

1. Redimensionar o disco no Proxmox

Depois de desligar a máquina convém efetuar um backup da mesma, que é uma operação algo demorada, acedendo à aba Backup e criando um novo backup.

Resta depois aceder por SSH ao servidor e efetuar o redimensionamento do disco (ficheiro) associado à VM, da qual é necessário saber o identificador, neste caso aparecerá XXX, e o nome do ficheiro, neste caso diskimage.zzz.

cd /var/lib/vz/images/XXX

Depois, utilizando o comando qemu-img é possível redimensionar o ficheiro do disco, neste caso, acrescentando 100 gigabytes ao seu tamanho atual.

qemu-img resize diskimage.zzz +100G

2. Aumentar a partição para o tamanho do disco

Após o seu redimensionamento, o disco é visto no Proxmox como tendo o novo tamanho, contudo a partição de sistema (C:) continua com o mesmo tamanho e é necessário aumentá-la.

O grande problema é que o Windows 2003 Server apenas permite efetuar o redimensionamento de partições básicas (sem ser a de sistema). Assim, será necessário utilizar um software que proceda a este redimensionamento.

Nota: No caso do Windows 7, Vista ou 2008 Server, o próprio sistema permite, no serviço de gestão de discos, efetuar o redimensionamento da partição de sistema (C:).

Assim, a forma mais simples é executar um LiveCD que possua o Gparted (por exemplo, Parted Magic ou o Grml). Neste caso, foi possível efetuar o arranque por PXE (para saber mais sobre isto veja aqui) e carregar o Grml.

Após o arranque em modo gráfico é possível aceder ao Gnome Partition Editor, onde facilmente se consegue redimensionar a partição de sistema, gravar as alterações e reiniciar a VM.

3. Arrancar o Windows 2003 Server

Ao arrancar a VM após o redimensionamento da partição, será feito um CHKDSK à partição, que permitirá assim corrigir qualquer erro que possa ter havido no processo de redimensionamento.

Após a conclusão deste processo a VM estará a funcionar como antes, apenas possuindo mais espaço em disco.