:::: MENU ::::

quinta-feira, 1 de dezembro de 2016

Uma pesca rápida dos códigos de resposta do HTTP:

100 ⇒ Continue
101 ⇒ Switching Protocols
102 ⇒ Processing
200 ⇒ OK
201 ⇒ Created
202 ⇒ Accepted
203 ⇒ Non-Authoritative Information
204 ⇒ No Content
205 ⇒ Reset Content
206 ⇒ Partial Content
207 ⇒ Multi-Status
208 ⇒ Already Reported
226 ⇒ IM Used
300 ⇒ Multiple Choices
301 ⇒ Moved Permanently
302 ⇒ Found
303 ⇒ See Other
304 ⇒ Not Modified
305 ⇒ Use Proxy
306 ⇒ Switch Proxy
307 ⇒ Temporary Redirect
308 ⇒ Permanent Redirect/Resume Incomplete
400 ⇒ Bad Request
401 ⇒ Unauthorized
402 ⇒ Payment Required
403 ⇒ Forbidden
404 ⇒ Not Found
405 ⇒ Method Not Allowed
406 ⇒ Not Acceptable
407 ⇒ Proxy Authentication Required
408 ⇒ Request Timeout
409 ⇒ Conflict
410 ⇒ Gone
411 ⇒ Length Required
412 ⇒ Precondition Failed
413 ⇒ Payload Too Large
414 ⇒ Request-URI Too Long
415 ⇒ Unsupported Media Type
416 ⇒ Requested Range Not Satisfiable
417 ⇒ Expectation Failed
418 ⇒ I'm a Teapot
419 ⇒ Authentication Timeout
420 ⇒ Method Failure/Enhance Your Calm
421 ⇒ Misdirected Request
422 ⇒ Unprocessable Entity
423 ⇒ Locked
424 ⇒ Failed Dependency
426 ⇒ Upgrade Required
428 ⇒ Precondition Required
429 ⇒ Too Many Requests
431 ⇒ Request Header Fields Too Large
440 ⇒ Login Timeout
444 ⇒ No Response
449 ⇒ Retry With
450 ⇒ Blocked by Windows Parental Controls
451 ⇒ Unavailable for Legal Reasons/Redirect
494 ⇒ Request Header Too Large
495 ⇒ Cert Error
496 ⇒ No Cert
497 ⇒ HTTP to HTTPS
498 ⇒ Token Expired/Invalid
499 ⇒ Client Closed Request/Token Required
500 ⇒ Internal Server Error
501 ⇒ Not Implemented
502 ⇒ Bad Gateway
503 ⇒ Service Unavailable
504 ⇒ Gateway Timeout
505 ⇒ HTTP Version Not Supported
506 ⇒ Variant Also Negotiates
507 ⇒ Insufficient Storage
508 ⇒ Loop Detected
509 ⇒ Bandwidth Limit Exceeded
510 ⇒ Not Extended
511 ⇒ Network Authentication Required
520 ⇒ Unknown Error
598 ⇒ Network Read Timeout Error
599 ⇒ Network Connect Timeout Error

quarta-feira, 30 de novembro de 2016

Aí você instala o MySQL 5.7, vai acessar a console pelo terminal e paaaahhh!

[root@graylog ~]# mysql -u mysql
ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)


Mas... Quem definiu a senha?
O próprio capiroto?

Não queridos... Foi o próprio serviço. Mas, e qual é a senha?

grep 'temporary password' /var/log/mysqld.log

E olha lá no final da linha a nossa senha querida. :)

Depois, é obrigatório redefinir a senha:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';


Saporra é inteligente!

segunda-feira, 21 de novembro de 2016

[SPOILER: FOI O BLUETOOTH. DESLIGUE]

Bom, achei que era minha máquina, mas depois pesquisando, vi que mais pessoas estavam passando pelo mesmo problema.

Só que, no meu caso, não foi um "problema".

O que aconteceu é que meu notebook possui bluetooth, e eu deixei habilitado. O NetworkManager, que é quem gerencia esse hardware, sempre aguardava o o bluetooth parear com alguém antes de liberar a tela de login.

Então, a solução foi mais simples impossível: Desligar o bluetooth.

E fim. Problema resolvido.

segunda-feira, 1 de agosto de 2016

O B.O

Aconteceu comigo, nos meus CT do PROXMOX (precisamos conversar sobre isso algum dia...).
Tudo ia muito bem, com o zabbix-agent na versão 2.2.7 (too old!), quando fui atualizar para a versão 3 do agente. Ok... Adiciona repositórios, faz um apt-get update, e um apt-get upgrade. Tudo certo, tudo lindo. Porém, na hora de instalar o pacote do zabbix-agent...

Setting up zabbix-agent (1:3.0.4-1+jessie) ...
Installing new version of config file /etc/init.d/zabbix-agent ...
Installing new version of config file /etc/logrotate.d/zabbix-agent ...

Configuration file '/etc/zabbix/zabbix_agentd.conf'
 ==> File on system created by you or by a script.
 ==> File also in package provided by package maintainer.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** zabbix_agentd.conf (Y/I/N/O/D/Z) [default=N] ? n
[....] Starting Zabbix agent: zabbix_agentdinvoke-rc.d: initscript zabbix-agent, action "start" failed.
dpkg: error processing package zabbix-agent (--configure):
 subprocess installed post-installation script returned error exit status 1


Resumindo: Instalou, não subiu o serviço, parou de coletar.

Isso é uma coisa nada legal, ainda mais quando isso faz parte do seu trabalho (monitorar coisas) e você faz exatamente o oposto :)

Mas, somos curiosos e vamos ver qual é o problema.

Corrigindo

