26 luglio 2010

Python Piccoli Tips di Sistema Gnu/Linux

Colpa del grande caldo che non si sopporta dalle mie parti, e il rischio concreto di friggere qualche componente hardware(oltre al bagno di sudore che si fà inevitabilmente stando faccia a faccia con un monitor), ho deciso di mettere in ferie Other to Think.

Anche se ad essere sincero fino in fondo, ne approfitto, nel modo più sereno e rilassato possibile, per fare delle scelte(anche importanti) riguardanti il futuro della mia vita terrestre.

Ci rivedremo prima di settembre con qualche interessante novità Buone Vacanze a Tutti.

Ritornando ai nostri Tips, sono piccole chiamate di moduli per l' utente locale:

mediante il modulo pwd possiamo tramite il parametro name in getpwnam recuperare delle voci dal database delle password dell' utente che sono : nome, password, ID utente-gruppo, nome completo, home-directory e la shell.

In [5]: import pwd

In [6]: pwd.getpwnam('archie')
Out[6]: pwd.struct_passwd(pw_name='archie', pw_passwd='x', pw_uid=500, pw_gid=500, pw_gecos='archie dog', pw_dir='/home/archie', pw_shell='/bin/bash')


In [8]: pwd.getpwuid(500)
Out[8]: pwd.struct_passwd(pw_name='archie', pw_passwd='x', pw_uid=500, pw_gid=500, pw_gecos='archie dog', pw_dir='/home/archie', pw_shell='/bin/bash')

il modulo resource invece e utile per leggere l'utilizzo delle risorse dei processi riguardo l' utente.

qui vediamo resource con il parametro RUSAGE_SELF, che richiede per l' utente informazioni relative al solo processo corrente.


In [9]: import resource
In [11]: resource.getrusage(resource.RUSAGE_SELF)
Out[11]: resource.struct_rusage(ru_utime=0.45393, ru_stime=0.13397899999999999, ru_maxrss=12604, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=3564, ru_majflt=31, ru_nswap=0, ru_inblock=13576, ru_oublock=184, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=710, ru_nivcsw=50)


mentre quest' altro parametro RUSAGE_CHILDREN richiede informazioni sui processi figli dell' utente.

In [13]: resource.getrusage(resource.RUSAGE_CHILDREN)
Out[13]: resource.struct_rusage(ru_utime=0.0, ru_stime=0.0, ru_maxrss=0, ru_ixrss=0, ru_idrss=0, ru_isrss=0, ru_minflt=0, ru_majflt=0, ru_nswap=0, ru_inblock=0, ru_oublock=0, ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=0, ru_nivcsw=0)

il modulo grp è simile al modulo pwd, la differenza e quella di restituire le voci del database dei gruppi. Si possono usare come parametri name e gid, che restituiscono dati sui gruppi di appartenenza e dati riguardanti l' ID dei gruppi.

