PERLE dalle GWN e non

Contenuti:

1.Convertire dati con units

Il trucco di questa settimana vi mostra come usare il comando units che è una nifty utility che converte quantità tra scale (per esempio metri in piedi o chilogrammi in pounds). Pur non essendo un tool essenziale, può decisamente esser utile a volte.

Esempio 1: Ottenere units


# emerge app-sci/units
Ci sono due modi per usare il comando units, interattivamente e non interattivamente. Per usarlo interattivamente, date semplicemente il comando units.

Esempio 2: Usare units interattivamente


$ units
1948 units, 71 prefixes, 28 functions

You have: 1 meter
You want: feet
        * 3.2808399
        / 0.3048
You have: 3 kilograms
You want: pounds
        * 6.6138679
        / 0.15119746
  

Il primo numero (preceduto da *) indica la conversione come avete specificato (i.e. ci sono circa 3.28 piedi in metri). Il secondo numero è la conversione nella direzione opposta (i.e. ci sono circa 0.3 metri in piedi).

Per usare units in modo non interattivo, seguito dall'espressione originale e dalla nuova espressione.

Esempio 3: Usare units non interattivamente


// How many pecks are in a bushel?
% units '1 bushel' 'peck'
        * 4
        / 0.25

// How many miles per hour are in a knot?
% units '1 knot' 'mph'
        * 1.1507794
        / 0.86897624

Nota: 'knot' è un miglio per ora nautico.

Guardate la pagina man (man units) per maggiori informazioni sul comando units.

2.Modificare i flag USE con ufed e euse

Il trucco di questa settimana introduce due editor x i flag USE; ufed (un'utility basata sulle ncurses) e euse (un'utility a riga di comando). Tramite questi due programmmi i giorni che aprivamo /etc/make.conf e modificamo le USE manualmente sono finiti.

Mentre euse è disponibile in Portage, ufed è un pacchettoi separato che necessita di essere installato.

Esempio 4: Ottenere ufed


# emerge app-portage/ufed

Usare ufed è veramente semplice. Assicuratevi di essere root e semplicemente digitate ufed. Si avvierà un'interfaccia basata sulle ncurses per tutti i flag USE e e potrete selezionarli come volete. Una volta fatto, selezionate Save e avrete finito.

Mentre ufed fornisce un menu completo per modificare i flag USE, euse è pratico quando dovete aggiungere o rimuovere velocemente un flag USE. Per aggiungere un flag USE , usate euse -E flag. Per rimuovere un flag, usate euse -D flag. Per la lista dei vostri flag USE, date euse -i.

Esempio 5: Usare euse


// Esempio: aggiungere mozilla come flag USE
# euse -E mozilla

// Example: Rimuovere mozilla come flag USE
# euse -D mozilla
  

Per maggiori informazioni su questi due programmi, guardate man 1 euse e man 8 ufed o il prontuario dei comandi.

3.Usare SSH comandi remoti

Il trucco di questa settimana vi mostra un'uso poco comune di SSH. Molte persone usano SSH per eseguire il login su un server o una box remota. Comunque, potete anche usare SSH per dare comandi remoti a un server aprire una shell di login.

Nota: Per usare SSH senza inserirela password tutte le volte, usate Keychain.

Per dare comandi tramite SSH, semplicemnte digitate il comando dopo le normali informazioni di login di SSH (esempio ssh user@host comando). Il seguente esempio vi mostra come vedere i file di log su un server web remoto.

Esempio 6: Guardare gli access log di Apache2


% ssh david@www.example.com tail /var/log/apache2/access_log

