DioPSI - Script multidistro para instalar programas

Publicado por Isaac Luiz Angelo de Azevedo (última atualização em 08/01/2024)

[ Hits: 1.420 ]

Homepage: http://bitcoinrotator.pe.hu/

Download diopsi.sh




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

  



Esconder código-fonte

#!/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


####################################################################################
############
####################################################################################


Scripts recomendados

Enviar ip dinâmico

Aprenda a falar os números de 0 a 99 em Inglês

Removendo lixo do sistema

Remover/Exibir Arquivo/Diretório de uma estrutura de diretórios

Rastreamento Correios


  

Comentários
[1] Comentário enviado por maurixnovatrento em 24/01/2024 - 21:06h


Muito bom o script.

______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts