La Fucina di @trigg: uno script per tutti gli usi - [Laboratorio per dilettanti]

Aperto da trigg, Mercoledì 23 Maggio 2018, 22:51:39

Discussione precedente - Discussione successiva

trigg

apro questo topic partendo da una domanda:
cosa è un pc?

la risposta che mi son dato è che un pc non è altro che uno strumento che ci permette di compiere
calcoli, operazioni ,guardare film , ascoltare musica , creare film immagini musica , un pc ci permette
di tenerci aggiornati in tempo reale ed informati in sintesi il pc è in-forma-azione uno strumento
che ci permette di formare azione.

spesso ci si limita a guardare il monitor ed ad intendere il pc solo come sistema operativo
ma in realtà il computer parte dalla punta delle nostre dita cioè dalla tastiera che invia
comandi al sistema per portarlo dove vogliamo la tastiera è lo strumento principale del pc
senza tastiera al momento non è possibile comunicare con il sistema.

quindi secondo me è importante oltre che configurare il sistema configurare la tastiera
assegnado a dei tasti o una combinazioni di tasti dei processi che posson fare immediatamente
dire al sistema cosa vogliamo da lui , senza dover sprecare energie nel ricordare e scrivere
linee di comando che spesso sono lunghe con sintassi simili trattini segni speciali punti duepunti
puntini slash maiuscole miniscole e così via dicendo.

così con uno script associato ad una combinazione di tasti è possibile fare del PC
il proprio Computer Personale , proprio perchè personalizzato con i nostri comandi
e la nostra tastiera.

da qui parte l'idea di questo topic che possa essere d'ispirazione a nuove frontiere
ed a nuove idee , tenendo presente che mecomemedesimo sono un dilettante che come voi
è appassionato di informazione automatica meglio conosciuta come informatica . :)  :)  :'(
se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...

nessuno

Ciao trigg, complimenti per il titolo del topic... :)

In effetti questo nuovo topic nasce da un altro topic che mi sembra opportuno ricordare se si vuole comprendere meglio lo spirito con il quale parte: http://www.linuxminditalia.org/index.php?topic=24534.msg267649#msg267649

In questa precedente discussione, quasi per gioco, sono stati concepiti degli script che, senza avere la pretesa di essere particolarmente utili, svolgono la funzione per la quale sono stati realizzati.

Anche se elementari credo che rappresentino una forma di programmazione, rendendo di fatto il loro autore un programmatore dilettante.

Da parte mia, complice il fatto che uso una distribuzione che fa largo uso di script, ne sono come minimo incuriosito, ma anche interessato, A me infatti piacerebbe, per esempio, realizzare una slackbuild che si occupi di compilare, pacchettizzare e installare Baka-Mplayer, un player video per il quale non esistono per slackware pacchetti precompilati o slackbuild per compilarlo.

Naturalmente so che non ci si può improvvisare programmatore, sarà necessario portare il livello di conoscenza della materia a un livello almeno di un pochino superiore.

Questa guida: http://www.html.it/guide/shell-scripting-la-guida/, sembra essere un buon punto di partenza. Suggerimenti ulteriori in tal senso sarebbero comunque molto apprezzati.  ;)


:ciao:

trigg

