Linux, strutture di controllo, if, then, else

Scritto da yuri in sistema Linux, ... | 04.05.2008 - 08:04

In ambiente linux, ed anche in programmazione, si usano strutture di controllo, se si deve far compiere una determinata azione, quando, il programma deve fare una scelta, ed ha più possibilità di scelta, o, se c’è una condizione e la deve fare.

Le principali strutture di controllo, che sono presenti in unix/Linux e in linguaggi di programmazione, come il C, sono if, then ed else (se, allora o altrimenti, tradotto in italiano), ecco come funzionano, spiegate molto semplicemente:

$ cat struct.sh
#! /bin/bash
if [ "$OSTYPE" == "XP" ]
then
echo “non male”
else
echo “molto meglio”
fi
exit 0

Praticamente, se abbiamo linux, ci viene detto “bella decisione”, altrimenti “hai un sistema insicuro”.
Per approffondire, consiglio la guida della programmazione in bash (versione, non avanzata) di pluto.


Diventare root senza rifare login

Scritto da yuri in sistema Linux, siste... | 25.03.2008 - 12:00

É risaputo, che per motivi di sicurezza, o se abbiamo una multiutenza, è consigliabile effettuare il login, come utenti comuni non da root.
Se, noi volessimo, eseguire, una delle tante operazioni, che richiedono i privilegi di root, senza avviare una nuova sessione, dovremo digitare il comando su (switch user), poi verrà chiesta la password d’amministratore.
Per caricare la shell, con l’ambiente root completo, dovremo, però aggiungere l’opzione - (su -).


La pipe linux

Scritto da yuri in sistema Linux, siste... | 18.03.2008 - 09:34

La pipe, su linux, è la trasformazione, dell’output di un comando, che diventa l’input di un altro, praticamente, consente di eseguire due comandi in un unica volta, dando ala fine il risultato, come un operazione matematica.
La/il pipe, si riconosce, grazie alla barra verticale ( | ), è utile, per concatenare comandi di shell, file e programmi, o passare a shell, comandi presenti in file.

comando: comando1 | comando2 = risultato di comando1 passato ed eseguito da comando2

per esempio per trovare un processo singolo, possiamo usare, lo strumento ps, e lo strumento grep.

comando: ps ax | grep firefox = mostra il pid del processo di firefox

Per approfondimenti, consiglio la guida avanzata di scriptin bash di pluto


Com’è formato uno script di shell

Scritto da yuri in sistema Linux, siste... | 27.02.2008 - 12:04

