Linux

Dicas Linux

Erro ao inicializar serviço no CentOS

Ocorreu erro no start do serviço do Elasticsearch ao migrar para a versão 8.5.3. Ao inicializar, houve atraso para atualizar os índices, bem como remover os índices antigos.

Symptom: elasticsearch service cancelled by timeout

Durante a inicialização, sem causa aparente, o serviço fazia a parada dos processos internos, enquanto o comando “service elasticsearch start” não finalizava, ou seja, não devolvia o prompt para o usuário.

Solution: extend the timeout value (in seconds)

File: /usr/lib/systemd/system/elasticsearch.service
# Allow a slow startup before the systemd notifier module kicks in to extend the timeout -- former value was 75
TimeoutStartSec=180
# Line below was added
NotifyAccess=all

Montando pasta compartilhada no Windows 10 (guest Virtualbox) em Ubuntu para Windows 10 (host)

Usando Samba é possível

  1. Crie o compartilhamento no Windows (guest) – Exemplo: PastaCompartilhada
  2. Instale o Virtualbox Utils
  3. Crie uma interface de rede (guest) do tipo Host-Only
    Importante: deve ser no mesmo Tipo de placa de rede NAT (verificar na parte oculta – “Advanced” do Virtualbox)
  4. Defina um IP à placa host-only, caso não tenha feito ou não use DHCP virtual (Virtualbox)
  5. Mapeie uma unidade de rede (Exemplo: Z:) no Windows (host) apontando para o share criado acima (PastaCompartilhada)
  6. No Ubuntu para Windows, crie uma pasta em /mnt – Exemplo: pasta_comp
  7. No Ubuntu, execute o comando: mount -t drvfs Z: /mnt/pasta_comp

Gravando no ESP32, ESP8266/ESP-12E

Neste tutorial, vamos aprender a gravar firmware e programas compilados para estes microcontroladores – ESP32, ESP8266/ESP-12E.

1) Encontre o firmware mais atual

Através do site da Espressif, pode ser achado o firmware do ESP8266 em arquivo zip.

Existe um guia que explica como encontrar o firmware mais atualizado para o chip no Github. Sendo este o mais atualizado até o momento para o ESP8266.

2) (no MS-Windows) – Efetue o download do Flash Download Tools

No site da Espressif Download, baixar o arquivo zip do Flash Download Tools v. 3.9.2.

3) (no MS-Windows) – Gravando o firmware

Após descompactar o Flash Download Tools, executar flash_download_tool_3.9.2.exe.

Escolha ESP8266, develop e uart, clicando em OK
Clicar em “START” para detectar as informações – “DETECTED INFO”.
Após descompactar o arquivo zip do firmware, selecionar o “SPI SPEED”, neste caso, em 26.7MHz (crystal: 26 MHz) e preencher com o bin de fábrica (factory), bem como o endereço 0x0, clicando em “START”.

Após aparecer “FINISH”, em verde, a gravação ocorreu com sucesso.

4) (no Linux) – Instalar o esptool.py

Instalar o pacote e dependências no Python 3.x:

# pip3 install esptool
Collecting esptool
  Downloading esptool-4.2.1.tar.gz (202 kB)
     |████████████████████████████████| 202 kB 3.8 MB/s
Collecting bitstring>=3.1.6
  Downloading bitstring-3.1.9-py3-none-any.whl (38 kB)
Requirement already satisfied: cryptography>=2.1.4 in /usr/lib/python3/dist-packages (from esptool) (2.8)
Collecting ecdsa>=0.16.0
  Downloading ecdsa-0.18.0-py2.py3-none-any.whl (142 kB)
     |████████████████████████████████| 142 kB 4.8 MB/s
Requirement already satisfied: pyserial>=3.0 in /usr/lib/python3/dist-packages (from esptool) (3.4)
Collecting reedsolo<=1.5.4,>=1.5.3
  Downloading reedsolo-1.5.4.tar.gz (271 kB)
     |████████████████████████████████| 271 kB 6.3 MB/s
Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.8/dist-packages (from ecdsa>=0.16.0->esptool) (1.15.0)
Building wheels for collected packages: esptool, reedsolo
  Building wheel for esptool (setup.py) ... done
  Created wheel for esptool: filename=esptool-4.2.1-py3-none-any.whl size=259061 sha256=c6882db6ef10b18d17cd5c499d0eb7d464a0c302816a89fe00f8956e801854fa
  Stored in directory: /root/.cache/pip/wheels/f0/e8/bf/3ffce5fd74eead2a1f1460250889e9042c283d689ef8e96620
  Building wheel for reedsolo (setup.py) ... done
  Created wheel for reedsolo: filename=reedsolo-1.5.4-py3-none-any.whl size=28950 sha256=a0ca4b03876b337a9c82bfb9eedebc15ad39886009e03277db47db62653eb3c8
  Stored in directory: /root/.cache/pip/wheels/09/d5/d4/7485a909ef156de1ad5d336eecbd784dd9d54af373850ff4bc