grazie nick per i complimenti , specialmente per il programmatore dilettante  :bonk:  >:(  :grin:
questo script può sembrare inutile ma secondo me può farti risparmiare tempo ed energie considerando il fatto che bisogna cmq fare dei copia -incolla anche normalmente

si tratta di scaricare file tar , scompattarli  aprire la finestra di destinazione e mantenere aperto il terminale sempre nella posszione del download
per scompattare il file ho preferito usare dtrx che ti da modo in fase di scompattamento  di scegliere dove scompattare , di rinominare la cartella o di lasciare nome e destinazione invariati

lo script è questo
#!/bin/bash
wmctrl -r TerminalEmulator -b add,above

cd  /home/tom/Scaricati/000/
echo Incolla nome
read nome
echo incolla link
read link
$exec wget -O $nome $link
ls
$exec dtrx $nome
$exec thunar /home/tom/Scaricati/000
/bin/bash
exit


la scorciatoa tastiera se la si vule è questa
exo-open --launch TerminalEmulator /mnt/DATI/anarchy/scorciatoietastiera/ext.sh

il risultato è questo
ho anche fatto un'aggiornamento del sistema
https://drive.google.com/file/d/1ar7yk3D-KhxFvyS39mdROFEY4WiL2s2e/view?usp=sharing   :)

avrei voluto anche aggiungere l'installazione ma per ovvie ragioni non è possibile farlo almeno per le mie conoscenze
cmq ho fatto si di poter operare o nella cartella o nel terminale   :ciao:
se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...

nessuno

Ho visto il video e, anche se non ho capito perché dovrai scaricare un file .tar, la sensazione che ho avuto è che il computer ha eseguito la serie di compiti che gli hai assegnato. Che poi questi compiti abbiano o meno una qualche utilità può anche considerarsi un fatto di secondaria importanza. La cosa importante è che l'esercizio dia sempre qualche soddisfazione.

Per come la vedo io possiamo anche "inventare" cose che sono già state inventate e anche copiarle, in parte. La cosa importante è capire cosa stai copiando, per poterlo usare e magari adattarlo in una situazione diversa.

Quindi, se vuoi, puoi proseguire come stai facendo, oppure, e io così mi sentirei un po' più partecipe, facendo qualcosa che sia condivisibile e utilizzabile nel quotidiano.
Dal momento che siamo accomunati da slackware la prima cosa che mi viene in mente è uno script che dia: slackpkg update e poi slackpkg upgrade-all e che sia interattivo quanto basta da poter interrompere l'operazione nel caso in cui non ci siano pacchetti per l'upgrade. Questo per cercare di tenere insieme utile e fattibile. :)

Inoltre ci terrei a sottolineare che per quanto mi riguarda questa è un'attività ludica, non dobbiamo dimostrare niente ne avere aspettative troppo alte.

