quinta-feira, setembro 25, 2014

Linux network useful commands

GNU/Linux oferece uma vasta gama de comandos para configuração e manutenção de uma rede ou interfaces de rede.

Eis os mais destacados:

host - Comando serve para efetuar lookups DNS;
dig - Efetua também pesquisas em registos DNS. Por defeito devolve sempre o registo A.
nslookup - Utilitário de administração de redes que permite efetuar consultas ao DNS.
ip addr show - Mostra e permite manipular dispositivos, routing, politicas de routeamento e tuneis.

Os comandos seguinte são excelentes para monitorizar uma rede de dados.

ethtool - Consulta os diferentes dispositivos de rede e pode também efetuar a alteração de diversos parametros;
netstat - Mostra todas as ligação activas (active connections) e tabelas de routeamento. Comando optimo para monitorizar a performance da rede e efetuar despiste.
nmap - Efetua a verificação das diversas porta que poderão ou não estar abertas. Analise de segurança.
tcpdump - efetua o dump do trafego para ser analisado;
iptraf - Monitoriza o trafego em modo texto.

sexta-feira, setembro 19, 2014

Linux Boot Process

Linux NFS

NFS ou Network File System é um dos métodos utilizados para partilhar dados entre sistemas.

Na distribuição Ubuntu, deveremos instalar o NFS com o comando apt-get.

~$ sudo apt-get install nfs-kernel-server

O deamon NFS é iniciado com o comando:

~$ sudo service nfs start

O ficheiro de texto /etc/exports contem os diretórios e permissões que um anfitrião disponibiliza por NFS a todos os outros sistemas remotos.

A seguinte entrada poderá existir no ficheiro:

/projects *.example.com(rw)

Esta entrada no ficheiro indica que a pasta /projects será "mounted" utilizando NFS com permissões Read e Write e partilhado com todos os hosts do domínio example.com.

Depois de configurar o ficheiro, deveremos entrar com o seguinte comando:

~$ exportfs -av

CLIENTE

No sistema cliente, é desejavél que o sistema de ficheiros remoto seja montado automáticamente.
Para isso editamos o /etc/fstab . Por exemplo, uma entrada no ficheiro seria como:

servername:/projects /mnt/nfs/projects nfs defaults 0 0



quarta-feira, setembro 03, 2014

Debug Linux bash scripts

Efetuar o debug de scripts é essencial para se entender a origem do erro. Em bash shell scripting podemos fazer:

$ bash -x script.sh

Vai efetuar o trace de todos os comandos colocando um prefixo + antes de cada comando. Mostra cada um dos comandos antes de o executar.

Para além disto é possível efetua o debug apenas em determinadas partes do script, fazendo para isso set +x a partir do momento que queremos efetuar debug e set -x quando queremos acabar o debug.

quarta-feira, agosto 06, 2014

KVM - Kernel based Virtual Machine

KVM - Kernel-based Virtual Machine é uma solução completa de virtualização para Linux em Hardware x86 (com as extensões Intel VT ou AMD-V). Consiste num módulo kernel, kvm.ko que providencia a infraestrutura de virtualização core e um módulo especifico para processador, kvm-intel.ko ou kvm-amd.ko.

Gestão KVM

libvirt é a principal biblioteca de virtualização que o KVM utiliza. Providencia uma API de gestão de máquinas virtuais e gestão básica de storage e redes.

Como solução avançada de gestão existe o Open Source ovirt com uma GUI fabulosa.

More:
https://openvirtualizationalliance.org/sites/ova/files/resources/files/251810.pdf




Saber a versão de um programa Linux (Debian Alike)

dpkg -l nano

apt-cache show nano

sábado, julho 12, 2014

Failed do decrypt protected XML node

Quando um  package do Microsoft SQL Server 2008 Integration Services (SSIS), devolve erro, na tentativa de correr dentro de um step do SQL AGENT (Jobs), o mais provável é a conta que utiliza para correr o package não tem permissões suficientes para desencriptar o XML.

Para ultrapassar este problema, criei uma conta proxy no SQL Server Agent.

A primeira coisa a fazer é criar uma credencial para ser usada pela conta proxy. Deveremos definir a conta que vai ser usada para se ligar fora do SQL Server.

create a job with a single job step which will execute a SSIS package using a proxy account

De seguida criamos a conta de proxy.

You can even use SSMS to create a proxy

Associa-se a conta de proxy com um subsistema de Sql Server Agent. Uma conta proxy pode ser associada a 1 ou todos os subsistemas disponiveis, tais como TSQL, CMDEXEC, SSIS, PowerShell, etc...

No nosso JOB, definimos a conta:

you can change the same job step using SSMS to use the proxy

quinta-feira, março 27, 2014

Linux SED and AWK

O comando SED é um poderoso utilitário de processamento de texto e é um dos mais antigos e populares utilitários UNIX.

É utilizado para alterar o conteúdo de um ficheiro, geralmente colocando os conteúdos num outro ficheiro daí o se nome "Stream Editor".

SED pode filtrar texto e efetuar substituições em streams de dados.

