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.


Ubuntu, modificare, il tempo di scansione del disco all’avvio

Scritto da yuri in sistema Linux, siste... | 05.04.2008 - 12:18

Per poter cambiare il tempo, o far si che avvenga la scansione dell’hard disc all’avvio utilizzeremo tune2fs per le partizioni ext2 o tune3fs per ext3.
Il comando da dare al terminale, è il seguente:
sudo tune2fs -c 40 /dev/sda1
Dove, sudo tune2fs, è ben chiaro, che è stato avviato il programma tune2fs da user, -c 40 fa si che la scansione avvenga ogni 40 volte, e /dev/sda1 è la prima partizione (disco scsi, controllate la vostra, probabilmente, sarà hda1), ecco le man di tune2fs, tune3fs è l’identica cosa.
In più, ho trovato un programmino che a quanto ho capito, datogli l’orario, gli si può assegnare, l’intervallo di tempo di scansione (anche a pc acceso(,  penso si possa settare anche gl’intervalli di scansione all’avvio, qui c’è bonager (occorre registrarsi al forum per scaricarlo), non uso ubuntu, non l’ho provato, fatemi sapere.


Configurare una connessione ethernet su slackware

Scritto da yuri in sistema Linux, siste... | 26.03.2008 - 10:30

Se durante l’installazione, non l’avete fatto, o l’avete fatto in maniera errata, per configurare una connessione, (qui mi riferisco ad una connessione ethernet), sarà sufficiente avviare l’utilità netconfig, da riga si comando come root, o modificare due file .
Il file, dove risiede la configurazione per l’accesso ad internet è /etc/rc.d/rc.inet1.conf.
Per la nostra prima connessione ethernet (la prima scheda di rete), dobbiamo portarci a questo punto:

# Config information for eth0:
IPADDR[0]=”"
NETMASK[0]=”"
USE_DHCP[0]=”"
DHCP_HOSTNAME[0]=”"

dove in IPADDR, va inserito il vostro indirizzo ip, qualora sia statico, NETMASK, sta per il vostro netmask, solitamente 255.255.255.0, USE_DHCP, scrivete yes de avete l’ip dinamico, oppure potete lasciarlo in bianco, DHCP_HOSTNAME infine, se si usa la risoluzione dell’indirizzi (ip dinamico), va “riempito”, con l’idirizzo ip del server dhcp, oppure l’indirizzo web fornitoci.
Questo un esempio, con ip fisso:

# Config information for eth0:
IPADDR[0]=”10.7.2.71″
NETMASK[0]=”255.255.255.0″
USE_DHCP[0]=”"
DHCP_HOSTNAME[0]=”"

qui un esempio con un router:

# Config information for eth0:
IPADDR[0]=”192.168.0.2″
NETMASK[0]=”255.255.255.0″
USE_DHCP[0]=”yes”
DHCP_HOSTNAME[0]=”192.168.0.1″ (ruter)

Un po di righe avanti, dobbiamo inserire il gateway, solamente qualora non usassimo il dhcp, si presenta in questo modo:

# Default gateway IP address:
GATEWAY=”10.7.2.1″ (gateway esempio, associato all’esempio precedente)

Il primo file è stato completato, ora non dobbiamo far altro, che impostare il/i DNS, per fare in modo che vengano risolti automaticamente l’indirizzi ip. La configurazione dei DNS risiede nel file /etc/resolv.conf, ecco ecco l’esempio:

nameserver 10.0.0.6
search nome_provider.com

dove nameserver sarà l’indirizzo ip del vostro DNS, se non lo sapete, potete chiamare il centro d’assistenza della ditta che vi fornisce rete, l’opzione search, serve per creare nomi di dominio alternativi al primo (tin.it/tiscali.it ecc.).


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


Fare lo scandisk su linux (fsck)

Scritto da yuri in sistema Linux, siste... | 06.03.2008 - 10:26

Non tutti sanno, che su linux, la frammentazione, con il suo filesystem, la tiene sempre al massimo al 5%, dunque non c’è bisogno di deframmentazione, mentre gli errori nel disco possono esserci, è un fatto indipendente da linux, perché, il disco fisso, è un componente meccanico. Per cercare errori nel filesystem, si userà il comando fsck.ext3, per filesystem ext3, che lo adotta la maggior parte delle distribuzioni, visto che è il filesystem di base ormai, che ha soppiantato ext2.
la sintassi che adotteremo è la seguente:
fsck.ext3 -c /dev/hdax
Dove, fsck.ext3 è il comando, -c è l’opzione che ci permette di controllare i blocchi difettosi, /dev/hdax è il disco d’analizzare (sostituire la x con il numero appropriato). Cosa molto importane:
se viene chiesto, non utilizzare lettura e scrittura, ma solo lettura, lettura e scrittura, per non aver problemi, si fa a filesystem smontato. Per ulteriori opzioni da utilizzare con il comando fsck.ext3, vedere le pagine di man, oppure QUI.


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


Accedere a linux con password di root dimenticata

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

Può capitare, di dimenticarsi la password di root, se succede, non è tutto perduto, possiamo continuare ad accedere al nostro sistema,  per rimediare useremo una distro live.

Linux, archivia le password, nei file /etc/passwd ed /etc/shadow, dove sono presenti  i dati degl’utenti, come nome utente, cartella home, shell predefinita e password codificate. Adesso entrati, con la nostra distribuzione live, apriamo con l’editor (kwrite su desktop kde),  il file /etc/passwd, individuiamo la riga root:x:0:0::/root:/bin/bash , e cancelliamo la x, adesso si apre, sempre con l’editor, il file  /etc/shadow, e cancelliamo la riga/stringa simile a questa root:$1$qrp1O6wU$k3aGGlQ8F3ZQ.pAiYoT/F/:13704:0::::: .

Adesso possiamo, accedere al nostro sistema, e non ci verrà chiesta la password, potremo poi crearne una nuova.


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

Due schede di rete, con una scheda di rete

Scritto da yuri in sistema Linux, siste... | 22.02.2008 - 15:21

Titolo sconcertante, contraddittorio, eppure  Linux, offre la possibilità, senza software aggiuntivi, di creare la copia virtuale di alcune periferiche.

Per quanto riguarda la scheda di rete, possiamo, crearne una coppia virtuale, di quella realmente installata sul nostro sistema, così facendo abbiamo la possibilità di utilizzare il nostro computer, con 2 ip differenti, propio come 2 host singoli, perciò potremo anche utilizzare un computer come router…

supponiamo di aver configurato la scheda di rete così:

ifconfig eth0 10.7.3.61  netmask 255.255.255.0 up

e così aggiungiamo una scheda di rete virtuale:

ifconfig eth0:1 192.168.54.5 netmask 255.255.255.0 up

In questo modo, possiamo, mantenere la comunicazione con tutti i pc della rete 10.7.3.0, e con la seconda rete, mantenendo un solo dispositivo di rete.


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 ).


Pagina successiva »