Primeiro passo: Execute o comando no terminal e veja o que acontece. Não custa nada e vamos ver o que acontece:
root@pve:~# zabbix_agentd
zabbix_agentd [22130]: /etc/zabbix/zabbix_agentd.conf.d: [2] No such file or directory


Não encontrou o diretório. Bom, isso eu posso fazer por você. Um rápido mkdir /etc/zabbix/zabbix_agentd.conf.d e tudo certo!
E então eu reiniciei o serviço e tudo voltou ao normal. Minha pergunta que fica é: Se eu pedi pra não alterar o arquivo de configuração, COMO É QUE ESSE PARÂMETRO FOI PARAR LÁ?

Mistérios....

domingo, 17 de julho de 2016

Listar tamanho das partições, volumes e datasets


zfs list

zfs list
NAME                                                       USED  AVAIL  REFER  MOUNTPOINT
BIGPOOL                                                   3.10T  54.1G    96K  /mnt/BIGPOOL
BIGPOOL/.system                                            988K  54.1G   104K  legacy
BIGPOOL/01-pool                                           3.09T  1.35T  1.80T  -
freenas-boot                                               529M   269G    31K  none
freenas-boot/ROOT                                          522M   269G    25K  none
freenas-boot/ROOT/Initial-Install                            1K   269G   508M  legacy
freenas-boot/ROOT/default                                  522M   269G   518M  legacy
freenas-boot/grub                                         6.78M   269G  6.78M  legacy

Você pode também obter o valor apenas de um item, basta adicionar nome desejado:

zfs list BIGPOOL/01-pool

zfs list BIGPOOL/01-pool
NAME              USED  AVAIL  REFER  MOUNTPOINT
BIGPOOL/01-pool  3.09T  1.35T  1.80T  -

O zfs pode filtrar por tipo. O parâmetro é o -t e em seguida o tipo, que pode ser snapshot, filesystem ou volume.

zfs list -t volume

zfs list -t volume
NAME              USED  AVAIL  REFER  MOUNTPOINT
BIGPOOL/01-pool  3.09T  1.35T  1.80T  -

O parâmetro -H não exibe a primeira linha, retornando apenas os valores

zfs list -H -t volume

zfs list -H -t volume
BIGPOOL/01-pool    3.09T    1.35T    1.80T    -

Se quiser listar algumas colunas, utilize o parâmetro -o e em seguida o nome das colunas (é só colocar como é exibido sem o parâmetro -H). Para uma lista completa de parâmetros, utilize o zfs list -h.

zfs list -H -t volume -o name,used,avail

zfs list -H -t volume -o name,used,avail
BIGPOOL/01-pool    3.09T    1.35T

Para coleta do Zabbix, o ideal é coleta em bytes. Usamos o parâmetro -p:

zfs list -p -H -t volume -o name,used,avail

zfs list -p -H -t volume -o name,used,avail
BIGPOOL/01-pool    3402426023936    1480661770240

Com isso, dá coletar um monte de coisa :)

quarta-feira, 25 de maio de 2016

terça-feira, 24 de maio de 2016

Queridos! A coisa toda é simples. Vou deixar um template aqui pra vocês colocarem seus scripts como serviço e pararem de usar o útil nohup. Outra coisa: Seu script DEVE TER perfil de serviço. Não estou falando de um monte de comandos um embaixo do outro, beleza?
Pra facilitar, vou sublinhar as linhas que vocês devem alterar.


[Unit]
Description=Hubot
Requires=network.target
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/butis/hubot
User=sobutis
Restart=always
RestartSec=10
EnvironmentFile=/etc/hubot/variaveis.conf
ExecStart=/home/butis/hubot/bin/hubot -a rocketchat

[Install]
WantedBy=multi-user.target


Eu acho que o conteúdo é bastante explicativo, mas, vamos explicar assim mesmo. Nesse exemplo, vamos criar um usuário que executará o hubot.

1. Precisamos criar um usuário pra rodar esse serviço, por questões de segurança.
adduser hubot

Nós não vamos definir o shell dele como /bin/false, porque é um script, ou seja, ele precisa do bash/ksh/sh para executar os comandos.

2. Coloque o script no diretório do usuário criado - isso é meio que lógico né?

3. Crie o arquivo hubot.service dentro de /etc/systemd/system.  Repare: {nome do serviço}.service. Pegou o padrão? Ok!

O Conteúdo é esse daí de cima. Vamos comentar linha a linha pra entendermos.


[Unit]
Description=Hubot 

Descrição do serviço
 

Requires=network.target
Dependências. O seu serviço depende de algum outro?
 

After=network.target
Ordem de execução. O serviço só será iniciado após o outro definido estar rodando.

[Service]
Type=simple
WorkingDirectory=/home/butis/hubot

Diretório de execução do seu serviço.

User=sobutis

Restart=always
RestartSec=10

Caso o serviço não inicie, ele tentará reiniciar de acordo com o estabelecido nas regras de Restart.

EnvironmentFile=/etc/hubot/variaveis.conf

Como meu script possui várias variáveis, eu preferi carregá-las em um arquivo separado. Defina suas variáveis nele.

ExecStart=/home/butis/hubot/bin/hubot -a rocketchat

Comando de execução do script. Coloque o path inteiro.

[Install]
WantedBy=multi-user.target 


Terminado o arquivo, execute um reload nas confs do systemd:
systemctl daemon-reload

E inicie o serviço
systemctl start hubot

Podemos deixar que ele inicie junto com os outros serviços:
systemctl enable hubot


Prontinho. Com esse modelo vocês já podem colocar qualquer script pra rodar como serviço sem dor de cabeça. Como informação adicional, recomendo a leitura de um documento da Red Hat, muito bem explicado por sinal:
 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html

E um guia pra quem ainda tem medo do systemd
E isso aí. Abraços!

Posts populares