In [22]: import grp
In [24]: grp.getgrall()
Out[24]:
[grp.struct_group(gr_name='root', gr_passwd='x', gr_gid=0, gr_mem=['root']),
grp.struct_group(gr_name='bin', gr_passwd='x', gr_gid=1, gr_mem=['root', 'bin', 'daemon']),
grp.struct_group(gr_name='daemon', gr_passwd='x', gr_gid=2, gr_mem=['root', 'bin', 'daemon']),
grp.struct_group(gr_name='sys', gr_passwd='x', gr_gid=3, gr_mem=['root', 'bin', 'adm']),
grp.struct_group(gr_name='adm', gr_passwd='x', gr_gid=4, gr_mem=['root', 'adm', 'daemon']),
grp.struct_group(gr_name='tty', gr_passwd='x', gr_gid=5, gr_mem=[]),
grp.struct_group(gr_name='disk', gr_passwd='x', gr_gid=6, gr_mem=['root']),
grp.struct_group(gr_name='lp', gr_passwd='x', gr_gid=7, gr_mem=['daemon', 'lp']),
grp.struct_group(gr_name='mem', gr_passwd='x', gr_gid=8, gr_mem=[]),
grp.struct_group(gr_name='kmem', gr_passwd='x', gr_gid=9, gr_mem=[]),
grp.struct_group(gr_name='wheel', gr_passwd='x', gr_gid=10, gr_mem=['root']),
grp.struct_group(gr_name='mail', gr_passwd='x', gr_gid=12, gr_mem=['mail']),
grp.struct_group(gr_name='uucp', gr_passwd='x', gr_gid=14, gr_mem=['uucp']),
grp.struct_group(gr_name='man', gr_passwd='x', gr_gid=15, gr_mem=[]),
grp.struct_group(gr_name='games', gr_passwd='x', gr_gid=20, gr_mem=[]),
grp.struct_group(gr_name='gopher', gr_passwd='x', gr_gid=30, gr_mem=[]),
grp.struct_group(gr_name='video', gr_passwd='x', gr_gid=39, gr_mem=[]),
grp.struct_group(gr_name='dip', gr_passwd='x', gr_gid=40, gr_mem=[]),
grp.struct_group(gr_name='ftp', gr_passwd='x', gr_gid=50, gr_mem=[]),
grp.struct_group(gr_name='lock', gr_passwd='x', gr_gid=54, gr_mem=[]),
grp.struct_group(gr_name='audio', gr_passwd='x', gr_gid=63, gr_mem=[]),
grp.struct_group(gr_name='nobody', gr_passwd='x', gr_gid=99, gr_mem=[]),
grp.struct_group(gr_name='users', gr_passwd='x', gr_gid=100, gr_mem=[]),
grp.struct_group(gr_name='floppy', gr_passwd='x', gr_gid=19, gr_mem=[]),
grp.struct_group(gr_name='vcsa', gr_passwd='x', gr_gid=499, gr_mem=[]),
grp.struct_group(gr_name='avahi-autoipd', gr_passwd='x', gr_gid=498, gr_mem=[]),
grp.struct_group(gr_name='oprofile', gr_passwd='x', gr_gid=16, gr_mem=[]),
grp.struct_group(gr_name='ntp', gr_passwd='x', gr_gid=38, gr_mem=[]),
grp.struct_group(gr_name='utmp', gr_passwd='x', gr_gid=22, gr_mem=[]),
grp.struct_group(gr_name='utempter', gr_passwd='x', gr_gid=35, gr_mem=[]),
grp.struct_group(gr_name='slocate', gr_passwd='x', gr_gid=21, gr_mem=[]),
grp.struct_group(gr_name='desktop_admin_r', gr_passwd='x', gr_gid=497, gr_mem=[]),
grp.struct_group(gr_name='desktop_user_r', gr_passwd='x', gr_gid=496, gr_mem=[]),
grp.struct_group(gr_name='dbus', gr_passwd='x', gr_gid=81, gr_mem=[]),
grp.struct_group(gr_name='rpc', gr_passwd='x', gr_gid=32, gr_mem=[]),
grp.struct_group(gr_name='jackuser', gr_passwd='x', gr_gid=495, gr_mem=[]),
grp.struct_group(gr_name='nscd', gr_passwd='x', gr_gid=494, gr_mem=[]),
grp.struct_group(gr_name='rpcuser', gr_passwd='x', gr_gid=493, gr_mem=[]),
grp.struct_group(gr_name='nfsnobody', gr_passwd='x', gr_gid=65534, gr_mem=[]),
grp.struct_group(gr_name='tcpdump', gr_passwd='x', gr_gid=72, gr_mem=[]),
grp.struct_group(gr_name='ccache', gr_passwd='x', gr_gid=492, gr_mem=[]),
grp.struct_group(gr_name='cdrom', gr_passwd='x', gr_gid=11, gr_mem=[]),
grp.struct_group(gr_name='tape', gr_passwd='x', gr_gid=33, gr_mem=[]),
grp.struct_group(gr_name='dialout', gr_passwd='x', gr_gid=18, gr_mem=[]),
grp.struct_group(gr_name='avahi', gr_passwd='x', gr_gid=491, gr_mem=[]),
grp.struct_group(gr_name='mailnull', gr_passwd='x', gr_gid=489, gr_mem=[]),
grp.struct_group(gr_name='smmsp', gr_passwd='x', gr_gid=488, gr_mem=[]),
grp.struct_group(gr_name='openvpn', gr_passwd='x', gr_gid=487, gr_mem=[]),
grp.struct_group(gr_name='rtkit', gr_passwd='x', gr_gid=486, gr_mem=[]),
grp.struct_group(gr_name='apache', gr_passwd='x', gr_gid=485, gr_mem=[]),
grp.struct_group(gr_name='smolt', gr_passwd='x', gr_gid=484, gr_mem=[]),
grp.struct_group(gr_name='sshd', gr_passwd='x', gr_gid=483, gr_mem=[]),
grp.struct_group(gr_name='torrent', gr_passwd='x', gr_gid=482, gr_mem=[]),
grp.struct_group(gr_name='haldaemon', gr_passwd='x', gr_gid=481, gr_mem=[]),
grp.struct_group(gr_name='pulse', gr_passwd='x', gr_gid=480, gr_mem=[]),
grp.struct_group(gr_name='pulse-access', gr_passwd='x', gr_gid=479, gr_mem=[]),
grp.struct_group(gr_name='stapdev', gr_passwd='x', gr_gid=478, gr_mem=[]),
grp.struct_group(gr_name='stapusr', gr_passwd='x', gr_gid=477, gr_mem=[]),
grp.struct_group(gr_name='gdm', gr_passwd='x', gr_gid=476, gr_mem=[]),
grp.struct_group(gr_name='archie', gr_passwd='x', gr_gid=500, gr_mem=[]),
grp.struct_group(gr_name='abrt', gr_passwd='x', gr_gid=475, gr_mem=[]),
grp.struct_group(gr_name='stap-server', gr_passwd='x', gr_gid=155, gr_mem=[])]