In un lontano passato(...fine anni '80) un amico frequentava un corso di informatica. Alla fine del corso mi mostrò orgoglioso il programma che aveva realizzato, il programma disegnava, con delle linee a zigzag, il contorno di un albero di natale. All'epoca non capii il suo slack e mi concentrai più sul sospetto che fosse lo stesso albero per tutti i partecipanti del suo corso, e di molti altri corsi prima e dopo del suo... ;D


...Per come la vedo io qui possiamo anche fare solo stelle comete. Fino alla fine dei tempi. :D

Possiamo pure partire cercando di capire se e come possiamo adattare uno script semplice per ubuntu a una distribuzione diversa, e viceversa...


...Se ti va pensaci.

trigg

in effetti l'esempio di scaricare il tema è molto fuorviante
l'idea è quella di usarlo per i pacchetti da installare  dove bisogna leggere i readme per l'installazione

domani cambio la postazione dei pc per poter utilizzare e lavorare  con slackware più comodamente

:roll:

se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...

nessuno

...Che me lo sono sognato il post che stava qui 5 minuti fa? Mi fai rispondere e mentre rispondo mi cancelli la domanda?  >:(  ;D

Comunque, se rispetto all'ultima volta slackpkg update non trova variazioni in ultimo ti fa una domanda, vedi l'output:

root@slackware:~# slackpkg update

Updating the package lists...
Downloading...
2018-05-25 09:21:44 URL:http://mirrors.slackware.com/slackware/slackware64-14.2/ChangeLog.txt [480522/480522] -> "/tmp/slackpkg.WHmS3m/ChangeLog.txt" [1]
                Saving ChangeLog.txt from repository slackpkgplus ...

                Saving ChangeLog.txt from repository restricted ...

                Saving ChangeLog.txt from repository alienbob ...

                Saving ChangeLog.txt from repository multilib ...

                Saving ChangeLog.txt from repository cinelerracv ...

2018-05-25 09:21:48 URL:http://slakfinder.org/slackpkg+/CHECKSUMS.md5 [2200/2200] -> "/tmp/slackpkg.WHmS3m/CHECKSUMS.md5-slackpkgplus" [1]
2018-05-25 09:21:48 URL:http://bear.alienbase.nl/mirrors/people/alien/restricted_sbrepos/14.2/x86_64/CHECKSUMS.md5 [4068/4068] -> "/tmp/slackpkg.WHmS3m/CHECKSUMS.md5-restricted" [1]
2018-05-25 09:21:49 URL:http://bear.alienbase.nl/mirrors/people/alien/sbrepos/14.2/x86_64/CHECKSUMS.md5 [182574/182574] -> "/tmp/slackpkg.WHmS3m/CHECKSUMS.md5-alienbob" [1]
2018-05-25 09:21:49 URL:http://bear.alienbase.nl/mirrors/people/alien/multilib/14.2/CHECKSUMS.md5 [117689/117689] -> "/tmp/slackpkg.WHmS3m/CHECKSUMS.md5-multilib" [1]
2018-05-25 09:21:50 URL:https://cinelerra-cv.org/repo/CHECKSUMS.md5 [21235/21235] -> "/tmp/slackpkg.WHmS3m/CHECKSUMS.md5-cinelerracv" [1]

No changes in ChangeLog.txt between your last update and now.
Do you really want to download all other files (y/N)?


Non essendoci pacchetti per l'upgrade ti propone una scelta in cui la risposta più opportuna è già selezionata (qui è NO), vedi la N maiuscola, ed è sufficiente dare invio per interrompere il procedimento.
Se invecieio volessi proseguire ugualmente dovrei scrivere y e dare invio.

Per risolvere il dubbio a monte del problema, l'esecuzione dei comandi precedenti può essere subordinata all'esito di quest'altro comando:

slackpkg check-updates

Infatti, se lo do, ottengo questa risposta:

root@slackware:~# slackpkg check-updates

Searching for updates... No news is good news

root@slackware:~#


ed è inutile proseguire con l'esecuzione

Le pagine man di slackpkg sono in italiano, leggile con attenzione  ;)

SLACKPKG(8)                                                        SLACKPKG(8)

NOME
       slackpkg  -  Strumento  automatico  per  la  gestione  dei pacchetti di
       Slackware Linux

SINOSSI
       slackpkg [OPZIONI]  {install|remove|search|upgrade|reinstall|blacklist}
       {SCHEMA|FILE}

       slackpkg [OPZIONI] {clean-system|upgrade-all|install-new}

       slackpkg [OPZIONI] {search|file-search} {SCHEMA|FILE}

       slackpkg [OPZIONI] {generate-template|install-template|remove-template}
       NOMEMODELLO

       slackpkg [OPZIONI] info PACCHETTO

       slackpkg [OPZIONI] update [gpg]

       slackpkg [OPZIONI] {new-config|check-updates}

       slackpkg [OPZIONI] help

DESCRIZIONE
       Slackpkg è uno strumento per tutti quelli  che  vogliono  installare  e
       aggiornare  facilmente  i  pacchetti via rete. Con slackpkg, puoi avere
       un'installazione minimale di Slackware  Linux  e  installare/aggiornare
       solo quei pacchetti di cui hai bisogno.

       Non  è  necessario  configurare  NFS  o  creare decine di CD per i tuoi
       computer; quello che serve è scrivere un comando  e  tutti  gli  ultimi
       pacchetti di Slackware saranno nelle tue dita.

ISTRUZIONI
       Slackpkg  ha molte funzionalità. Puo' cercare file specifici, rimuovere
       tutti i pacchetti di terze parti dal tuo sistema, installare  pacchetti
       aggiunti   in   Slackware  dal  tuo  ultimo  aggiornamento,  vedere  la
       descrizione dei pacchetti, ecc.

       Prima  di  iniziare,   devi   decommentare   un   archivio   nel   file
       /etc/slackpkg/mirrors ed eseguire:

            # slackpkg update

       Questa  azione "update" scaricherà e formatterà la lista dei file e dei
       pacchetti di Slackware.  Ogni volta che la  lista  viene  cambiata,  il
       comando deve essere eseguito.

       Le  principali  funzionalità  di  Slackpkg sono quelle che si collegano
       direttamente alla gestione  dei  pacchetti:  installare,  aggiornare  e
       rimuovere  pacchetti.  Per fare questi compiti, la sintassi di Slackpkg
Manual page slackpkg(8) line 1/277 22% (press h for help or q to quit)
       è:

            # slackpkg [OPZIONI] <azione> {SCHEMA|FILE}

       OPZIONI puo' essere una o piu'  opzioni  delle  molte  elencate  dentro
       /etc/slackpkg/slackpkg.conf.   Ci sono comandi di linea equivalenti per
       la maggior parte delle direttive di configurazione  presenti  nel  file
       slackpkg.conf  -  guarda  la  pagina  del  manuale slackpkg.conf(5) per
       vedere le opzioni disponibili.

       SCHEMA puo' essere il nome del pacchetto o solo una parte.  Puo'  anche
       essere una serie (come kde, a, ap, ...).

       FILE è un file con una lista di SCHEMI dentro: uno per linea, o diversi
       per linea con lo spazio come separatore.

       Slackpkg puo' essere usato per aggiornare l'intera distribuzione.
       Il classico modo per farlo è':

            # slackpkg update
            # slackpkg install-new
            # slackpkg upgrade-all
            # slackpkg clean-system

       Un'altra funzionalità  di  Slackpkg  è  l'abilità  di  lavorare  con  i
       modelli,  con  i quali è piu' facile installare gli stessi pacchetti su
       piu' macchine. I passi base sono i seguenti:

            · Installazione su una macchina

            · Esegui "slackpkg generate-template NOMEMODELLO"

            · Copia /etc/slackpkg/templates/NOMEMODELLO.template nella  stessa
              cartella dell'altra macchina

            · Esegui   "slackpkg   install-template   NOMEMODELLO"  sull'altra
              macchina

       NOMEMODELLO è il nome del tuo modello.

       Seguendo questa pagina del manuale, puoi capire cosa ognuna  di  queste
       (e altre) azioni fa.

AZIONI
       help
            Mostra  le  azioni di slackpkg e una veloce descrizione per ognuna
            di esse. Utile se hai  bisogno  di  sapere  qualcosa  in  piu'  di
            slackpkg.  Le informazioni presenti qui, sulla pagina del manuale,
            sono piu' approfondite.

       update
            update scaricherà l'ultimo elenco dei pacchetti da un archivio  di
            Slackware (o dal tuo CD).  E' una buona idea eseguire
Manual page slackpkg(8) line 54/277 39% (press h for help or q to quit)

                 # slackpkg update

            prima di aggiornare, installare o cercare pacchetti.
            Se hai bisogno di aggiornare la chiave GPG di Slackware, esegui

                 # slackpkg update gpg

            La  chiave  GPG  non  cambia. Questo dovrebbe essere un comando da
            eseguire  solo  una  volta  -  quindi   eseguilo   una   volta   e
            dimenticatelo...

       check-updates
            Verifica  se c'è qualche aggiornamento nel ChangeLog.txt. E' buona
            cosa usarlo da cron per avvertire  l'amministratore  di  eventuali
            aggiornamenti.

       file-search
            Puoi  cercare  i  pacchetti  ufficiali  di Slackware per ogni file
            presente nella distribuzione.   Hai  bisogno  di  una  particolare
            libreria? Usa file-search per trovarla.

                 # slackpkg file-search nomefile

            Tutti   i  pacchetti  che  si  accordano  con  "nomefile"  saranno
            mostrati, cosi' puoi vedere se i pacchetti sono installati  o  no;
            se  non  installati,  puoi  scaricarli  e installarli con le altre
            azioni di slackpkg.

       search
            Puoi cercare ogni pacchetto rilasciato in Slackware.

                 # slackpkg search schema

            Tutti i nomi dei pacchetti che si accordano con  "schema"  saranno
            mostrati.   Come  per file-search, puoi vedere se i pacchetti sono
            installati o no; se non installati, puoi scaricarli e  installarli
            con le altre azioni di slackpkg.

       install
            L'installazione  di  un  pacchetto è molto semplice. Devi soltanto
            scrivere:

                 # slackpkg install pacchetto

            e il pacchetto sarà scaricato e installato
            Non puoi usare l'opzione "install" per installare un pacchetto già
            installato, ma tu potresti reinstallarlo o aggiornarlo.

       upgrade
            upgrade installa le piu' recenti versioni ufficiali dei pacchetti.

            upgrade non proverà ad installare nuovi pacchetti (usa la funzione
Manual page slackpkg(8) line 107/277 56% (press h for help or q to quit)
...Continua


EDIT:

Lo script che hai postato nel post "desaparecido" l'ho salvato e l'ho eseguito, e ho visto come e dove si ferma. Non capisco perché l'hai rimosso. Una delle cose che poteva succedere è che qualcuno ti diceva qualcosa di interessante e di istruttivo, o anche il nulla. Andava bene lo stesso. In ogni caso non sarebbe male se leggendo questa discussione si potesse ripercorrere il percorso che ha portato al risultato ottenuto, che, anche quando fosse buono, sarebbe comunque perfezionabile. E quando non lo fosse rimarrebbe comunque una esperienza interessante. O almeno, questo è ciò che penso io.  :ciao:

trigg

ho notato che non andava bene
così ho provato questo
dovrebbe andare bene

#!/bin/bash
slackpkg update
           OPTIONS="upgrade Quit"
           select opt in $OPTIONS; do
               if [ "$opt" = "Quit" ]; then
                echo done
                exit
               elif [ "$opt" = "upgrade" ]; then
                echo done
slackpkg upgrade-all
           
               fi
           done

/bin/bash
exit


adesso devo capire come fare uscire un'altro menu dopo l'upgrade che ti chiede cosa fare se uscire o fare una nuova operazione.

al momento dopo l'upgrade bisgona pigiare 2 per uscire
se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...

trigg

qquesto dovrebbe essere l'ideale se ho capito bene

#!/bin/bash
slackpkg update
           OPTIONS="upgrade Quit"
           select opt in $OPTIONS; do
               if [ "$opt" = "Quit" ]; then
                echo done
                exit
               elif [ "$opt" = "upgrade" ]; then
                echo done
slackpkg upgrade-all
           exit
               fi
           done

/bin/bash
exit

dopo l'upgrade esce dallo script
se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...

nessuno

Ok, questo non si inceppa. Eccellente!

Sembra fare perfettamente il suo compito. Complimenti. :ok:

Ora, visto che stiamo diventando bravi, possiamo farlo più interattivo?

Secondo me la sequenza ideale per gestire slackpkg dovrebbe avere queste opzioni

Editare la mirrorl list: nano /etc/slackpkg/mirrors

Editare la configurazione di slackpkgplus: nano /etc/slackpkg/slackpkgplus.conf

Se sono state apportate modifiche ai Mirrors di slackpkgplus eseguire slackpkg update gpg

Eseguire il comando di update: slackpkg update

Eseguire il comando di upgrade: slackpkg upgrade-all

Pensi che si possa fare?

trigg

se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...

nessuno


trigg

questa è il primo algoritmo che mi è venuto in mente

alla fine di ogni operazione richiama lo script e basta digitare il numeretto per eseguire il comando

vale per tutti tranne che per quit che esce dallo script senza richiamarlo

bisogna solo cambiare il percorso dello script nel mio caso è /home/tom/Desktop/prova.sh

#!/bin/bash
           OPTIONS="slackpkg_mirrors slackpkgplus.conf slackpkg_update_gpg slackpkg_update upgrade Quit"
           select opt in $OPTIONS; do
               if [ "$opt" = "Quit" ]; then
                echo done
                exit

elif [ "$opt" = "slackpkg_mirrors" ]; then
                echo done
nano /etc/slackpkg/mirrors
           sh /home/tom/Desktop/prova.sh

elif [ "$opt" = "slackpkgplus.conf" ]; then
                echo done
nano /etc/slackpkg/slackpkgplus.conf
   sh /home/tom/Desktop/prova.sh

elif [ "$opt" = "slackpkg_update_gpg" ]; then
                echo done
slackpkg update gpg
           sh /home/tom/Desktop/prova.sh

elif [ "$opt" = "slackpkg_update" ]; then
                echo done
slackpkg update
           sh /home/tom/Desktop/prova.sh


               elif [ "$opt" = "upgrade" ]; then
                echo done
slackpkg upgrade-all
           sh /home/tom/Desktop/prova.sh
               fi
           done
exit
se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...

trigg

questo è quello corretto

#!/bin/bash
while true
do
PS3='Please enter your choice: '
options=("slackpkg mirrors" "slackpkgplus.conf" "update gpg" "update" "upgrade-all" "Quit")
select opt in "${options[@]}"
do
     case $opt in
         "slackpkg mirrors")
             echo "slackpkg mirrors"
nano /etc/slackpkg/mirrors
echo "eseguito"
             break
             ;;
         "slackpkgplus.conf")
             echo "slackpkgplus.conf"
nano /etc/slackpkg/slackpkgplus.conf
echo "eseguito"
             break
             ;;
         "update gpg")
             echo "slackpkg update gpg"
slackpkg update gpg
echo "eseguito"
             break
             ;;
"update")
             echo "slackpkg update"
slackpkg update
echo "eseguito"
             break
             ;;
"upgrade-all")
             echo "slackpkg upgrade-all"
slackpkg upgrade-all
echo "eseguito"
             break
             ;;
         "Quit")
             echo "Thank You..."                 
             exit
             ;;
         *) echo invalid option;;
     esac
done
done


non richiama nulla ,
ho preferito lasciare la scelta di opzione senza dover fare update-gpg , update , upgrade-all in automatico

:entu:
se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...

nessuno

Dopo li provo, adesso beccati un regaluccio. Guarda le immaglini:








Lanciare gli script col destro del mouse è una pacchia. ;D

trigg

preferisco la scorciatoia

exo-open --launch TerminalEmulator sudo sh /home/tom/p.sh
se hai paura di far domande...
                                             ...hai paura d'imparare
     ... non si finisce mai d'imparare...