Gli script di shell, sono file di testo puro, ASCII, la prima riga dello script, contiene lo sha-bang (#!) , che è formato da due bit, subito dopo, la PATH del programma, che dovrà interpetrare lo script, lo script va concluso con exit.

#! /bin/bash oppure

#! /bin/chs ecc.

faccio un banale esempio, questo potrebbe essere uno script che se messo, nella cartella dove scompattato un pacchetto ce lo installa:

#! /bin/bash
echo “inizio installazione”
sh ./configure.sh
sh ./make.sh
make_install.sh
echo “installazione eseguita”
exit

Ovviamente, bisogna avere i permessi per i comandi inseriti nello script, e le cartelle che lo contengono, questo solo un script d’esempio, infatti, se ci fossero problemi di dipendenze, non ci vengono segnalate. C’è la possibilità di concatenare tutti i comandi offerti da linux in uno script, vedere la guida introduttiva qui sotto.

una guida, per lo scripting bash la trovate qui 

script utili per la mia distro preferita (slackware) li trovate  qui


Salvare le pagine di man

Scritto da yuri in sistema Linux, siste... | 24.02.2008 - 14:48

Ormai, quasi tutti i comandi Linux, sono descritti nella guida della accessibile , dal menu k, o gnome,  se non ci fosse descritto, un comando particolarmente difficile, o che usiamo spesso possiamo convertirlo in file, e rileggercelo e studiarcelo comodamente.

Prediamo  per esempio, il comando iptables.

per convertire il man di iptables in un normale file di testo dobbiamo digitare:

  • man iptables | col -b > man_iptables

per convertire il man in pdf, dobbiamo prima convertirle in post script così:

  • man -t iptables > man_iptables.ps

adesso, dobbiamo assicurarci di avere installato, l’eseguibile ps2pdf, ora siamo pronti a convertire la nostra pagina di man di iptables così:

  • ps2pdf man_iptables.ps man_iptables.pdf

Gestire i processi su Linux

Scritto da yuri in sistema Linux, siste... | 19.02.2008 - 09:11

Oltre che cosa utile, per poter snellire il sistema, e per bloccare un applicazione se si blocca, o per sola curiosità ecco i comandi principali, per gestire i processi in ambiente *NIX.

I comandi di cui ci serviamo, sono principalmente tre, ps, top e kill.

Ps

ps, fa un istantanea, dei processi in esecuzione, ogni utente, può uccidere solamente i suoi processi, per vedere tutti i processi in esecuzione, è necessario digitare ps -a, un idea potete vederla da questo screenshot.

top

Top, funziona allo stesso modo di ps, solamente è costantemente aggiornato (se apriamo un applicazione, mentre la shell è in funzione, ce la segna), prendere come riferimento visuale, lo screenshot precedente.

Kill

Kill, è il più utile, ci permette di “uccidere”, un processo/applicazione, questa non rispondesse più dovremo semplicemente digitare kill e il PID del processo o process identifier (il kernel, tiene traccia di ciascun processo secondo questo numero identificativo), guardando il piccolo screenshot, se volessimo terminare firefox, è sufficente digitare kill 3257.

questo, per quanto riguarda la modifica da terminale, sono presenti anche tool grafici, incorporati o da incorporare nel desktop manager, per KDE, abbiamo incorporato  KDE System Guard, che qui vediamo si può inserire anche in taskbar.


Consentire l’esecuzione, modificando la PATH

Scritto da yuri in sistema Linux, siste... | 11.02.2008 - 08:08

Quando andiamo ad eseguire un comando/file eseguibile/programmi, la shell lo cercherà nelle directory predefinite nella nostra variabile PATH, fa in modo che, in qualsiasi directry ci troviamo, senza digitare il percorso assoluto, cercherà il comando automaticamente in quelle directory.

Per vedere le variabili PATH assegnate al nostro utente digitare da console echo $PATH (dipende dal tipo di shell se PATH è maiuscolo o minuscolo) , verrà visualizzato a monitor una cosa di questo tipo:

PATH=/bin:/usr/bin:/usr/local/bin

Le directory, in cui la nostra shell, cercherà gli script/file eseguibili/programmi, sono divise da : (due punti), nell’esempio noi avremo la nostra PATH settata per /bin, /usr/bin e /usr/local/bin

Se noi però, volessimo eseguire dei nostri script di prova, presenti nella nostra home, si può modificare la nostra variabile, è consigliabile modificarla a livello locale (solo per un utente), che a livello globale (per tutti), perciò, modificheremo la variabile da utenti se consentito, o modificheremo il file ~/.bash_profile.

Per consentire l’esecuzione dei nostri script presenti nella nostra home, nella cartella prova dovremo digitare:

export PATH=$PATH:/home/nome utente/prova

Questo aggiungerà alla nostra PATH, anche la nostra directory prova.

è molto comodo, in certi casi, consentire anche comandi privilegiati, agli utenti, per far questo dovremo modificare i permessi da root. Per far ciò, però dovremo anche copiare il file eseguibile in una directory in cui la nostra PATH può agire, esempio: se noi volessimo spegnere il computer da user, oltre a modificarne il permesso all’eseguibile ( chmod 4755 /sbin/halt ) , andremo anche a copiare l’eseguibile dove possiamo “trovarlo” ( ln -s /sbin/halt /bin/halt ).