05/06/2020

Scripts de inicialização com Systemd

     O systemd é um sistema de inicialização (init system) composto por um conjunto de programas executado em segundo plano (ou seja, um daemon). Atualmente, a maioria das distribuições linux utiliza este daemon para gerenciar a inicialização do sistema. Dessa forma, se for necessário adcionar algum script a inicialização do Linux, não basta mais colocar o mesmo no /etc/rc.local, é necessário seguir o padrão do systemd.

     A inclusão de um script na inicializa é necessário que sejam seguidos alguns passos conforme a seguir.

1. Criação do script

     Embora o systemd seja o responsável pela inicialização do Linux, ele não inicializa scripts naturalmente, logo o script propriamente dito ainda é necessário.

     Crie o script para executar a ação desejada e salve no diretório que desejar. Como exemplo, será utilizado o script vpn_manager.sh salvo em /usr/local/sbin, pois facilita a posterior utilização.

2. Definir o momento da execução.

     O systemd executa as units (seus scripts) de acordo com o nível de execução definido no script. Assim, para informar quando deve ocorrer a execução, é necessário informar após qual processo ela deve ocorrer.
systemd-analyze plot > systemd.svg 
     O comando acima gera um relatório com todas as inicializações, sequência e tempo de inicialização individual, resultando em uma “imagem” com um gráfico. Para conseguir visualiza-la pode-se utilizar um navegador como Chrome, Chromium ou Firefox. Ou então algum programa de imagem ImageMagick, gimp, inkscape, etc.

3. Criando um serviço no daemon

Criar um arquivo com a nomenclatura [vpn_manager].service em /lib/systemd/system/, incluindo o conteúdo a seguir:
[Unit]
# Descricao do que sera executado
Description=gerenciamento de vpn
# Esta unit sera executada apos o servico definido
After=network.service openvpn.service

[Service]
# Tipo de inicialização
Type=simple
# Para que o systema considere o servico como ativo após executado
#RemainAfterExit=yes
# Este campo exige o caminho completo até o script a ser executado
ExecStart=/usr/local/sbin/vpn_manager.sh

[Install]
# Serviço valido para o runlevel multi-user.targe
WantedBy=multi-user.target 
Outras configurações pode ser realizadas, incluindo opções de start, status e stop. Mais informações podem ser encontradas nesse link ou nas referências.

4. Efetivando a configuração

chmod +x /usr/local/sbin/vpn_manager.sh
systemctl enable /lib/systemd/system/vpn_manager.service
systemctl daemon-reload
reboot
A primeira linha da permissão de execução para o script, caso ainda não tenha sido feito. A segunda habilita o service, a terceira recarrega ao daemon e a última reinicia o sistema para testar a configuração.  Sempre que forem realizadas alterações no daemon, o mesmo deve ser recarregado.

12/05/2020

Acessar Linux remotamente via RDP

      Geralmente os acesso remotos são realizados nos servidores via ssh. Mas por algum motivo, pode vir a ser necessário um acesso ao ambiente gráfico de um equipamento que não é um servidor e que somente o acesso ssh pode não resolver.
     Em momentos distintos, relativamente próximos, tive necessidade deste tipo de acesso em dois computadores, com distribuições Mint e Ubuntu e não fiquei muito surpreso ao ver que para cada uma é necessária uma configuração diferente.
     Logo, seguem as configurações realizadas em casa distribuição, que obviamente foram retiradas de algumas outras páginas, cujos endereços estão nas referências.


Configuração no Mint

Nesse senário, é possível apenas uma conexão remova por usuário, podendo o usuário estar logado localmente

1. Basta instalar o pacotes necessários e reiniciar o computador:
# sudo apt-get install xrdp xorgxrdp
2. Configura xrdp para permitir uma sessão remota. Caso essa linha não seja configurada, um erro de acesso é exibido após a senha. Alterar para mate-session ou para o ambiente gráfico que estiver utilizando
echo env -u SESSION_MANAGER -u DBUS_SESSION_BUS_ADDRESS cinnamon-session > ~/.xsession
3. Agora basta realizar o acesso por onde desejar, tando por outro SO Linux, utilizando o remina ou rdesktop ou por um SO Windows utilizando o assistente para conexão de área de trabalho remota.


