Os scripts bash são uma parte importante do trabalho de um administrador de sistema. Eles permitem que você automatize tarefas mundanas e críticas.
Uma das melhores coisas com scripts é que eles podem ser executados de forma independente sem intervenção humana, mas às vezes pode ser um desafio automatizar tarefas que exigem senhas de usuário. Vejamos como você pode automatizar com segurança scripts que exigem senhas sem comprometer a segurança.
Criando um script simples
Vamos supor que você queira criar um script simples que faça backup de sua pasta inicial do Linux em um local remoto para que você possa restaurar facilmente seus dados em caso de perda de dados.
Comece criando um arquivo de script Bash em sua pasta pessoal, usando o comando de toque ou qualquer outro método, e nomeie-o backup_home.sh. Sinta-se à vontade para usar qualquer nome e diretório de sua preferência.
O roteiro usa o rsync command, uma poderosa ferramenta de cópia de arquivos, para fazer backup de todos os arquivos em seu diretório pessoal local em um servidor remoto.
Copie o conteúdo do script a seguir e cole-o em seu arquivo Bash. Lembre-se de substituir o usuário john pelo nome correto do usuário doméstico local. Forneça também o nome de usuário e endereço IP corretos para o servidor remoto.
#!/bin/bash
#Copiar dados para um servidor remoto
rsync -avl --mkpath /home/john user_name@controlo remoto_servidor/home/Backup
Se você não tiver um servidor remoto para testar, você pode simplesmente instale o VirtualBox e configure uma VM em sua máquina local. Use a VM convidada como seu servidor remoto.
Salve o arquivo. Para executar o script, você precisa conceder a ele a permissão de execução usando o comando sudo chmod 755. Todos os usuários podem executar o script, mas apenas os usuários sudo podem modificar o arquivo.
Por fim, execute o script Bash no terminal usando o comando:
./backup_home.sh
Sempre que executar este script, você será solicitado a inserir a senha do servidor remoto. Isso não é ideal se você deseja executar o script sem intervenção humana, como ao usar o Cron.
Automatizando o Login de Senha
Instalar sshpass, um provedor de senha não interativo, em seu PC local ou no PC a partir do qual você executará o script.
Em distros baseadas no Debian
Se você estiver em uma distribuição baseada em Debian, como Ubuntu, Pop!_OS e Lubuntu:
sudo apt atualizar && sudo apt instalar sshpass
No RHEL e no Fedora
dnf instalar sshpass
Depois de instalar o sshpass, modifique o script para que fique da seguinte maneira.
#!/bin/bash
#Copiar dados para um servidor remoto
sshpass -p "sua senha" rsync -avl --mkpath /home/john user_name@remote_server/home/Backup
Aqui você fornece a senha em texto simples. Obviamente, este não é o caminho ideal, pois não é seguro e nem uma boa prática. Se o script cair nas mãos erradas, você estará em apuros.
Para tornar isso mais seguro, usaremos o GnuPG, uma ferramenta de criptografia segura e de código aberto.
Criptografando sua senha
O GnuPG é instalado por padrão na maioria dos sistemas Linux, mas caso não esteja instalado em seu sistema, aqui está como instalar o GnuPG.
Crie um arquivo oculto chamado segredos usando o comando toque em .secrets. Como ocultamos o arquivo por padrão como uma medida extra de segurança, veja como você pode ver arquivos ocultos no Linux.
No arquivo de segredos, digite a senha do seu PC remoto e salve-a.
Em seguida, criptografe o arquivo usando o gpg comando.
sudogpg.secrets
Você será solicitado a inserir uma senha segura e forte para abrir o arquivo criptografado.
O GnuPG criará um novo arquivo com a extensão .gpg anexado ao nome do arquivo antigo. Seu novo nome de arquivo agora deve ser segredos.gpg, supondo que você usou o segredos nome do arquivo.
Se você visualizar o conteúdo de secrets.gpg usando o gato comando, você verá algum texto sem sentido para mostrar que sua senha está criptografada.
Para visualizar o conteúdo do arquivo em texto simples, você precisará descriptografá-lo usando o seguinte comando (você será solicitado a inserir a senha definida durante a criptografia):
gpg-dqsegredo.gpg
Usando uma senha criptografada em seu script
Para usar a senha criptografada no script, atualize o script da seguinte maneira:
#!/bin/bash
#Copiar dados para um servidor remoto
gpg -dq segredos.gpg | sshpass rsync -avl --mkpath /home/john user_name@controlo remoto_servidor/home/Backup
Execute os scripts de backup novamente e, desta vez, você não será solicitado a fornecer uma senha.
Automatize tarefas com scripts Bash
O GnuGP é freqüentemente usado para proteger arquivos e dados confidenciais em seu PC e também é uma ótima ferramenta para proteger senhas em scripts Bash automatizados no Linux.
Há muito que você pode fazer com scripts Bash. O Bash é uma ferramenta poderosa que pode ajudá-lo a automatizar muitas coisas no Linux e aprender a escrever scripts Bash é um investimento que vale a pena.