DioPSI - Script multidistro para instalar programas
Publicado por Isaac Luiz Angelo Castro (última atualização em 08/01/2024)
[ Hits: 3.083 ]
Homepage: http://bitcoinrotator.pe.hu/
Introdução
Um dia rodando pela internet vi um post de um Vlog chamado DioLinux de um entusiasta de Linux, tentando automatizar a instalação dos programas após , de forma simples e funcional mas muito redundante, do ponto de vista da programação é extremamente redundante o que ele estava fazendo, mas a ideia me parecia boa, por isso resolvi aproveitar e criar uma solução mais robusta, e batizei em homenagem a quem inspirou o script.
O que é o DioPSI ?
O DioPSI é um script escrito em Shell Script para acelerar a instalação de Programas após você ter recém instalado um sistema operacional Linux (Debian based).
Como funciona?
Esse script analisa um arquivo de texto simples contendo uma lista de programas organizada tendo como base os método de instalação, e executa a instalação dos programas listados.
Como usar?
Logue como usuário root, entre na pasta do script e dê perrmissão de escrita para o arquivo diopsi.sh com o comando chmod +x diopsi.sh.
Sintaxe do comando
abstração comando [flag] arquivo
exemplo ./diopsi.sh -a my_prograns.txt
flags
flag função
--all Instala utilizando todos os metodos disponíveis (apt,flatpack,snap)
-a Instala os programas utilizando metodo apt.
-f Instala os programas utilizando metodo flatpack.
-s Instala os programas utilizando metodo snap.
-h ou --help Exibe ajuda.
-v ou --version exibe a versão do script.
montando a lista de programas
O script aceita somente arquivos do tipo ASCII text, não é preciso extensão. esse arquivo deve ser organizado da seguinte forma:
Pacotes que vão utilizar método de instalação apt devem ser escritos em lowercase e estar entre as palavras APT...PTA, divididas por espaço.
Exemplo apt
APT gimp krita:i386 TPA
ou
APT
gimp krita:i386
TPA
Pacotes que vão utilizar método de instalação Flatpack devem ser escritos em lowercase e estar entre as palavras FLAT...TALF, divididas por espaço.
Exemplo Flatpack
FLAT gimp krita:i386 TALF
ou
FLAT
gimp krita:i386
TALF
Pacotes que vão utilizar método de instalação snap devem ser escritos em lowercase e estar entre as palavras SNAP...PANS, divididas por espaço.
Exemplo snap
SNAP gimp krita:i386 PANS
ou
SNAP
gimp krita:i386
PANS
Github do projeto:
https://github.com/isaacangello/DioPSI
#!/bin/bash ######################################################################## # script DioPSI #Essa é uma reconstrução do script inicial DioPSI. #Esse script tem como objetivo automatizar a reinstalação #de programas após a instalção do sistema operacional (linux). #Esse script foi inspirado no post do Dio Linux. ######################################################################## ############ Para evitar alguns erros essa sessão contém informaçoes de ajuda ############ e contém informações sobre a versão do script. helpprint (){ echo " Sintaxe comando [flag] arquivo Flags-------------------------------------------------------------------------- --all Instala utilizando todos os metodos disponíveis (apt,flatpack,snap) -a Instala os programas utilizando metodo apt. -f Instala os programas utilizando metodo flatpack. -s Instala os programas utilizando metodo snap. _______________________________________________________________________________ O script aceita somente arquivos do tipo ASCII text, não é preciso extensão " exit 0 } version="0.1.1" if [ $1 == "-h" ] || [ $1 == "--help" ] ;then helpprint ; fi if [ $1 == "-v" ] || [ $1 == "--version" ] ; then echo "versão $version" ; fi #################################################################################### ############ aprte do script para tratamente de nomes de arquivos temorários #################################################################################### arquivo=$(echo $*) tmparqapt=aptprogs.txt tmparqflat=flatprogs.txt tmparqsnap=snapprogs.txt arquivo=$(echo "${arquivo##* }") testearq=$(file $arquivo) #echo $testearq | cut -d':' -f2 | cut -d' ' -f2-3 testearqresult=$(echo $testearq | cut -d":" -f2 | cut -d" " -f2-3) remoteflatpack=$( flatpak remotes | head -n 1 | cut -f1 ) #################################################################################### ############ checando se o arquivo existe passado no argumento. #################################################################################### if [ "$testearqresult" != "ASCII text" ] ; then echo " houve algum erro ou arquivo não existe. " exit 1 fi if [ -f $tmparqapt ];then rm -f $tmparqapt ;fi if [ -f $tmparqflat ];then rm -f $tmparqflat ;fi if [ -f $tmparqsnap ];then rm -f $tmparqsnap ;fi #read isc sed -n '/APT/,/TPA/p' $arquivo > $tmparqapt sed -n '/FLAT/,/TALF/p' $arquivo > $tmparqflat sed -n '/SNAP/,/PANS/p' $arquivo > $tmparqsnap sed -i 's/APT/ /g' $tmparqapt sed -i 's/TPA/ /g' $tmparqapt sed -i 's/FLAT/ /g' $tmparqflat sed -i 's/TALF/ /g' $tmparqflat sed -i 's/SNAP/ /g' $tmparqsnap sed -i 's/PANS/ /g' $tmparqsnap sed -i '/^$/d' $tmparqapt sed -i '/^$/d' $tmparqflat sed -i '/^$/d' $tmparqsnap #################################################################################### ############ funcão motor que executa as instalaçoes dos pacotes #################################################################################### function installpkgs(){ arquivo_param=$1 while IFS= read -r linha || [[ -n "$linha" ]]; do for palavra in $linha do case $2 in "Apt") apt install $palavra -y ;; "Flatpack") flatpack install -y $remoteflatpack $palavra ;; "Snap") resuldinfo=$(snap info $palavra | grep latest/stable: | grep classic | wc -l) if [ $resuldinfo == 0 ] ; then echo "Instalando $palavra via $2 aguarde..." snap install $palavra else echo "Instalando $palavra via $2 aguarde..." snap install --classic $palavra fi ;; *) echo "Houve algum erro estrambólico com o codigo de saída $?" ;; esac sleep 1 done done < "$arquivo_param" } #################################################################################### ############ tratamento de argumentos recebidos pelo comando principal ($0) #################################################################################### while [ $# -gt 0 ]; do case "$1" in -a) installpkgs "$tmparqapt" "Apt" break ;; -f) installpkgs "$tmparqflat" "Flatpack" break ;; -s) installpkgs "$tmparqsnap" "Snap" break ;; --all) installpkgs "$tmparqapt" "apt" installpkgs "$tmparqflat" "Flatpack" installpkgs "$tmparqsnap" "Snap" break ;; *) echo "$0: Este parâmetro '$1' não foi reconhecido, saindo... proximo é $2" exit 1 ;; esac shift done #################################################################################### ############ ####################################################################################
Errata: Configuração do Modem Sony Ericsson MD300 da Claro 3G no Linux
Usando mencoder para capturar vídeos da placa BT878
SSH - Detecta ataque por brute force e bloqueia o IP do atacante.
Habilitar/Desabilitar Touchpad do notebook (usando gsettings)
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)