quinta-feira, 27 de agosto de 2015

Como alterar o nome da máquina

No Linux, o nome do computador fica armazenado em /etc/hostname. Se você quiser mudar o nome basta editar esse arquivo. O nome passará a ser usado no próximo boot, mas se você quiser setá-lo agora pode usar o comando hostname.

# hostname novo_nome

Onde "novo_nome" é o nome que você quer colocar no computador.

É importante também colocar o nome do compuador e o domínio (FQDN - Full Qualified Domain Name) no arquivo /etc/hosts.

127.0.1.1 novo_nome.suaempresa.inet novo_nome

Para ver somente o dominio do teu computador você pode usar o parâmetro "-d".

$ hostname -d

Para ver o nome completo FQDN use "-f"

$ hostname -f

quarta-feira, 26 de agosto de 2015

Comandos úteis para a resolução de nomes

Neste artigo descrevo os principais comandos que podem ser usados para analisar o cliente DNS, ou seja, o processo de resolução de nomes em uma estação de trabalho Linux.


Nslookup

O nslookup é usado para consultar registros em servidores DNS. A forma mais simples é:

$ nslookup ricardoolonca.blogspot.com.br
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
ricardoolonca.blogspot.com.br canonical name = blogspot.l.googleusercontent.com.
Name: blogspot.l.googleusercontent.com
Address: 74.125.234.107
Name: blogspot.l.googleusercontent.com
Address: 74.125.234.106
Name: blogspot.l.googleusercontent.com
Address: 74.125.234.108

Você pode querer fazer uma consulta usando outro servidor DNS. No exemplo abaixo eu estou fazendo uma consulta DNS, mas não usando o meu DNS, e sim o do Terra (200.176.2.12).

$ nslookup ricardoolonca.blogspot.com.br 200.176.2.12
Server: 200.176.2.12
Address: 200.176.2.12#53

Non-authoritative answer:
ricardoolonca.blogspot.com.br canonical name = blogspot.l.googleusercontent.com.
Name: blogspot.l.googleusercontent.com
Address: 74.125.234.11
Name: blogspot.l.googleusercontent.com
Address: 74.125.234.12
Name: blogspot.l.googleusercontent.com
Address: 74.125.234.10

Para descobrir quem é o servidor DNS do site em questão, use o parâmetro type=ns:

$ nslookup -type=ns ricardoolonca.blogspot.com.br
Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
ricardoolonca.blogspot.com.br canonical name = blogspot.l.googleusercontent.com.
Authoritative answers can be found from:
l.googleusercontent.com
origin = ns1.google.com
mail addr = dns-admin.google.com
serial = 1529890
refresh = 900
retry = 900
expire = 1800
minimum = 60

Para descobrir qual servidor responde pelos e-mail dos site, utilize type=mx

$ nslookup -type=mx ricardoolonca.blogspot.com.br
Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
ricardoolonca.blogspot.com.br canonical name = blogspot.l.googleusercontent.com.
Authoritative answers can be found from:
l.googleusercontent.com
origin = ns1.google.com
mail addr = dns-admin.google.com
serial = 1529890
refresh = 900
retry = 900
expire = 1800
minimum = 60

Podemos ver que este domínio não tem serviço de e-mail. Vamos tentar com outro domínio:

$ nslookup -type=mx google.com
Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
google.com mail exchanger = 40 alt3.aspmx.l.google.com.
google.com mail exchanger = 10 aspmx.l.google.com.
google.com mail exchanger = 20 alt1.aspmx.l.google.com.
google.com mail exchanger = 30 alt2.aspmx.l.google.com.
google.com mail exchanger = 50 alt4.aspmx.l.google.com. Authoritative answers can be found from:
alt1.aspmx.l.google.com internet address = 173.194.75.27
alt2.aspmx.l.google.com internet address = 173.194.67.27

Podemos notar que há cinco servidores que tratam as mensagens de e-mail do Google, sendo o aspmx.l.google.com o prioritário.


Dig

O dig é outro utilitário usado para consultar nomes. Sua sintaxe é simples:

$ dig ricardoolonca.blogspot.com.br
; <<>> DiG 9.9.5-6-Debian <<>> ricardoolonca.blogspot.com.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 20754="" id:="" noerror="" opcode:="" p="" query="" status:="">
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;ricardoolonca.blogspot.com.br. IN A

;; ANSWER SECTION:
ricardoolonca.blogspot.com.br. 600 IN CNAME blogspot.l.googleusercontent.com.
blogspot.l.googleusercontent.com. 300 IN A 64.233.186.132

;; Query time: 117 msec
;; SERVER: 172.20.1.6#53(172.20.1.6)
;; WHEN: Wed Aug 26 15:32:48 BRT 2015
;; MSG SIZE  rcvd: 120



Para consulta o servidor mx:

$ dig -q-type=mx google.com
;<<>> DiG 9.9.5-6-Debian <<>> -q-type=mx google.com
; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 16201="" id:="" opcode:="" p="" query="" servfail="" status:="">;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;-type=mx. IN A

;; Query time: 0 msec
;; SERVER: 172.20.1.6#53(172.20.1.6)
;; WHEN: Wed Aug 26 15:33:54 BRT 2015
;; MSG SIZE  rcvd: 37

;; Got answer:
;; ->>HEADER<<- 46779="" id:="" noerror="" opcode:="" p="" query="" status:="">;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 298 IN A 173.194.118.34
google.com. 298 IN A 173.194.118.37
google.com. 298 IN A 173.194.118.35
google.com. 298 IN A 173.194.118.40
google.com. 298 IN A 173.194.118.46
google.com. 298 IN A 173.194.118.39
google.com. 298 IN A 173.194.118.41
google.com. 298 IN A 173.194.118.32
google.com. 298 IN A 173.194.118.38
google.com. 298 IN A 173.194.118.33
google.com. 298 IN A 173.194.118.36

;; Query time: 0 msec
;; SERVER: 172.20.1.6#53(172.20.1.6)
;; WHEN: Wed Aug 26 15:33:54 BRT 2015
;; MSG SIZE  rcvd: 215


Host

Outro comando usado para resolver nomes é o host. O host gera saídas mais enxutas.

$ host ricardoolonca.blogspot.com.br
ricardoolonca.blogspot.com.br is an alias for blogspot.l.googleusercontent.com.
blogspot.l.googleusercontent.com has address 74.125.234.138
blogspot.l.googleusercontent.com has address 74.125.234.139
blogspot.l.googleusercontent.com has address 74.125.234.140
blogspot.l.googleusercontent.com has IPv6 address 2800:3f0:4001:802::100b

Você pode fazer consultas reversas:

$ host 74.125.234.138
138.234.125.74.in-addr.arpa domain name pointer gru03s13-in-f10.1e100.net.


Whois

O comando whois mostra informações sobre o domínio, como o nome e contato dos responsáveis, o DNS, a data da última atualização, etc.