In alternativa, potete cambiare la password tramite SSH (sebbene sia meglio usare l'autenticazione via chiave con SSH invece delle password).

Esempio 7: Cambiare password da remoto


% ssh david@example.com passwd
(current) UNIX password: password
New UNIX password: new_password
Retype new UNIX password: new_password
Changing password for david

Questo dovrebbe farvi eseguire comandi remoti con SSH. Gardate la pagina man di SSH per maggiori opzioni.

4.Un'introduzione a sudo

Il trucco di questa settimana dimostra alcuni usi comuni di sudo che permette ai normali utenti di eseguire comandi con privilegi elevati. Questa settimana vediamo come usare sudo per vedere i file di log e eseguire una amministrazione di base da utente.

Esempio 8: Installare sudo


# emerge app-admin/sudo

La prima cosa da fare è configurare il file /etc/sudoers che controlla tutti i privilegi gestiti da sudo. Invece di modificare il file direttamente , usate il comando visudo. Per una lista completa delle opzioni di configurazione, guardate la pagina man di sudoers (man 5 sudoers).

Questo file è un esempio e una dimostrazione di come creare comandi e user aliases.

Esempio 9: /etc/sudoers


# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# User alias specification
User_Alias      HELPDESK  = jfox, helpdesk
User_Alias      SYSADMINS = david, jc

# Cmnd alias specification
# Create aliases for all commands used in viewing files
Cmnd_Alias      VIEW = /bin/cat, /bin/grep, /bin/more, /usr/bin/head, \
                       /usr/bin/tail, /usr/bin/less 

# commands for user administration
Cmnd_Alias  USERADMIN = /usr/sbin/useradd, /usr/sbin/userdel, \
                        /usr/sbin/usermod

# User privilege specification
# Allow SYSADMINS to run any command as any user
SYSADMINS   ALL = ALL

# Allow  users in HELPDESK to use the user administration commands and
# to use the VIEW commands without a password
HELPDESK    ALL = USERADMIN, NOPASSWD:VIEW

# Allow users in the %users group to use the VIEW commands
%users      ALL = VIEW
  

Ora che il vostro file /etc/sudoers è stato creato, potete eseguire comandi usando sudo comando.

Esempio 10: Esempi


// Guardare /var/log/critical/current come utente helpdesk
helpdesk@mybox% sudo tail /var/log/critical/current

// Aggiungere un nuovo utente come utente jfox
jfox@mybox% sudo useradd marcus
Password: password for jfox
  

Anche se questo potrebbe non significare nulla, dovrebbe introdurvi ad alcune delle possibilità di sudo. Per maggiori esempi ed opzioni guardate le pagine man o la pagina web a http://www.courtesan.com/sudo/.

5.Usare netstat

Il trucco di questa settimana dimostra alcune utili applicazioni del comando netstat. Netstat è un comando usato per stampare una lista di connessioni, tabelle di routing, e altre statistiche relative al networking.

Digitando netstat visualizzerà una lunga lista di informazioni che sono solitamente più di quelle che volevate. Il trucco per mantenere le informazioni utili è di conoscere quello che state cercando e come dire a netstat d visualizzare solo queste informazioni.

Per esempio, se volete vedere soltanto le connessioni TCP, usate netstat --tcp. Questo mostrerà una lista delle connessioni TCP da e verso la vostra macchina. Il seguente esempio mostra le connessioni della nostra macchina sulle porte 993 (imaps), 143 (imap), 110 (pop3), 25 (smtp), e 22 (ssh). Esso mostra a una connessione dalla nostra macchina su una macchina remota sulla porta 389 (ldap).

Nota: Per velocizzare il tutto potete usare l'opzione --numeric per evitare la risoluzione dei nomi e visualizzare solo l'IP.

Esempio 11: netstat --tcp


% netstat --tcp --numeric
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 192.168.128.152:993     192.168.128.120:3853    ESTABLISHED 
tcp        0      0 192.168.128.152:143     192.168.128.194:3076    ESTABLISHED 
tcp        0      0 192.168.128.152:45771   192.168.128.34:389      TIME_WAIT   
tcp        0      0 192.168.128.152:110     192.168.33.123:3521     TIME_WAIT   
tcp        0      0 192.168.128.152:25      192.168.231.27:44221    TIME_WAIT   
tcp        0    256 192.168.128.152:22      192.168.128.78:47258    ESTABLISHED   

Se volete vedere su quali porte (TCP) la vostra macchina sta ascoltando, usate netstat --tcp --listening. Un'altro utile flag da aggiungere a questo è --programs che indica quali processi stanno ascoltando sulla porta specificata . Il seguente esempio mostra una macchina che sta ascoltando sulle porte 80 (www), 443 (https), 22 (ssh), e 25 (smtp);

Esempio 12: netstat --tcp --listening --programs


# sudo netstat --tcp --listening --programs
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address   State     PID/Program name
tcp        0      0 *:www           *:*               LISTEN    28826/apache2
tcp        0      0 *:ssh           *:*               LISTEN    26604/sshd
tcp        0      0 *:smtp          *:*               LISTEN    6836/
tcp        0      0 *:https         *:*               LISTEN    28826/apache2 
  

Nota: Usando --all visualizza sia le porte in ascolto che le connessioni.

Il prossimo esempio usa netstat --route per visualizzare la tabella di routing. per molte persone, questo visualizza un' IP e l'indirizzo del gateway ma se avete più di un'interfaccia o avete IP multipli assegnati a un'interfaccia , questo comando può aiutarvi a risolvere i problemi di routing .

Esempio 13: netstat --route


% netstat --route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    1      0        0 eth0
  

L'ultimo esempio di netstat usa il flag --statistics per vislualizzare le statistiche di rete. Usando questo flag da solo visualizza le statistice di tutti gli IP, e delle connessioni TCP, UDP,e ICMP. Per visualizzare solo alcune informazioni di base. Per esempio, l'output di --raw è visualizzato qui . Combinato con il comando uptime, può essere usato per avere un'idea di queanto traffico la vostra macchina gestisce in un giorno.

Esempio 14: netstat --statistics --route


% netstat --statistics --raw
Ip:
    620516640 total packets received
    0 forwarded
    0 incoming packets discarded
    615716262 incoming packets delivered
    699594782 requests sent out
    5 fragments dropped after timeout
    3463529 reassemblies required
    636730 packets reassembled ok
    5 packet reassembles failed
    310797 fragments created
// ICMP statistics truncated
  

Nota: Per prolissità, sono stati dati i nomi lunghi dei vari flag. Molti possono essere abbreviati per evitare un'eccessiva digitazione (per esempio netstat -tn, netstat -tlp, netstat -r, and netstat -sw).

netstat è un'utility comune, speriamo che questo vi abbia mostrato alcune differenti vie per l'uso del comando. Per maggiori informazioni guardate man 8 netstat.

6.Usare qpkg

Il trucco di questa settimana vi mostra alcuni usi di base di "query package" (qpkg) che vi permette di ottenere informazioni sui pacchetti installati e disinstallati sul vostro sistema. Può essere usato per trovare quale pacchetto possiede un determinato file, per trovare pacchetti duplicati, ottenere la lista dei file installati da un pacchetto, e molto altro.

Per ottenere qpkg avete bisogno di installare app-portage/gentoolkit.

Esempio 15: Installare gentoolkit


# emerge app-portage/gentoolkit

Ora che avete installato qpkg, potete iniziare ad usarlo per esaminare il vostro sistema. Il primo esempio è di vedere quale pacchetto possiede un determinato file. Questo si fa con l'opzione --find-file (o in alternativa --find-pattern).

Nota: Per avere una lista completa dei pacchetti e la versione installata sulla vostra macchina usate il comando qpkg --installed --verbose.

Esempio 16: Trovare il pacchetto che possiede un file


// Quale pacchetto possiede /etc/crontab?
% qpkg --find-file /etc/crontab
sys-apps/vcron *

// Che versione di vcron? (--verbose)
% qpkg --find-file --verbose /etc/crontab
sys-apps/vcron-3.0.1-r1 *

// Dov'è l'ebuild per questo file? (--verbose --verbose)
% qpkg --find-file --verbose --verbose /etc/crontab
   /var/db/pkg/sys-apps/vcron-3.0.1-r1/vcron-3.0.1-r1.ebuild
sys-apps/vcron-3.0.1-r1 *
  

Per avere la lista di tutti i file che installa un pacchetto, usate l'opzione --list.

Esempio 17: Lista di tutti i file installati da un pacchetto


% qpkg --list units
// La directory viene omessa per brevità
app-sci/units-1.74 *
CONTENTS:
/usr/bin/units
/usr/share/doc/units-1.74
/usr/share/doc/units-1.74/README.gz
/usr/share/doc/units-1.74/NEWS.gz
/usr/share/doc/units-1.74/INSTALL.gz
/usr/share/doc/units-1.74/COPYING.gz
/usr/share/doc/units-1.74/ChangeLog.gz
/usr/share/man/man1/units.1.gz
/usr/share/info/units.info.gz
/usr/share/units/units.dat
  

L'ultimo esempio vi mostra come trovare quale pacchetto dipende da uno specifico pacchetto usando --query-deps.

Esempio 18: Trovare le dipendenze


% qpkg --installed --query-deps mozilla
net-www/mozilla-1.4-r3 *
DEPENDED ON BY:
        net-mail/evolution-1.4.3
        net-www/galeon-1.3.9

Nota: Non specificare --installed a causa del fatto che qpkg guarda l'intero Portage tree che probabilmente non è quello che volete.

Questo vi mostra come iniziare con qpkg. Per maggiori opzioni guardate qpkg --help o man 1 qpkg o il prontuario dei comandi.

7.Introducendo il flag --

Il trucco di questa settimana introduce il flag --. Questo flag è supportato da molte utility ma non è sempre documentato nellle pagine man . Comunque, esso può essere veramente utile, specialmente quando vi rapportate con filename malformati.

Nota: Molti programmi che fanno uso di --option supportano anche il flag -- da quando è una feature standard di GNU getopt().

Il flag -- forza tutto quello che viene passato dopo di lui ad essere un'argomento del comando. Questo può essere estremamente utile quando abbiamo a che fare con nomi di file che inizano con - che normalmente indicano un'opzione o un flag passato al comando.

Per esempio, assumete che per qualche ragione, c'è un file chiamato -file che deve essere cancellato. Normalmente vorrete usare il comando rm per cancellare un file, ma questo non funziona se il nome del file in questione inizia con -. Ma usando il flag -- , noi forziamo rm a riconsocere -file come un argomento e non come un'opzione.

Esempio 19: Usare il flag --


// Provare ad usare rm ritorna un'errore perchè rm prova a
// processare tutte le lettere come opzioni (f,i,l,e). Fallisce
// su 'l' perchè non è opzione valida per rm.

% ls
-file

% rm -file
rm: invalid option -- l
Try `rm --help' for more information

% rm -- -file
% ls
 
// -file was successfully removed

Nota: Per maggiori informazioni, guardate man 3 getopt.

8.Usare Gentoo Log Parser (genlop)

Il trucco di questa settimana introduce Gentoo Log Parser (genlop), che è un'utility per creare utili reports dal vostro file /var/log/emerge.log. Per usare genlop, avete bisogno di installarlo usando il seguente comando: emerge app-portage/genlop.

Ora possiamo usare genlop per vedere la history di emerge per un pacchetto (o per il vostro intero sistema), o per calcolare il tempo di merge per vari pacchetti. Il seguente esempio mostra history dei merge di Mozilla.

Esempio 20: Usare genlop


% genlop -t mozilla

 * net-www/mozilla

     Merged   at Fri Jan  3 19:29:16 2003    (mozilla-1.2.1-r4)
       merge time: 1 hour, 35 minutes and 6 seconds.

     Merged   at Fri Mar 21 20:59:45 2003    (mozilla-1.2.1-r5)
       merge time: 2 hours, 53 minutes and 4 seconds.

     Merged   at Thu Jun 12 15:55:58 2003    (mozilla-1.3-r1)
       merge time: 3 hours, 28 minutes and 37 seconds.

     Merged   at Wed Jun 25 16:29:38 2003    (mozilla-1.3-r2)
       merge time: 2 hours, 43 minutes and 47 seconds.

     Merged   at Wed Jul 23 18:36:58 2003    (mozilla-1.4)
       merge time: 2 hours, 2 minutes and 24 seconds.

     Merged   at Wed Oct  1 14:49:31 2003    (mozilla-1.4-r3)
       merge time: 3 hours, 20 minutes and 38 seconds.

 merged totally 6 times in 16 hours, 3 minutes and 36 seconds.
 average merge time: 2 hours, 40 minutes and 36 seconds.
  

Nota: Digitate genlop per vedere le altre opzioni disponibili o leggete il prontuario dei comandi.

9.Visualizzare i Runlevels

l trucco di questa settimana vi mostra come vedere quale servizio è in un certo runlevel. Gentoo Linux ha quattro runlevel principali: boot, default, nonetwork, single. Per manipolarli usate il comando /sbin/rc-update. Sebbene rc-update add e rc-update del sono menzionati in Gentoo Docs, potreste voler sapere come vedere in quale runlevel è un determinato servizio. Potete farlo con il comando rc-update show.

Esempio 21: rc-update show


// Mostra tutti i servizi e i loro runlevel
# rc-update show
             apache2 |      default                  
                 atd |      default
         authdaemond |                               
            bootmisc | boot                          
             checkfs | boot                          
           checkroot | boot                          
... altre righe sono troncate per brevità ...
 

Nota: Potete anche guardare in /etc/runlevels. Ogni runlevel è in una directoy separata e in queste directory ci sono i symlink ai vari servizi in /etc/init.d.

10.Programmazione di eventi con "at"

Il trucco di questa settimana vi mostra come programmare gli eventi in Gentoo Linux con il comando at. Mentre cron è l'utility di programmazione di eventi più comune su Gentoo Linux, at è utile per la programmazione di eventi da eseguire una sola volta, o semplicemente per configurare un task da eseguire a una certa data/ora in futuro.

Esempio 22: Ottenere at


# emerge sys-apps/at

Adesso che at è installato, il daemon deve essere avviato in modo che gli eventi programmati possano essere eseguiti.

Esempio 23: Avviare atd


# /etc/init.d/atd start
 * Starting atd...                                                        [ ok ]

Ora potete iniziare ad usare at.

Nota: Per sicurezza avrete bisogno di modificare /etc/at/at.allow e /etc/at/at.deny. Guardate la pagina man per maggiori informazioni su come rendere sicuro at.

Esempio 24: Usare at


// Configurare XMMS per eseguire wakeup.ogg alle 6am di domani mattina
% at 6am tomorrow
at> xmms ~/music/wakeup.ogg
at> <Ctrl-D>
job 6 at 2003-10-31 06:00

// Alle 11:30 pm di oggi, avvia un'installazione di mozilla
% at 11:30 pm today
at> emerge update mozilla
at> <Ctrl-D>
job 7 at 2003-10-30 23:30
  

Ora ci sono due eventi programmati che 'at' eseguirà all'ora specificata . Per vedere la lista degli eventi che avete programmato, usate atq. Se decidete che non volete eseguire un certo evento, potete usare il comando atrm.

Esempio 25: Rimuovere un evento programmato precedentemente


// Rimuovere l'evento 'emerge' che avevamo programmato per le 11:30pm
% atq
6       2003-10-31 06:00 a david
7       2003-10-30 23:30 a david
% atrm 7
% atq
6       2003-10-31 06:00 a david

Per maggiori informazioni man 1 at.

11.Controllo ortografico con Aspell

Il trucco di questa settimana vi mostra come eseguire il controllo ortografico su un file con aspell. Anche se aspell ha i suoi dizionari, vi permette anche di creare e mantenere un dizionario personale se volete. Ci sono molti usi di aspell, ma questa settimana ci occupiamo di mostrarvi il controllo ortografico interattivo di un file.

Per installare aspell, dovete installare il pacchetto app-text/aspell e un dizionario con cui volete che aspell lavori (per esempio app-dicts/aspell-en). Per una lista dei dizionari disponibili, usate emerge search 'aspell-'.

Esempio 26: Installare aspell e il dizionario inglese


# emerge app-text/aspell
# emerge app-dicts/aspell-en

Ora che aspell è installato, potete usarlo per controllare un documento. Iniziate digitando aspell check file, dove file è il file che volete modificare. Se ci sono potenziali parole sbagliate, vedrete il file e una finestra di opzioni in fondo al vostro terminale . Nella fnestra di opzioni ci sono le sostituzioni suggerite e alcune opzioni come ignora, sostituisci, aggiugi, etc.

Esempio 27: Usare aspell


% aspell check tips-20031110.xml
// file contents skipped...
secthead

1) sect head                            6) scythed
2) sect-head                            7) swathed
3) scathed                              8) Scheat
4) seethed                              9) soothed
5) sketched                             0) secured
i) Ignore                               I) Ignore all
r) Replace                              R) Replace all
a) Add                                  l) Add Lower
b) Abort                                x) Exit
? a
// secthead è stato aggiunto al mio dizionario personale

--

Engliash

1) English                              6) Anglia's
2) Englisher                            7) Anglia
3) English's                            8) Inglis
4) Englished                            9) Anguish
5) Englishes                            0) Unleash
i) Ignore                               I) Ignore all
r) Replace                              R) Replace all
a) Add                                  l) Add Lower
b) Abort                                x) Exit

? 1
// La parola sbagliata è stata sostituita con l'opzione 1) English
  

Quando Aspell finisce, vedrete il file file.bak creato come copia di backup del vostro documento. Per vedere il vostro dizionario personale, usate il comando aspell dump personal. Per maggiori informazioni guardate, http://aspell.sourceforge.net o usate aspell --help.



Ultimo aggiorn.:
7 Gennaio 2004
Sommario: Questo doc contiene una collezione di perle prese dalle varie GWN di Gentoo, con alcune aggiunte.
- 2002 Gentoo.it - Domande, commenti e/o correzioni? Email gentoo-dev@gentoo.it.