Successfully built esptool reedsolo
Installing collected packages: bitstring, ecdsa, reedsolo, esptool
Successfully installed bitstring-3.1.9 ecdsa-0.18.0 esptool-4.2.1 reedsolo-1.5.4

Pesquisar em qual tty está a placa ESP, corresponde a um COM x do Windows (p.ex. COM4):

# for tty in $(ls /dev/ttyS*); do stty -F $tty -a; done
stty: /dev/ttyS0: Input/output error
stty: /dev/ttyS1: Input/output error
...
stty: /dev/ttyS39: Input/output error
speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = <undef>; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
stty: /dev/ttyS40: Input/output error
stty: /dev/ttyS41: Input/output error

Neste caso, se está depois de ttyS39 antes de ttyS40, é ttyS4.

Dessa forma, temos:

# esptool.py --chip auto --port /dev/ttyS4 --baud 115200 --before default_reset --after har
d_reset write_flash -z 0x0 download.config
esptool.py v4.2.1
Serial port /dev/ttyS4
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 4c:75:25:37:8b:3f
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00000fff...
Compressed 512 bytes to 199...
Wrote 512 bytes (199 compressed) at 0x00000000 in 0.1 seconds (effective 74.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

5) Considerações Finais

Podemos observar que, no download.config, usado no esptool.py (Linux), temos as configurações detalhadas de quais são os binários e os endereços de gravação no chip ESP:

# cat download.config
--flash_mode dio --flash_freq 80m --flash_size 2MB 0x8000 partition_table/partition-table.bin 0x9000 ota_data_initial.bin 0x0 bootloader/bootloader.bin 0x10000 esp-at.bin 0xF0000 at_customize.bin 0xFC000 customized_partitions/client_ca.bin 0x106000 customized_partitions/mqtt_key.bin 0x104000 customized_partitions/mqtt_cert.bin 0x108000 customized_partitions/mqtt_ca.bin 0xF1000 customized_partitions/factory_param.bin 0xF8000 customized_partitions/client_cert.bin 0xFA000 customized_partitions/client_key.bin

Dessa forma, é possível realizar o passo 3, utilizando os arquivos bin e endereçamentos acima (formato hexadecimal 0xNNNN).

Copiando partição Windows NTFS no Kali Linux

Preparo: Instalar o ntfs-3g

#apt-get install ntfs*

#fdisk -l

/dev/sdbN Microsoft basic data
Esta é a partição com dados – vamos tomar como exemplo o sdb3

#ntfsfix /dev/sdb3

Abaixo: readonly (-r), umask (para controlar permissões), -t para especificar o filesystem.

#mount /dev/hda1 /mnt/Windows -t ntfs -r -o umask=0222

Abaixo: recursivo (-r), para seguir os links simbólicos/atalhos (-L)

#cp -Lr /mnt/Windows /media/sf_Pasta_Hospedeiro/

SELinux

1) Checar status

sestatus

2) Modos de Operação do SELinux

  1. Enforcing – modo padrão, exige que a política de segurança SELinux seja cumprida
  2. Permissive – SELinux está habilitado, porém não exige o cumprimento da política. Apenas gera logs.
  3. Disabled – SELinux fora de operação. Nunca use assim!

3) Configuração do SELinux

vi /etc/selinux/config

Escrever em SELINUX= com um dos três valores: enforcing, permissive e disabled.

Git – guia rápido

Este guia resume os comandos para atualizar o repositório Git (versão paga) ou Bit Bucket / outros (versão gratuita).

  1. Clone do repositório:
    git clone https://url/git_account/git_repo.git
  2. Receber arquivos alterados:
    git pull <repo>
  3. Se incluiu um arquivo:
    git add <arquivo>
  4. Se incluiu/alterou um arquivo:
    git commit .
  5. Push (publicação) do repositório:
    git push <repo> <branch>

Após o clonning é possível que o git já esteja configurado com o alias “origin” para a URL do repositório do diretório. É possível verificar essa configuração no subdiretório .git.
Assim sendo, um exemplo do comando (5) seria: git push origin master

Apagar somente arquivos com o find – Linux

O find permite procurar arquivos e executar comandos, quando os critérios são atendidos. No caso desta dica, o find foi combinado com o rm (remover arquivos).

O comando abaixo procura somente arquivos, sem incluir subdiretórios e perguntando qual é o arquivo a ser apagado:

find /path/to/directory/ -maxdepth 1 -type f -exec rm -iv {} \;

-maxdepth 1 — profundidade da busca. O argumento deve ser igual ou maior que zero. Com maxdepth=0, apenas os testes e ações do find são aplicados aos argumentos de linha de comando (ex. apenas o diretório, neste caso). No caso de maxdepth=1, inclui apenas o diretório corrente.

-type f — apenas arquivos

-exec rm -iv — executa o comando. Neste caso rm -iv, que corresponde a: -i (inquire) pergunta se apaga o arquivo; -v (verbose) informa qual arquivo está sendo apagado.