Redirect di una porta remota alla macchina locale
==================================================
::
ssh -L
::
nota è il nome o indirizzo IP della macchina su cui risiede
il servizio a cui vogliamo accedere e dev'essere visibile dal gateway, esempio::
ssh -L 3389:192.168.1.1:3389 indirizzofirewall
a questo punto è possibile lanciare::
rdesktop localhost
e collegarsi al terminal server 192.168.1.1.
Configurare accesso ssh senza richiesta password
================================================
::
ssh-keygen -b 1024 -t rsa
poi copiare la chiave pubblica generata (nel file .ssh/id_rsa.pub) nel
.ssh/authorized_keys del server
Disabilitare l'accesso da rete a root
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
il file /etc/securetty contiene la lista dei device da dove l'utente
root puo' connettersi, se si concellano tutte le voci lasciando da
tty1 a tty8, l'utente potra' collegarsi solo dalla console.::
ttyS* terminali seriali (modem ecc)
ttyp*, ttyq*, etc terminali di rete
Alcune opzioni utili di nmap
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dal lanciare come root::
nmap -v -sT -O "host"
per una scansione "half-open"::
nmap -v -sS -O "host"
Info su un dominio
^^^^^^^^^^^^^^^^^^
::
whois "dominio"
Forwarding banale
^^^^^^^^^^^^^^^^^
con ipchains::
ipchains -F forward
ipchains -P forward DENY
ipchains -A forward -s 192.168.10.0/24 -j MASQ
ipchains -A forward -i ppp0 -j MASQ
echo 1 > /proc/sys/net/ipv4/ip_forward
con iptables::
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
Bloccare l'accesso incondizionato da un determinato IP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mettere una linea con l'indirizzo IP in /etc/hosts.deny o in caso di firewall::
ipchains -I input 1 -s xxx.xxx.xxx.xxx -j DENY
ipchains -I forward 1 -s xxx.xxx.xxx.xxx -j DENY
oppure bloccare la route verso un host::
route add -host "ip host" reject
Esempi pratici di wget
^^^^^^^^^^^^^^^^^^^^^^^
Scaricare un sito (con link interni) e mantenerlo nella directory
corrente senza il prefisso www.host.. ::
wget -nH -r sito
Uso di fetchmail
^^^^^^^^^^^^^^^^^
::
set daemon 600 #poll di 10 min
set syslog
poll mail.server.it with proto POP3:
user "utentediposta" there with password "" is utentelinux here;
Collegamento via seriale ai dispositivi
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Si parte lasciando **spento** il dispositivo
::
minicom -s sistemare le impostazioni (tipicamente 9600 8N1)
exit (senza uscire dall'applicazione)
accendendo il dispositivo se ne vedrà il boot
rinetd: trasferimento di servizio da un pc ad un altro
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Si configura in /etc/rinetd.conf::
hostinterfaccia porta host destinazione porta
Uso di lftp per gestire il mirror dei siti via ftp
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
esempi di utilizzo::
lftp -u -e "cd ; mirror --delete --exclude wp-config.php --only-newer --parallel=1; quit"
questo comando permette di fare il mirror del sito remoto copiando solo i file nuovi, l'opzione --parallel=1 serve in alcuni casi quando il sito remoto consente solo una connessione ftp alla volta, l'opzione --delete cancella i file locali non presenti in remoto, l'opzione --exclude evita di copiare i file che corrispondono ::
lftp -u -e "lcd ; mirror --reverse --delete --only-newer --parallel=1; quit"
fa l'esatto contrario del comando precedente, copia il contenuto del locale in remoto ed elimina i file che non esistono piu' in locale
Samba
-----
Samba parte di un dominio NT
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**Versione 2.x**
Prima aggiungere il nome NetBIOs della macchina sulla lista degli
account macchina del PDC, stoppare SMBD e NMBD poi scrivere::
smbpasswd -j NTDomainName -r PDCName
infine cambiare in smb.conf security = domain, verificare che la voce
encrypt password sia YES e aggiungere::
password server = nome_del_server
**Versione 3.x**
Per aggiungere la macchina nel dominio NT::
net join -S PDC -UAdministrator%password
va inoltre installato winbindd, se non si vogliono replicare gli utenti del dominio anche lato linux, bisogna modificare il file smb.conf nella sezione **global** ::
# separate domain and username with '+', like DOMAIN+username
winbind separator = +
# use uids from 10000 to 20000 for domain users
idmap uid = 10000-20000
# use gids from 10000 to 20000 for domain groups
idmap gid = 10000-20000
# allow enumeration of winbind users and groups
winbind enum users = yes
winbind enum groups = yes
oltre ai soliti parametri di samba per poter far parte di un dominio::
workgroup = NOMEDOMINIO
security = domain
password server = *
encrypt passwords = Yes
passdb backend = tdbsam guest
inoltre ora bisogna modificare il pam per permettere l'autenticazione tramite
il PDC, farsi una copia di backup di /etc/pam.d e modificare i file in essa contenuti in questo modo::
/etc/pam.d/common-auth
aggiungere::
auth sufficient pam_winbind.so
in::
/etc/pam.d/common-account
aggiungere::
account sufficient pam_winbind.so
far ripartire winbindd::
/etc/init.d/winbindd restart
ora con un::
wbinfo -u
si dovrebbe vedere la lista degli utenti gestiti dal PDC.
Copiare la lista degli utenti unix per Samba
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
cat /etc/passwd | mksmbpasswd > /etc/samba/smbpasswd
oppure::
smbpasswd utente
addtosmbpasswd
Look up di un client NT dall'indirizzo IP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
nmblookup -U PDC_NAME -AS indirizzo_ip
Risoluzione dei nomi tramite wins
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Installare samba (per DebIan anche apt-get install winbind), modificare::
/etc/nsswitch.conf
alla riga::
hosts: files dns winbind wins
Apache
------
Evitare il browsing delle directory e abilitarlo solo in alcune
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
Directory /var/www
Options (eliminare l'eventuale Indexes)
/Directory
Directory /var/www/directorydarenderebrowsable
Options indexes FollowSymLinks
/Directory
Area visitabile solo ad alcuni utenti
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nella sezione Directory che si vuole::
AuthName "Area protetta"
AuthType Basic
AuthUserFile /etc/apache/htpasswd
require user utente
per aggiungere un utente al file di password utilizzare::
htpasswd /etc/apache/htpasswd utente
la stessa cosa puo' essere fatta tramite .htaccess sempre che nella configurazione globale di apache sia permesso modificarne il comportamento tramite questo file, è sufficiente inserire il file nella directory che si vuole abilitare tramite password con il seguente contenuto::
AuthUserFile /
/.htpasswd
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic
require user nomeutente
come nel caso precedente per le password::
htpasswd .htpasswd nomeutente
Postfix
-------
Ciao ciao, `Ciao Spam`
^^^^^^^^^^^^^^^^^^^^^^
:Autore: Flavio Visentin
Ultimamente ha fatto molto discutere__ l'iniziativa di `ciaospam.it`,
che per limitare lo spam obbliga a *farsi riconoscere*...
Ecco una ricetta che permette di eliminare del tutto l'assillo:
1. Creare di una *mappa* che contiene gli indirizzi da rifiutare::
# echo "info@ciaospam.it REJECT" >> /etc/postfix/rompiscatole
# postmap /etc/postfix/rompiscatole
2. Informare della cosa `postfix`::
# echo "smtpd_sender_restrictions = check_sender_access \
> hash:/etc/postfix/rompiscatole" >> /etc/postfix/main.conf
#/etc/init.d/postfix reload
__ http://www.freelists.org/archives/linuxtrent/07-2004/msg00623.html
X11
---
Gestione dei tasti multimediali
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Controllare i valori numerici ritornati premendo il tasto dopo aver lanciato 'xev'.
Controllare il codice di X11 controllando i valori numerici in in /etc/X11/xkb/keycodes/xfree86)
Aggiungere una sezione a /etc/X11/xkb/symbols/inet con quei codici collegandoli ai codici per XFREE86 magari facendo una copia del file prima...ad esempio::
// portatile sconosciutissimo
partial alphanumeric_keys
xkb_symbols "portatilesconosciutissimo" {
key { [ XF86AudioPlay, XF86AudioPause ] };
key { [ XF86AudioPrev ] };
key { [ XF86AudioNext ] };
key { [ XF86AudioStop ] };
key { [ XF86AudioRaiseVolume ] };
key { [ XF86AudioLowerVolume ] };
key { [ XF86AudioMute ] };
};
Control Alt Canc in VNC o menu
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Per attivare il menu del VNC che nella versione di windows è
accessibile tramite mouse, premere F8, verrà visualizzata l'opzione la
voce send ctrl alt del
Per spostare il mouse con la tastiera
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Ctrl+Shift+Num Lock: Senti un beep.
Sposti il cursore con i tasti::
7 8 9
4 6
1 2 3
sul tastierino numerico.
Selezioni un tasto del mouse con i tasti "/" (sinistro), "*"
(centrale) e "-" (destro), sempre sul tastierino numerico. Poi con
"5" simuli un click con quel tasto, con "0" lo si mantiene premuto e
con "." lo si rilascia.
Caratteri balenghi con la tastiera italiana
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
` = AltGr + ' oppure AltGr + ù
{} = AltGr + 7 e AltGr + 0
Configurazione di XKB
^^^^^^^^^^^^^^^^^^^^^
Un'ottima guida, seppure in inglese:
http://www.charvolant.org/~doug/xkb/html/xkb.html
Per vedere la risoluzione attuale di X
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
xdpyinfo
Per far partire X su un altro terminale
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Per avere più sessioni X sulla stessa macchina::
startx -- :1
Altro modo::
Xnest :1
fornisce una finestra contenente un X server. Esempio interessante di applicazione che è contemporaneamente un X client e X server.
xnest come client
^^^^^^^^^^^^^^^^^
È possibile con xnest per esempio collegarsi a un xdm (o gdm) che ha attivo l'xdmcp, X Display Manager Protocol (stile rdesktop)::
Xnest :1 -query indirizzoserver
Mouse in X e su console
^^^^^^^^^^^^^^^^^^^^^^^
Probabilmente è sufficiente mettere in /etc/gpm.conf::
device=/dev/psaux
repeat_type=raw
type=ps2
poi nel file di configurazione di X /dev/gpmdata come device per il mouse
Tasti windows in X
^^^^^^^^^^^^^^^^^^
aggiungere in ~/.Xmodmap::
keycode 115 = F13
keycode 116 = F14
keycode 117 = F15
quindi in .xsession: modmap ~/.Xmodmap. Ora F13, F14 e F15 sono sx-Win
, dx-Win e menu-contestuale.
Esportare il display tramite ssh
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Assicurarsi che sul server sia abilitata la voce::
X11Forwarding yes
in /etc/ssh/sshd_config, quindi sul client esportare il display *prima* di effettuare la connessione ssh::
export DISPLAY=:0.0
a questo punto collegandosi via ssh al server con le opzioni::
ssh -X -C (per la compressione)
è possibile lanciare le applicazioni in modo che visualizzino il display sul client, attenzione sul server dev'essere installato il client X (xbase-clients per DebIan)
Gestione font decenti
^^^^^^^^^^^^^^^^^^^^^
installare possibilmente i font di Microsoft, su debian::
apt-get install msttcorefonts
sistemare sempre per primi i font "bitmapped" nel file di configurazione di xfree, esempio::
FontPath "/usr/lib/X11/fonts/100dpi" # font bitmap
FontPath "/usr/lib/X11/fonts/75dpi"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" # font scalabili
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
FontPath "/usr/lib/X11/fonts/encodings"
Cambiare i font di un applicazione
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E' sufficente utilizzare xlsfonts e inserire il font selezionato nel
file ~/.Xdefault, esempio::
*xterm*font:
si possono fare delle prove con::
xterm -fn
una volta terminato lanciare::
xrdb -merge ~/.Xdefault
Cambiare i font per GTK 1.X
^^^^^^^^^^^^^^^^^^^^^^^^^^^
E' sufficente utilizzare gtkfontsel e inserire il font selezionato nel
file ~/.gtkrc, esempio::
style "default"
{
font = "-adobe-courier-medium-r-normal-*-12-120-75-75-m-*-*-*"
}
Avviare un applicazione all'avvio di xdm senza la necessità del login dell'utente
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Creare uno script e salvarlo in /etc/X11/xdm/Xsetup, attenzione viene lanciato dall'utente root
Installazione di grub
---------------------
::
grub-install device
Hylafax: stampare i fax in entrata
----------------------------------
Per stampare direttamente i fax in entrata di hylafax , aggiungere nel
file /var/spool/fax/bin/faxrcvd il comando::
$FAX2PS $1 | lpr
Chi utilizza cosa
-----------------
Per vedere che processo sta utilizzando la tal porta
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
fuser port/tcp o udp
Per vedere che processo sta utilizzando il tal file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
lsof | grep file
Per vedere i processi che stanno in ascolto
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
netstat -l
Cambiare una stringa in uno o più file
--------------------------------------
::
sed -i 's:stringadasostituire:stringanuova:g' *
oppure::
perl -pi -e 's/stringadasostiruire/nuovastringa/g' *
cambiare password ad un utente di postgresql
---------------------------------------------
::
alter user utente with password 'password';
o se si usano password criptate::
alter user utente with crypted password 'password';
Configurare la scheda sonora
----------------------------
Installare la documentazionie del kernel e seguire le indicazioni per
la propria scheda, ``pnpdump > isapnp.conf`` genera il file di
configurazione da editare per abilitare le varie opzioni, usare
modconf per installare definitivamente i moduli
Togliere i beep fastidiosi
--------------------------
in x::
xset b off
in console::
setterm -blength 0
Togliere i messaggi di errore dalla console
-------------------------------------------
Modificare /etc/syslog.conf in modo da deviare il log su file , o per
bloccarlo definitivamente::
dmesg -n1
Estrarre un attachment mime da un file
--------------------------------------
::
metamail -w file
Dischi CD Floppy Chiavette USB
-------------------------------
Copiare una distro da una partizione all'altra (anche non uguali)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
tar cfv - * | (cd /mnt/disk2 ; tar xfv -)
oppure::
cp -avx /mnt/dev1 /mnt/dev2
altrimenti::
cp -ra / /hda2
Ricreare il device di un disco
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
mknod -m 660 nomedev( per es hda1) b 3 1
per debian poi::
chgrp disk nomedev
Per rimontare un disco in rw
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
mount /device -o remount,rw
Recupero di un floppy danneggiato
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecuperaDischetto, con una ricetta di Andrea Gelpi
Masterizzare
^^^^^^^^^^^^
Aggiungere un masterizzatore ide senza ricompilare il kernel originale
======================================================================
in /etc/lilo.conf aggiungere::
append="hdX=ide-scsi" dove X e' la lettera del device
e in /etc/modules::
ide-scsi
CD Audio
========
::
cdrdao copy --on-the-fly --speed 2 --device 0,0,0 --source-device 0,1,0 \
--driver generic-mmc --source-driver generic-mmc --force
CD Dati
=======
::
cdrecord -v dev=0,0,0 speed=4 -isosize /dev/cdrom
Convertire da ext2 a ext3 e viceversa
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Anche su fs montato::
tune2fs -j /dev/hdaX
su fs *smontato*::
tune2fs -O ^has_journal /dev/hdaX
e per sicurezza::
fsck.ext2 -f /dev/hdaX
Utilizzo chiavetta usb
^^^^^^^^^^^^^^^^^^^^^^
Assicurarsi di avere in /etc/fstab::
usbdevfs /proc/bus/usb usbdevfs defaults,noauto 0 0
installare il modulo usb-storage::
modprobe usb-storage
ora è possibile montare la chiavetta::
mkdir /mnt/chiavetta
mount /dev/sda1 /mnt/chiavetta
in realtà sda1 è il nome del device in una configurazione desktop standard
(senza dischi scsi ecc), comunque caricando il modulo usb-storage
in /var/log/messages si dovrebbe vedere il nome del device assegnato, nel caso non esistesse il device è possibile crearlo con MAKEDEV::
cd /dev/
MAKEDEV sda
eventualmente è possibile modificare l'fstab in modo da poter montare la chiavetta agilmente da kde o gnome::
/dev/sda1 /mnt/chiavetta auto user 0 0
Avere un report dell'hardware del sistema
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Si può utilizzare il comando::
lshw
Uso di GNU PG
--------------
Creare una nuova chiave
^^^^^^^^^^^^^^^^^^^^^^^^
::
gpg --gen-key
Esportare una chiave pubblica
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
gpg --armor --export
Copiare la chiave privata di Gnu PG da una macchina ad un'altra
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
gpg -armor --export-secret-keys "nome e/o indirizzo di posta" > mykey.sec
gpg --import --allow-secret-key-import < mykey.sec
Ascoltare la radio è facile
---------------------------
Rai 3 ad esempio è ascoltabile con::
realplay http://www.radio.rai.it/new_player/radio3.ram
Disabilitare il reboot con CTRL ALT CANC
----------------------------------------
commentare la line in /etc/inittab::
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Ripristinare la password di root
--------------------------------
Fare il boot specificando Linux init=/bin/sh::
# mount -n -t remount,rw /
# mount -avt nonfs,noproc,nosmbfs
# cd /etc
# vi passwd
# vi shadow
mettere il secondo campo (la password) vuoto
Il primo mount fa si che il root filesystem (dove presumibilmente
giace la directory /etc e quindi il file delle password...) sia
scrivibile; il secondo monta tutti gli altri filesystem che non siano
NFS o roba comunque non utile.
La modifica della password a questo punto può essere fatta con un
qualsiasi editor, come indicato sopra, oppure normalmente con il
solito::
# passwd
Enter new UNIX password:
Retype new UNIX password:
Rinominare una serie di file
----------------------------
Esiste l'utilissima utility rename contenuta nel pacchetto perl::
rename 's/pippo/pluto/' *
macutio segnala un'alternativa contenuta in util-linux che usa questa sintassi::
rename from to files
from: la substring da sostituire
to: la substring con cui sostituire from
files: il file cui applicare la sostituzione
Kernel
------
Dove diavolo trova Linux l'elenco dei moduli da installare?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Due cose da sapere riguardo ai moduli:
1. il caricamento di alcuni moduli viene effettuato al volo quando ce
n'è bisogno (se il kernel e` stato compilato per comportarsi cosi`,
ed è la stragrande maggioranza dei casi).
Tipicamente ciò succede quando si tenta di accededere a un block
device o ad un char device in /dev.
Ad esempio, quando si tenta di accedere ad un dispositivo SCSI, il
kernel di fatto manda in esecuzione un bel::
modprobe block-major-8
e normalmente, in /etc/modules.conf c'e` un bel::
alias block-major-8
per cui l'effetto finale è quello per cui vien fatto un modprobe
del modulo specifico, che risulta nel caricamento del modulo e di
tutti gli altri moduli da cui esso dipende. Bello, eh? :)
2. oppure, negli script di boot (del tipo /etc/rc.d/boot.local o
simili, cambiano da distribuzione a distribuzione), ci sono i
vari::
modprobe
del caso.
modprobe è un comando che non fa altro che leggere il proprio
file di configurazione (che è /etc/modules.conf) e lanciare insmod e
rmmod (che fanno il "vero" lavoro) con i parametri opportuni.
C'è da tener ben presente una differenza fondamentale tra l'usare
modprobe e l'usare direttamente insmod/rmmod:
3. modprobe è a conoscenza delle dipendenze esistenti tra i moduli (e
oltre a caricare quello che gli dici, carica prima anche quelli di
cui ha bisogno, eventualmente eseguendo anche le fasi di pre e post
install e passando le opzioni specificate con *options*). E tanto
per cambiare, viene fatto esattamente l'opposto quando si tratta di
rimuovere un modulo (``modprobe -r``).
4. insmod invece non sa niente di tutto questo.
Per cui la regoletta è: usare sempre modprobe, salvo che non si abbia
una ragione valida per usare insmod/rmmod.
Il kernel esegue::
modprobe -s -k (attraverso una call a `request_module()
- ``-s`` per fare il logging attraverso syslogd e
- ``-k`` per impostare l'autocleaning sul modulo caricato (o moduli)
dopo aver adeguatamente settato l'environment.
Questo meccanismo è piuttosto singolare: il kernel invoca un programma
in userspace. Da quanto capisco, è stato scelto di fare così perché
questa strategia semplificava di molto la gestione del loading on
demand dei moduli (cioè non si deve replicare buona parte di quello
che fa ``modprobe`` in kernel space, modprobe permette una discreta
flessibilità e configurabilità, vedi le varie
``pre-install``/``post-install``/``pre-remove``/``post-remove``).
`Come viene spiegato qui`__, è possibile correggere il path del
programma da eseguire sostituendo il valore di default.
__ http://www.linuxhq.com/kernel/v2.4/doc/kmod.txt.html
Sembra che la cosa sia piaciuta, perché in realtà il kernel offre un
meccanismo del tutto generale per richiedere l'esecuzione di
programmi in userspace: ``call_usermodehelper``, che apparentemente
funziona come la nota ``execve(2)``.
Note per kernel hackers: ``call_usermodehelper()`` e
``request_module()`` sono sincrone, cioè dormono finché il programma
invocato non è terminato (con ovvie conseguenze su gestione di
lock/semafori e necessità di scrivere codice rientrante) e non c'è
verso di sapere se l'azione fatta dal programma invocata si è conclusa
con successo o meno. Il codice è simile a::
available = check_for_feature();
if (!available)
request_module("feature");
if (!check_for_feature())
goto error
else
goto success
Riferimenti:
* kernel/kmod.h e kernel/kmod.c
* Documentation/modules.txt
* net/socket.c per un esempio di come usare request_module()
* http://www.xml.com/ldd/chapter/book/ch11.html
p.s. : DebIan offre quel favoloso strumento che si chiama modconf!:)
Spiccioli di grafica
--------------------
Immagine trasparente con Gimp?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
Livello -> Trasparenza -> Aggiunta canale alpha
Seleziona -> Per colore
Modifica -> Pulisci
Ridurre le dimensioni di un filmato
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
apt-get transcode ;)
transcode -i originale.mpg -y ffmpeg -F mpeg4 -o ridotto.mpg -Z 400x200
Qemu, boot da CD
----------------
Creare un immagine su disco::
dd of=nomeimmagine.img bs=1024 seek=numerobyte count=0
nota, numero byte può essere espresso anche in mega esplicitando una M maiuscola dopo la cifra, un esempio di avvio di qemu con l'immagine creata::
qemu -hda nomeimmagine.img -cdrom /dev/cdrom -boot d -m 256 -enable-audio -user-net -pci
-- diaolin: puoi trasformare le immagini di vmware in immagini di qemu con vmdk2raw.
-- diaolin: puoi creare una immagine anche senza usare dd ma lanciando il comando::
qemu-mkcow [-f disk_image] cow_image [cow_size]
esempiuccio::
immagine raw da 5Gb
qemu-mkcow nuova.raw 5000
Utilizzo di find
----------------
Esempio di utilizzo di find::
find /directory/ -iname "file*" -exec cat {} \;
Conversione di codifica dei file con iconv
------------------------------------------
iconv è un utility che permette di convertire un file da una codifica all'altra, il programma si blocca se c'e' qualche carattere non supportato nella nuova codifica visualizzando la riga contenente l'errore è quindi possibile sistemare il file, esempio di utilizzo::
iconv --from-code utf-8 --to-code iso-8859-1 file.txt -o file.new
Caratteri di escape
-------------------
A volte è utile utilizzare dei caratteri di escape, ad esempio per colorare il file /etc/motd (il benvenuto che si ha quando ci si collega ad un PC), il carattere di escape viene rappresentato con ^[ ma è un carattere singolo non due, per produrlo o utilizzare un editor pensato a questo scopo tipo::
tetradraw
oppure ecco alcune note per gli editor più comuni::
emacs: ^Q ESC
vi: ^V ESC
joe: ` 0 2 7
jed: ` ESC
alcuni caratteri di escape utili::
blu ^[[44;37m
normale ^[[40;37m
clear ^[[H^[[J
altri colori::
Nero 0;30 Grigio Scuro 1;30
Blu 0;34 Blu Chiaro 1;34
Verde 0;32 Verde Chiaro 1;32
Ciano 0;36 Ciano Chiaro 1;36
Rosso 0;31 Rosso Chiaro 1;31
Viola 0;35 Viola Chiaro 1;35
Marrone 0;33 Giallo 1;33
Grigio Chiaro 0;37 Bianco 1;37
fonte: http://it.tldp.org/HOWTO/Bash-Prompt-HOWTO-5.html