Configuração no Ubuntu

1. Instalar o xrdp:
# apt-get install xrdp
2. Instalar o mate para área de trabalho alternativa, pois não encontrei uma solução para utilizar o Gnome.
# apt-get install mate-core mate-desktop-environment mate-notification-daemon
3. Configura xrdp para uso do mate
# sed -i.bak '/fi/a #xrdp multiple users configuration \n mate-session \n' /etc/xrdp/startwm.sh
4. Caso o teclado não funcione, este link foi o que funcionou para o meu caso. Caso está não funcione, em uma das referências, existe outra forma de realizar a configuração do teclado.

Referências


03/03/2020

Sincronização de data e hora no linux

     Em algumas instalações pode ocorrer de o servidor ficar com a hora incorreta devido ao fuso horário em que se encontra. A timezone na qual o dispositivo se encontra, pode ser verificada com o comando timedatectl e reconfigurada com o comando dpkg-reconfigure tzdata.

     Após a reconfiguração da timezone pode ser necessário manter o servidor com a hora sincronizada através de um servidor NTP. Essa configuração pode ser realizada com a instalação do ntpdate e configuração da sua execução periódica no crontab com a inclusão da linha * */2 * * * ntpdate [IP/URLdo servidor NTP 2>&1 >  /dev/null.
apt-get install ntpdate
     Alguns endereços de servidores NTP mais estáveis e/ou confiáveis são:
  • 0.pool.ntp.org
  • 1.pool.ntp.org
  • a.ntp.org
  • b.ntp.org
  • c.ntp.org
     Também existem outras formas de configurar a sincronização de data e hora, que podem ser pesquisadas na web ou em alguns dos links nas referências do post.

Referências 

12/07/2019

Instalando Packet Tracer no linux

     A Cisco disponibiliza um simulador de rede com alguns dos seus equipamentos, permitindo criar cenários que vão desde configurações básicas até ambientes completos. A utilização do programa exige uma conta no site netacad.com, ambiente de treinamento da Cisco, para acesso a todas as funcionalidades, no entanto permite um acesso mais restrito como usuário convidado.

     Após realizar o cadastramento e login no Net Acad, é possível baixar a última versão do programa (7.2.1), para Windows e Linux nas versões 32 e 64 bits. Além das versões para desktop, também são disponibilizadas versões para dispositivos móveis com iOS e Android.
     A instalação nos dois ambientes ocorre de forma trivial, no entanto para linux algumas bibliotecas ficam faltando, sendo necessário a sua instalação. De uma forma resumida, os passos a seguir resultam na instalação correta da versão 7.2.1:
1. Descompactar o aquivo .tar.gz em um diretório:
mkdir pkttar -xvzf Packet Tracer 7.2.1 for Linux 64 bit.tar.gz -C pkt/
2. Acessar o diretrório e instalar o programa. Caso seja executado como usuário sem poderes administrativos, será solicitada a senha de root.
cd pkt
./install
3. Agora a instalação das bibliotecas pendentes, como root.
apt install libqt5xml5 libqt5webkit5 libqt5script5 libqt5scripttools5 libqt5sql5
wget http://ftp.us.debian.org/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u3_amd64.deb
dpkg -i libpng12-0_1.2.50-2+deb8u3_amd64.deb
4. Pronto, o programa já pode ser executado com o comando abaixo:
/opt/pt/bin/PacketTracer7

Corrigindo o atalho

     Ao executar somente o comando packettracer, o programa não inicializa, sendo necessário passar todo o caminho como no passo 4 descrito anteriormente. 
     Para que esse comando execute corretamente, é necessário editar o arquivo /opt/pt/packettracer realizando uma das duas alterações descritas abaixo.
  • trocar a linha pushhd $PTDIR/bin > /dev/null por cd $PTDIR/bin > /dev/null. 
  • ou alterar a linha seguinte incluindo o caminho necessário /opt/pt/bin/PacketTracer7 "$@" > /dev/null 2>&1

Referências