Arrivederci e Buone Vacanze a Tutti! ;-)

Python Redirigere lo stream di Output

L' istruzione print non e altro che l' output del metodo sys.stdout.write. Infatti invocare una print equivale ad utilizzare sys.stdout.write(str(X) + '\n') in modo chiaro e comodo per l'utente. E cosa molto frequente usare questo "trucco" di redigere la visualizzazione dell' istruzione print riassegnandola a sys.stdout.

ecco un semplice esempio:

[archie@geek ~]$ python
Python 2.6.2 (r262:71600, Jun 4 2010, 18:28:04)
[GCC 4.4.3 20100127 (Red Hat 4.4.3-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> freeze = sys.stdout #variabile per riassegnare in seguito lo stdout
>>> sys.stdout = open('reg.txt', 'a') #redirezione dell' output al file : modo accodamento
>>> print 'bytes scritti su file'
#scrive il file su disco e lo chiude
>>> sys.stdout.close()
>>> sys.stdout = freeze #riassegna lo stdout originario
>>> print 'sono nel terminale'
sono nel terminale
>>> print open('reg.txt').read()
bytes scritti su file #print dal file su disco


redirigere l' output ad un' oggetto di tipo file tramite " >> ":

>>> file = open('reg.txt', 'w') #l' oggetto file
>>> print >> file, 'rediretto su file' #stampa su file
>>> file.close()
>>> print 'sono nel terminale' #ritorna al terminale
sono nel terminale
>>> print open('reg.txt').read() #print dal file su disco
rediretto su file

questo metodo di utilizzare lo stream dell' output, può rivelarsi particolarmente utile con sys.stderr nel redirigere l'output in un file tramite " >> " e visualizzare eventuali messaggi di errore.

Prove di Pyplot con Matplotlib

Cercando qualcosa di simile a MATLAB, stasera ho voluto installare sulla mia Linux/box la libreria Matplotlib. Niente di che, ho fatto alcune prove per vedere cosa ne usciva fuori.

Qui posto dal tutorial, un paio si screenshots(correlato dal codice) semplici, semplici, di cosa si riesca a fare tramite una funzione pyplot() del modulo matplotlib.

import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()






import numpy as np
import matplotlib.pyplot as plt
ax = plt.subplot(111)
t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)
plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),arrowprops=dict(facecolor='black', shrink=0.05),)
plt.ylim(-2,2)
plt.show()












