$sed s/pattern/replace_string/ file
Substituir a primeira string encontrada numa linha.

$sed s/pattern/replace_string/g file
Substituir todas as ocorrências na linha.

$ sed s/pattern/replace_string/g file > file2
O comando anterior vai substituir todas as ocorrências de "pattern" por "replace_string" no ficheiro "file" e copiar par "file2".

O comando AWK é utilizador para extrair e imprimir conteúdos especificos de ficheiros.

$awk '{ print $0 }' /etc/passwd
O comando anterior permite imprimir o ficheiro passwd.

$awk -F: '{ print $1 }' /etc/passwd
O comando anterior permite imprimir a primeira coluna do ficheiro passwd, cujos campos estão separador pelo limitador ":" definido com ".F:".

$awk -F: '{ print $1 $6 }' /etc/passwd
O mesmo que o anterior, mas desta vez permite mostrar a coluna 1 e 6.

domingo, março 23, 2014

Process Isolation

Linux é considerado, desde há muito tempo, um sistema operativo muito seguro relativamente a outros sistemas operativos. Isto deve-se em grande parte à forma como os processos correm.

Um processo é uma instancia de uma ou mais tarefas relacionadas (threads) que estão a executar no computador. Não são necessariamente programas ou comandos pois um programa pode iniciar vários processos ao mesmo tempo. Alguns processos são independentes, outros são relacionados.

Os processo são corridos de forma isolada, ou seja, não utilizam os recursos de outros processos que estão a correr, mesmo que tenham sido chamados pela mesma conta.

Assim sendo é muito difícil ser atacado por vírus ou exploits (mas não impossível obviamente).

Outros mecanismos de segurança foram acrescentados ao longo do tempo:

  • cgroups (control groups) - permitem ao administrador agrupar processos em grupos e alocar recursos finitos a esses grupos;
  • (LXC) linux containers - Possibilita correr multiplos sistemas isolados Linux (containers) num unico sistema com cgroups;
  • Virtualization - Hardware é emulado por forma a que não só apenas os processos são isolados, mas também todos os sistemas de forma isolada num host fisico.

Tipos de processos:

Process TypeDescriptionExample
Interactive ProcessesNeed to be started by a user, either at a command line or through a graphical interface such as an icon or a menu selection.bash, firefox, top
Batch ProcessesAutomatic processes which are scheduled from and then disconnected from the terminal. These tasks are queued and work on a FIFO (First In, First Out) basis.updatedb
DaemonsServer processes that run continuously. Many are launched during system startup and then wait for a user or system request indicating that their service is required.httpd, xinetd, sshd
ThreadsLightweight processes. These are tasks that run under the umbrella of a main process, sharing memory and other resources, but are scheduled and run by the system on an individual basis. An individual thread can end without terminating the whole process and a process can create new threads at any time. Many non-trivial programs are multi-threaded.gnome-terminal, firefox
Kernel ThreadsKernel tasks that users neither start nor terminate and have little control over. These may perform actions like moving a thread from one CPU to another, or making sure input/output operations to disk are completed.kswapd0, migration, ksoftirqd

domingo, março 16, 2014

Gandolada - Jogo educativo?

Resolvi fazer um jogo para a minha filha. Ela gosta muito dos jogos do tipo "Hit The Mole". Achei interessante faze-lo com os principais protagonistas da pouca vergonha que está a acontecer no nosso país atualmente.

www.grandolada.tk

 Grandolada

sábado, fevereiro 15, 2014

ADB - Android Debugging Bridge

O ADB é uma ferramenta de linha de comandos que permite comunicar com instancias de emuladores ou dispositivos ligados. É uma aplicação cliente-servidor que inclui três componentes:


  1. Um cliente que corre na máquina de desenvolvimento;
  2. Um servidor que corre como processo em background na máquina de desenvolvimento;
  3. Uma aplicação que corre em background (Daemon) para cada emulador ou instancia de ligação ao dispositivo;
A ferramenta vem com o SDK do android. Pode ser encontrada em  /platform-tools/.

Quando se corre ao cliente pela primeira vez, este verifica se já existe um processo adb a correr em background. Se não estiver, o processo corre automaticamente. Quando o servidor corre, é efetuado um bind à porta 5037, o qual fica à escuta por comandos de clientes adb.

Sintax:

adb [-d|-e|-s ]

Para gerar uma lista de dispositivos ou emuladores ligados:

  • adb devices
Instalação de uma apk:
  • adb install
Assinar a aplicação:
jarsigner -verbose -keystore ...\.android\debug.keystore -storepass android -keypass android app.apk androiddebugkey

Assinar para envio playgoogle:
  • keytool -genkey -v -keystore grandolada.keystore -alias grandolada -keyalg RSA -keysize 2048 -validity 10000
  • jarsigner -keystore grandolada.keystore Grandolada_2014_02_16-04_05_36_GooglePlaystoreV3_release_unsigned.apk grandolada
  • tools>zipalign -f -v 4 \Users\pessanha\Documents\Jogo\apk\grandolada.apk \Users\pessanha\Documents\Jogo\apk\grandolada_ziped.apk