$ whois ricardoolonca.blogspot.com.br 
% Copyright (c) Nic.br
% The use of the data below is only permitted as described in
% full by the terms of use (http://registro.br/termo/en.html),
% being prohibited its distribution, comercialization or
% reproduction, in particular, to use it for advertising or
% any similar purpose.
% 2013-08-19 16:36:04 (BRT -03:00)


domain: blogspot.com.br
owner: Google Brasil Internet Ltda
ownerid: 006.990.590/0001-23
responsible: Domain Administrator
country: BR
owner-c: DOADM17
admin-c: DOADM17
tech-c: DOADM17
billing-c: NAB51
nserver: ns1.google.com
nsstat: 20130818 AA
nslastaa: 20130818
nserver: ns2.google.com
nsstat: 20130818 AA
nslastaa: 20130818
nserver: ns3.google.com
nsstat: 20130818 AA
nslastaa: 20130818
nserver: ns4.google.com
nsstat: 20130818 AA
nslastaa: 20130818
created: 20041205 #1920190
expires: 20131205
changed: 20121113
status: published


nic-hdl-br: DOADM17
person: Domain Admin
e-mail: ccops@markmonitor.com
created: 20100520
changed: 20130423


nic-hdl-br: NAB51
person: NameAction do Brasil
e-mail: cctld@nameaction.com
created: 20020619
changed: 20130430


% Security and mail abuse issues should also be addressed to
% cert.br, http://www.cert.br/, respectivelly to cert@cert.br
% and mail-abuse@cert.br
%
% whois.registro.br accepts only direct match queries. Types
% of queries are: domain (.br), ticket, provider, ID, CIDR
% block, IP and ASN.


Você pode usar o whois para saber quem é o responsável por um ip específico:

$ whois 74.125.234.138

#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#


#
# The following results may also be obtained via:
# http://whois.arin.net/rest/nets;q=74.125.234.234?showDetails=true&showARIN=false&ext=netref2
#


NetRange: 74.125.0.0 - 74.125.255.255
CIDR: 74.125.0.0/16
OriginAS:
NetName: GOOGLE
NetHandle: NET-74-125-0-0-1
Parent: NET-74-0-0-0-0
NetType: Direct Allocation
RegDate: 2007-03-13
Updated: 2012-02-24
Ref: http://whois.arin.net/rest/net/NET-74-125-0-0-1


OrgName: Google Inc.
OrgId: GOGL
Address: 1600 Amphitheatre Parkway
City: Mountain View
StateProv: CA
PostalCode: 94043
Country: US
RegDate: 2000-03-30
Updated: 2013-08-07
Ref: http://whois.arin.net/rest/org/GOGL


OrgTechHandle: ZG39-ARIN
OrgTechName: Google Inc
OrgTechPhone: +1-650-253-0000
OrgTechEmail: arin-contact@google.com
OrgTechRef: http://whois.arin.net/rest/poc/ZG39-ARIN


OrgAbuseHandle: ZG39-ARIN
OrgAbuseName: Google Inc
OrgAbusePhone: +1-650-253-0000
OrgAbuseEmail: arin-contact@google.com
OrgAbuseRef: http://whois.arin.net/rest/poc/ZG39-ARIN


#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#

Essas são as principais ferramentas de resolução de nomes usadas para fazer análise de rede. Caso algum site não esteja acessível, antes de ficar fuçando no Squid, verifique se o site existe, usando nslookup, ping, dig, etc.

sexta-feira, 21 de agosto de 2015

Trabalhando com o histórico de comandos

O terminal texto, mais precisamento o Bash, possui duas propriedades muito úteis que facilitam a nossa vida: o histórico de comandos, e o complemento de comandos.

O complemento funciona como um encurtador de comandos e nomes de arquivos. Por exemplo, quando se quer executar o comando chkrootkit, ao se digitar chk e precionar TAB duas vezes, o Bash vai retornar todos os comandos que começam com chk. Se houver apenas um único comando que começa com a sequencia digitada, então no primeiro TAB o comando será completado. O mesmo para nomes de arquivos. Se você estiver no diretório raiz (/) e quiser entrar no /etc, basta digitar "cd e" e apetar TAB para que o comando seja preenchido com "cd etc".

O histórico lista os últimos comandos digitados. Usando as teclas "seta acima" e "seta abaixo" você pode navegar pelos últimos comandos digitados. Você também pode digitar "history" para ver a lista completa do histórico.

$ history
599 ping -c 1 8.8.8.8 | grep icmp | cut -d" " -f7 | cut -d"=" -f2 | sed 's/\./\,/g'
600 ssh -v 200.144.25.50
601 clear
602 ping -c 1 172.20.1.17
603 clear
604 env | grep HIST
605 env
606 vi .bashrc
607 vi .bash_history
608 wc -l .bash_history
609 ls -lh .bash_history
610 vi .bashrc
611 ssh ricardoolonca@172.20.1.146
612 ls -lh .bash
613 ls -lh .bash_history
614 wc -l .bash_history
615 vi .bashrc
616 cd /
617 history

Para executar o comando número 599, basta digitar:

$ !599
ping -c 1 8.8.8.8 | grep icmp | cut -d" " -f7 | cut -d"=" -f2 | sed 's/\./\,/g'
4,60

O histórico fica armazenado em .bash_history, no diretório raiz dos usuários. Por padrão, o histórico mantém os últimos 1000 comandos (em algumas distros é 500), e o tamanho do arquivo não pode passar de 2Mb. Para alterar essas opções, abra o arquivo .bashrc e altere os valores de HISTSIZE e HISTFILESIZE. Para limitar em 10.000 comandos e 10Mb, altere conforme abaixo.

HISTSIZE=10000
HISTFILESIZE=10000

Além disso, há alguns atalhos interessantes. Por exemplo, para repetir o último comandos digite:

$ "!!"

Para repetir o último comando que começa com "ssh" use:

$ "!ssh"

Para executar o último comandos mas substituindo o texto 146 por 147, digite:

$ ^146^147

quarta-feira, 19 de agosto de 2015

Listando as primeiras linhas de um arquivo textto

O comando head é usado para listar as primeiras linhas de um arquivo. Se executado sem parâmetros, head mostra as primiras 10 linhas.

$ head arquivo.txt

Você pode especificar o número de linhas que quer mostrar. Por exemplo, para mostrar as 4 primeiras linhas use:

$ head -4 arquivo.txt

Para exibir os primeiros bytes, use o parâmetros "-c". Por exemplo, para mostrar os primeiros 10 bytes, digite:

$ head -c 10 arquivo.txt

Você pode usar as letras K, M e G para especificar Kilo, Mega e Gigabyte.

$ head -c 10K arquivo.txt

O comando tail faz basicamente o mesmo, mas mostra as últimas linhas do arquivo. Você pode combiná-los para mostrar, por exemplo, somente a terceira linha.

$ head -3 arquivo.txt | tail -1


terça-feira, 18 de agosto de 2015

Sistema lento? Pode ser o disco.

Quando o computador está lento a primeira coisa que vem na mente do usuário é o processador. Mas o processador não é o único ítem que afeta o desempenho. Uso de memória, uso do link de internet e qualidade gráfica da aplicação são outros fatores que podem estar degradando o desempenho do equipamento. Outro ponto a verificar é o uso do disco. Neste artigo vamos mostrar como verificar se o disco é o causador do problema.

Para verificar o desempenho dos discos em sistemas Linux, use o hdparm, que você pode instalar com o tradicional apt-get.

# apt-get install hdparm

Para descobrir o endereço fisico do disco digite:

# fdisk -l 

Disco /dev/sda: 465,8 GiB, 500107862016 bytes, 976773168 setores
Unidades: setor de 1 * 512 = 512 bytes
Tamanho de setor (lógico/físico): 512 bytes / 4096 bytes
Tamanho E/S (mínimo/ótimo): 4096 bytes / 4096 bytes
Tipo de rótulo do disco: dos
Identificador do disco: 0x000102eb


Device     Boot     Start       End   Sectors   Size Id Type

/dev/sda1  *         2048 195311615 195309568  93,1G 83 Linux
/dev/sda2       195313664 585936895 390623232 186,3G 83 Linux
/dev/sda3       585936957 976768064 390831108 186,4G  f W95 Ext'd (LBA)
/dev/sda5       585936959 976768064 390831106 186,4G 83 Linux

Repare na linha que começa com "Disco". No meu caso, o endereço físico do disco é /dev/sda. Agora teste o desempenho sem cache...

# hdparm -t /dev/sda

/dev/sda:

 Timing buffered disk reads:  178 MB in  3.02 seconds =  58.85 MB/sec

e com cache...

# hdparm -T /dev/sda

/dev/sda:


 Timing cached reads:   14418 MB in  2.00 seconds = 7217.59 MB/sec

Agora que você já sabe a velocidade do disco, veja o quanto ele está sendo requisitado neste momento com iostat, que faz parte do pacote sysstat, que também pode ser instalado vai apt-get.

# apt-get install sysstat

Agora execute o iostat

# iostat -m /dev/sda
Linux 3.16.0-4-686-pae (fpawks0703) 18-08-2015 _i686_ (4 CPU)


avg-cpu:  %user   %nice %system %iowait  %steal   %idle

          14,24    0,39    1,99    2,72    0,00   80,67


Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn

sda              36,12         0,40         0,40      11524      11660

Veja que no meu caso o acesso ao disco está bem tranquilo com cerca de 0,4 MB de leitura e 0,4 MB de escrita, enquanto que o limite, sem cache, é de 59 MB. Então o problema da lentidão está em outro lugar, mas isso é assunto para outro artigo.

Você pode melhorar o desempenho do disco alterando alguns parâmetros. Consulte:

# hdparm --help

Mas cuidado! Faça isso em um ambiente de testes antes!

sexta-feira, 14 de agosto de 2015

Vários comandos para desligar e reiniciar o Linux

É comum no ambiente Linux ter várias formas de fazer a mesma coisa. Um exemplo é o desligamento do sistema. Há pelo menos quatro comandos para fazer isso, shutdown, reboot, halt e init.

O comando shutdown pode ser usado tanto para desligar quanto para reiniciar o equipamento. Por exemplo:

# shutdown -r now

Esse comando reinicia (-r) o servidor imediatamente (now)

# shutdown -h 10

Esse último desliga (-h) o sistema em 10 minutos. Ideal quando se está baixando da internet um arquivo muito grande na madrugada. Se o tempo estimado for de 60 minutos você pode mandar desligar o equipamento em 100 minutos.

Se você desconfia de um problema de disco você pode forçar o checagem no boot com a opção -F

# shutdown -F -r now

O Linux faz a checagem do disco se ele foi montado pela última vez há muitos dias ou se você já o montou um certo número de vezes. Se você quer evitar isso no próximo boot (se sua empresa vai passar por uma parada elétrica, por exemplo), você pode usar o parâmetro -f.

# shutdown -f -h now

O reboot também pode ser usado para reiniciar o equipamento.

# reboot

Para desligar, o halt é outra opção.

# halt

Também pode-se usar o comando init. O init é usado para se mudar o runlevel do sistema. Há vários runlevels definidos, sendo "0" o halt e "6" o reboot.

# init 6

# init 0


quarta-feira, 12 de agosto de 2015

Olonca Live CD 2015 - Amerigo

Atualizei o Linux Olonca Live CD. O sistema é uma mistura de Debian 8 com Debian CDD. A versão 2015 está homenageando o Amerigo, um macaquinho que estimação do Marcos, um desenho sobre um menino que saia pelo mundo afora procurando pela mãe.


Nesta versão eu utilizo o Window Maker como gerenciador de janelas, só para fugir dos tradicionais sistemas Gnome, KDE, Cinnamon e Mate.


O sistema roda com 512 Mb Ram e um processador de 2.3 Ghz. Se quiser instalar é necessário um disco com 20Gb de espaço livre.

Você pode baixá-lo no link abaixo. 



terça-feira, 11 de agosto de 2015

Qual o melhor comando para compactar um arquivo?

No Linux há várias ferramentas usadas para compactar arquivos. Umas compactam melhor, mas demoram mais. Outras são mais rápidas, mas usam mais o processador. Enfim, cada uma tem suas vantagens e desvantagens. Neste artigo eu analiso algumas delas.

Na análise eu compactei a pasta /etc dez vezes com cada aplicativo medindo o tempo gasto no processo. Também analisei o tamanho final do arquivo compactado. O resultado está na tabela e no gráfico abaixo.


Tecnologia Comando Tempo (s) Tamanho (mb)
Zip zip -r arquivo.zip pasta 5,62 37,00
Gzip tar zcvf arquivo.tar.gz pasta 0,75 3,30
Bzip tar jcvf arquivo.tar.bz2 pasta 2,35 3,00
Compress tar cvf arquivo.tar pasta; compress arquivo.tar 1,23 4,72
Arj arj a arquivo.arj pasta -r 9,02 36,25
Rar rar a arquivo.rar pasta 6,71 29,95


Conclusão

Para minha surpresa o formato ZIP foi o que menos compactou. Até o antigo ARJ, que usei muito na época do MS-DOS, compactou melhor. Já o ARJ foi o que mais tempo levou. Se quiser transferir arquivos para o ambiente Windows a melhor opção será usar o formato RAR. Já os formatos mais usados no Linux tiveram um desempenho nem melhor. Aqui, o BZIP foi o que melhor compactou. Em seguida foi o GZIP. O COMPRESS levou menos tempo que o BZIP, mesmo sendo necessário compactar em dois passos usando primeiro o TAR.