non resta che dire, più semplice di così si muore.

20 luglio 2010

Entrare in Internet con Fedora

Surfando nella rete, tra link di blog, e approdando nelle baie di post, in post mi è capitato di leggere di un utente, che dopo essere approdato nel golfo di Canonical(Lucid Lynx), da quel di Fedora, riscontrando a suo dire, con ubuntu una facilità disarmante nel collegarsi alla rete tramite il demone pppoe.

Non toccando una distro "red hat based", dai tempi della versione red hat8.0, e volendo testare quanto detto nel post sopra citato, mi sono armato di una fedora 12 nome in codice Costantine(per la precisione cè già la versione 13 più moderna)per farmene una idea personale. Quindi una volta installata Fedora trovo che per potersi collegare in rete tutto si riduce ad un paio di passaggi, nulla di più.


Se devo essere sincero, essendo deluso, molto deluso, dalla versione 10.04 di Ubuntu(e nel futuro vedo molte più stronzate di quelle attuali), sono alla ricerca di una distro per il desktop, che sia degna di essere chiamata distribuzione Gnu/Linux.

Ecco un esempio reale. Appena finita l' installazione dalla vostra Fedora aprite una shell(presumibilmente la bash), e dirigetevi verso il file ifcfg-etho.

[archie@geek ~]$ su
Password:
[root@geek archie]# cd /etc/sysconfig/network-scripts/
[root@geek archie]# gedit ifcfg-etho













poi una volta aperto il file cambiate l' ultima voce: ONBOOT=no in ONBOOT=yes. Niente di complicato vero? per chi non è avezzo con i files di configurazione per evitare errori quardate l' immagine qua sotto.













adesso basta andare alla barra superiore di Gnome e cliccate tasto destro sull'icona Applet NetworkManager. Scegliete dal piccolo menu a discesa, modifica, connessioni, seleziona sistema etho e poi modifica, scegli dsl, vi richiederà la password di root, seleziona connetti automaticamente e salva le modifiche.
Penso che non ci sia niente di tanto più complicato, dello stesso comando pppoeconf con le varie schermate da seguire che ubuntu propone.

19 luglio 2010

Internet Explorer Amico del Porno

Ieri un mio conoscente, mi porta il suo laptop con un problema che affligge la quasi totalità degli utilizzatori(maschi) di sistemi Windows.

Aveva il suo laptop incasinato da finestre popup, che proponevano piacevoli signorine dalle doti orali, che non avevano niente a che vedere con il canto.

Il suo browser, ad ogni collegamento alla rete, veniva dirottato su altrettanti siti dove ragazze di ogni parte del globo avrebbero stuzzicato la fantasia di qualsiasi uomo, che per sua "sfortuna", le pupille fossero capitate per caso su quelle pagine. Il tutto ovviamente provocato da un suo cugino che ogni tanto usa il suo laptop.

In breve.
La parte più buffa di tutto stò ambaradam(dopo averci dato dentro di anti spyware, antivirus, e di editor del registro "REGEDIT" per un bel quattro ore piene), è stato quello di scoprire, che il principale artefice di tutto stò pornazzo era IE7. Che oltre a fornire gratuitamente la TolBarPorno, non permette nemmeno la sua disistallazione(almeno all' utente medio), ma solo di disattivarla, tramite attiva o disattiva.











Da quanto visto, continuo a pensare che se vogliamo navigare in modo non dico sicuro al 100%, ma almeno navigare in un modo consapevole, dovremmo dimenticarci di Internet Explorer, e quanto meno usare uno dei browser alternativi. Meglio se Firefox, l'assenza degli ActiveX all' interno di Firefox e già cosa buona per affacciarci su internet tramite un sistema Windows.