Combinación teclas | Signo | Descripción | |
Alt+0151 | — | Raya | |
Alt+0150 | – | Menos | |
(con tecla propia) | - | Guion | |
Alt+0191 | ¿ | Interrogación de apertura | |
Alt+0161 | ¡ | Exclamación de apertura | |
Alt+164 | ñ | (ñ, con tecla propia en teclado español) | |
Alt+165 | Ñ | (Ñ, con tecla propia en teclado español) | |
Ctrl+Mayús+(espacio) | Espacio fijo (entre dos palabras) | ||
Ctrl+Mayús+- | - | Guion fijo (entre dos palabras) | |
Alt+174 | « | Comillas latinas o españolas de apertura | |
Alt+175 | » | Comillas latinas o españolas de cierre | |
Alt+0147 | “ | Comillas altas o inglesas de apertura | |
Alt+0148 | ” | Comillas altas o inglesas de cierre | |
Alt+0145 | ' | Comillas simples de apertura | |
Alt+0146 | ' | Comillas simples de cierre | |
Alt+0133 | ... | Puntos suspensivos | |
Alt+166 | ª | Ordinal femenino voladita | |
Alt+167 | º | Ordinal masculino voladita | |
Alt+248 | ° | Grado | |
Alt+0128 | € | Euro | |
Alt+0162 | ¢ | Centavo | |
Alt+0163 | £ | Libra esterlina | |
Alt+171 | 1/2 | Un medio | |
Alt+172 | 1/4 | Un cuarto | |
Alt+190 | 3/4 | Tres cuartos | |
Alt+0169 | © | Símbolo de copyright | |
Alt+0174 | ® | Símbolo de marca registrada | |
Alt+0153 | ™ | Símbolo de marca | |
Alt+0167 | § | Párrafo | |
Alt+0182 | ¶ | Calderón | |
Alt+0134 | † | Cruz | |
Alt+0135 | ‡ | Cruz doble | |
Alt+0177 | ± | Más menos | |
Alt+126 | ~ | Tilde o virgulilla | |
Alt+486 | µ | Micra | |
Alt+0759 | ÷ | Dividido por | |
Alt+249 | · | Punto centrado | |
Alt+ 64 | @ | Arroba | |
Alt+0149 | • | Topo (para listas) | |
Alt+0216 | Ø | O barrada | |
Alt+0137 | ‰ | Por mil | |
from: http://www.rlozano.com/consulta/14/14.html |
29 de diciembre de 2009
Caracteres del teclado
Tutorial sobre perl (...en construcción)
El lenguaje perl esta especialmente indicado para el manejo de ficheros y la depuración de texto. Según me ha comentado una mogo que está ahora progrmando con él tiene unas expresioner regulares muy potentes y sencillas.
... ya veremos.
COMADOS Y ESTRUCTURAS BÁSICAS DEL PERL
1) Para confirmar si esta instalado el intérprete perl:
# perl -v
This is perl, v5.10.0 built for i486-linux-gnu-thread-multi
Copyright 1987-2007, Larry Wall
This is perl, v5.10.0 built for i486-linux-gnu-thread-multi
Copyright 1987-2007, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
2) Para ver la ruta de perl:
#which perl
/usr/bin/perl
los scripts de perl deben comenzar indicando la ruta del interprete:
#!/usr/bin/perl
#!/usr/bin/perl
3) Variables en perl:
- Escalares "$":
- $NUM = 4;
- $TEXT = "texto";
- Arrays "@":
- @NUMEROS = (1,2,3,4,5);
- @DIAS = ("lunes" , "martes" , "miercoles");
- Hash "%":
- %DIAS = ( l =>; "lunes" , m =>; "martes" , mi =>; "miercoles"
4) Argumentos en perl:
./perlscript.pl a b c
$ARGV [0] = a
$ARGV [1] = b
$ARGV [2] = c
$#ARGV = 2; indica el indice del último argumento.
5) condicional "if" , "else", "elsif":
#!/usr/bin/perl
if ($VAR == 10) {
print "Es igual a 10";
}
if ($VAR > 10) {
if ($VAR == 10) {
print "Es igual a 10";
}
if ($VAR > 10) {
print "Mayor de 10\n";
}
if ($VAR > 20){
if ($VAR > 20){
print "Mayor de 20\n";
}
if ($VAR > 30){
print "Mayor de 30\n";
}
else {
print "Menor de 10";
}
Formas resumidas de if:
if($VAR > 10) print "Mayor de 10";
ó
print "Mayor de 10" if($VAR > 10);
6) Condicional "unless"
#!/usr/bin/perl
print "Hola" unless ($NOHOLA = 1);
7) Bucle "while":
#!/usr/bin/perl
$T = 0;
$T = 0;
while ($T < 5) {
print "Hola 5 veces\n";
$T = $T + 1;
}
8) Bucle "until":
#!/usr/bin/perl
$T = 1;
$T = 1;
until ($T > 5) {
print "Hola 5 veces\n";
$T = $T + 1;
}
9) Bucle "for":
#!/usr/bin/perl
for ($T = 0 ; $T < 5 ; $T = $T + 1){
for ($T = 0 ; $T < 5 ; $T = $T + 1){
print "Hola 5 veces\n";
}
10) Bucle "foreach":
#!/usr/bin/perl
@SEMANA=("lunes" , "martes" , "..." , "y domingo");
foreach $DIA (@SEMANA) {
print "$DIA\n";
}
11) Abriendo archivos:
open (FILE, "file.txt"); #en modo lectura.
open (FILE, ">file.txt"); #en modo escritura.
open (FILE, ">>file.txt"); #en modo actualización.
open (FILE, ">file.txt") or print "Sin acceso al archivo";
close (FILE);
12) Escribiendo en archivos (open, print, close):
#!/usr/bin/perl
open (FILE, ">>file.txt") or die "Privilegios insuficentes\n";
print FILE "Texto añadido al archivo file.txt";
close (FILE);
13) Leyendo archivos
Podemos copiar el contenido de un archivo a una variable array, cada línea es un elemento de la matriz:
#!/usr/bin/perl
open (FILE, "file.txt");
@VAR = <FILE>;
close (FILE);
print @VAR;
Haciendo un bucle con las filas del archivo:
#!/usr/bin/perl
open (FILE, "file.txt");
while ($LINEA = <FILE>) {
print $LINEA;
}
close (FILE);
while ($LINEA = <FILE>
print $LINEA;
}
close (FILE);
14) Quitar espacios en blaco a avariable: =~ s/ //g
#!/usr/bin/perl
$FRASE = "Frase con esapacios";
print "$FRASE\n";
$FRASE =~ s/ //g;
print "$FRASE\n";
result:
Frase con esapacios
Fraseconesapacios
15) Expresiones regulares en perl:
Pattern |
Matches |
^A |
"A" at the beginning of a line |
A$ |
"A" at the end of a line |
A^ |
"A^" anywhere on a line |
$A |
"$A" anywhere on a line |
^^ |
"^" at the beginning of a line |
$$ |
"$" at the end of a line |
Regular Expression |
Matches |
[] |
The characters "[]" |
[0] |
The character "0" |
[0-9] |
Any number |
[^0-9] |
Any character other than a number |
[-0-9] |
Any number or a "-" |
[0-9-] |
Any number or a "-" |
[^-0-9] |
Any character except a number or a "-" |
[]0-9] |
Any number or a "]" |
[0-9]] |
Any number followed by a "]" |
[0-9-z] |
Any number, |
or any character between "9" and "z". |
|
[0-9\-a\]] |
Any number, or |
a "-", a "a", or a "]" |
Regular Expression |
Matches |
_ |
|
* |
Any line with an asterisk |
\* |
Any line with an asterisk |
\\ |
Any line with a backslash |
^* |
Any line starting with an asterisk |
^A* |
Any line |
^A\* |
Any line starting with an "A*" |
^AA* |
Any line if it starts with one "A" |
^AA*B |
Any line with one or more "A"'s followed by a "B" |
^A\{4,8\}B |
Any line starting with 4, 5, 6, 7 or 8 "A"'s |
followed by a "B" |
|
^A\{4,\}B |
Any line starting with 4 or more "A"'s |
followed by a "B" |
|
^A\{4\}B |
Any line starting with "AAAAB" |
\{4,8\} |
Any line with "{4,8}" |
A{4,8} |
Any line with "A{4,8}" |
Regular Expression |
Class |
Type |
Meaning |
_ |
|||
. |
all |
Character Set |
A single character (except newline) |
^ |
all |
Anchor |
Beginning of line |
$ |
all |
Anchor |
End of line |
[...] |
all |
Character Set |
Range of characters |
* |
all |
Modifier |
zero or more duplicates |
\< |
Basic |
Anchor |
Beginning of word |
\> |
Basic |
Anchor |
End of word |
\(..\) |
Basic |
Backreference |
Remembers pattern |
\1..\9 |
Basic |
Reference |
Recalls pattern |
_+ |
Extended |
Modifier |
One or more duplicates |
? |
Extended |
Modifier |
Zero or one duplicate |
\{M,N\} |
Extended |
Modifier |
M to N Duplicates |
(...|...) |
Extended |
Anchor |
Shows alteration |
_ |
|||
\(...\|...\) |
EMACS |
Anchor |
Shows alteration |
\w |
EMACS |
Character set |
Matches a letter in a word |
\W |
EMACS |
Character set |
Opposite of \w |
Regular Expression |
||
Class |
Type |
Meaning |
\t |
Character Set |
tab |
\n |
Character Set |
newline |
\r |
Character Set |
return |
\f |
Character Set |
form |
\a |
Character Set |
alarm |
\e |
Character Set |
escape |
\033 |
Character Set |
octal |
\x1B |
Character Set |
hex |
\c[ |
Character Set |
control |
\l |
Character Set |
lowercase |
\u |
Character Set |
uppercase |
\L |
Character Set |
lowercase |
\U |
Character Set |
uppercase |
\E |
Character Set |
end |
\Q |
Character Set |
quote |
\w |
Character Set |
Match a "word" character |
\W |
Character Set |
Match a non-word character |
\s |
Character Set |
Match a whitespace character |
\S |
Character Set |
Match a non-whitespace character |
\d |
Character Set |
Match a digit character |
\D |
Character Set |
Match a non-digit character |
\b |
Anchor |
Match a word boundary |
\B |
Anchor |
Match a non-(word boundary) |
\A |
Anchor |
Match only at beginning of string |
\Z |
Anchor |
Match only at EOS, or before newline |
\z |
Anchor |
Match only at end of string |
\G |
Anchor |
Match only where previous m//g left off |
http://www.grymoire.com/Unix/Regular.html
http://www.linuxforums.org/articles/learn-perl-in-10-easy-lessons-lesson-1_120.html
Cuidado ya que hay algunos errores en el código de los ejemplos, leer comentarios.
http://www.eui.upm.es/Servicios/CC/Chuletas/Perl/index.html
Tutorial de la UPM.
http://www.htmlpoint.com/perl/index.html
Cuidado ya que hay algunos errores en el código de los ejemplos, leer comentarios.
http://www.eui.upm.es/Servicios/CC/Chuletas/Perl/index.html
Tutorial de la UPM.
http://www.htmlpoint.com/perl/index.html
24 de diciembre de 2009
boot floopy con grub
Script que crea un floopy de arranque del sistema operativo:
Testado en debian lenny.
#!/bin/bash
echo
echo ---- debian pp bot creando un floppy boot con actual /boot/grub/menu.lst ---
read -p "Pon un diskuete en la diskuetera ... ya ???"
echo
echo pues vaaaamos....
echo
mkfs -t ext2 /dev/fd0
mount -t ext2 /dev/fd0 /media/floppy0
echo
echo Instalando grub ...
echo
grub-install --root-directory=/media/floppy0 fd0
cp /boot/grub/menu.lst /media/floppy0/boot/grub/menu.lst
umount /media/floppy0
echo
echo ... ok!.. ya esta!!!
echo un placer, debian pp bot agent.
echo
echo ---- debian pp bot creando un floppy boot con actual /boot/grub/menu.lst ---
read -p "Pon un diskuete en la diskuetera ... ya ???"
echo
echo pues vaaaamos....
echo
mkfs -t ext2 /dev/fd0
mount -t ext2 /dev/fd0 /media/floppy0
echo
echo Instalando grub ...
echo
grub-install --root-directory=/media/floppy0 fd0
cp /boot/grub/menu.lst /media/floppy0/boot/grub/menu.lst
umount /media/floppy0
echo
echo ... ok!.. ya esta!!!
echo un placer, debian pp bot agent.
echo
Testado en debian lenny.
23 de diciembre de 2009
limitar el uso de la cpu
El el micro servidor micra, hace un poco de todo pero en certas tareas prefiero que tarde un poquito mas y no consuma mucha cpu que bastante justito.
Esto lo podemos hacer con cpulimit
Tenemos el paquete para debian:
Uso:
Ojo para limitar el uso de cpu de scripts hay que hacerlo con el PID.
Al cpulimit he tenido varios problemas ya que NO se pude puede poner la ruta de ejecutables scripts, hay que usar los PID, y tambien me falla cuando se limita una aplicación que se ejecuta varias veces con diferentes PID que van cambiando.
Tengo varios scripts que se ejecutan en background de forma continuada en micra y quiero limitarles la CPU maxima que pueden usar.
Creo un nuevo cliente que ejecutara los daemons scripts.
Le asigno privilegios con sudo.
Limito su uso de cpu con ulimit.
Ulimit solo permitie limitar el tiempo total de uso de la CPU no el % de uso puntual.
Esto lo podemos hacer con cpulimit
Tenemos el paquete para debian:
#aptitude install cpulimit
Uso:
cpulimit –e NOMBREAPLICACION –limit 50
cpulimit -p 1234 -l 50
cpulimit -P /usr/bin/programa -l 50
Ojo para limitar el uso de cpu de scripts hay que hacerlo con el PID.
Al cpulimit he tenido varios problemas ya que NO se pude puede poner la ruta de ejecutables scripts, hay que usar los PID, y tambien me falla cuando se limita una aplicación que se ejecuta varias veces con diferentes PID que van cambiando.
Tengo varios scripts que se ejecutan en background de forma continuada en micra y quiero limitarles la CPU maxima que pueden usar.
Creo un nuevo cliente que ejecutara los daemons scripts.
Le asigno privilegios con sudo.
Limito su uso de cpu con ulimit.
Ulimit solo permitie limitar el tiempo total de uso de la CPU no el % de uso puntual.
13 de diciembre de 2009
rtorrent
Comados básicos:
backspace | Add torrent using an URL or file path. Use tab to view directory content and do auto-complete. Also, wildcards can be used. For example: ~/torrent/* |
return | Same as backspace, except the torrent remains inactive. (Use ^s to activate) |
^o | Set new download directory for selected torrent. Only works if torrent has not yet been activated. |
^s | Start download. Runs hash first unless already done. |
^d | Stop an active download, or remove a stopped download. |
^k | Stop and close the files of an active download. |
^r | Initiate hash check of torrent. Without starting to download/upload. |
a/s/d | Increase the upload throttle by 1/5/50 KB. |
z/x/c | Decrease the upload throttle by 1/5/50 KB. |
A/S/D | Increase the download throttle by 1/5/50 KB. |
Z/X/C | Decrease the download throttle by 1/5/50 KB. |
right | Switch to Download View. |
^r | Initiate hash check of torrent. |
+/- | Change priority of torrent. |
l | View log. Exit by pressing the space-bar. |
1 | Show all downloads |
2 | Show all downloads, ordered by name |
3 | Show started downloads |
4 | Show stopped downloads |
5 | Show complete downloads |
6 | Show incomplete downloads |
7 | Show hashing downloads |
8 | Show seeding downloads |
Para salir de rtorrent: crtl + q
Referencias:
11 de diciembre de 2009
Shellinabox en debian
Shellinabox permite un acceso desde cualquier nevegador web a una consola linux.
http://code.google.com/p/shellinabox/
funciona en el puerto 4200
Mediante un proxi con apache2 se puede hcer que funciones en el 443: https
Pero en Debian no funciona SSL !!!
http://code.google.com/p/shellinabox/issues/detail?id=23
Y por lo que parece es un bug todavia sin resover
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535905
http://code.google.com/p/shellinabox/
funciona en el puerto 4200
Mediante un proxi con apache2 se puede hcer que funciones en el 443: https
Pero en Debian no funciona SSL !!!
http://code.google.com/p/shellinabox/issues/detail?id=23
Y por lo que parece es un bug todavia sin resover
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535905
22 de noviembre de 2009
rt73 wifi problem con CTS protection
Instalar la wifi en el fitPC-Slim con debian 5.0 Lenny ha necesitado cierto trabajo y finalmente la conexion presenta algo de inestabilidad y se generan unos errores logeados en el syslog y messages
#tail /var/log/syslog
Nov 22 09:53:16 micra kernel: [65079.378790] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:17 micra kernel: [65079.577905] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:22 micra kernel: [65085.309522] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:23 micra kernel: [65085.700026] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:30 micra kernel: [65092.887591] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:30 micra kernel: [65093.094322] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:40 micra kernel: [65102.517428] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:40 micra kernel: [65102.718352] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:42 micra kernel: [65104.972206] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:42 micra kernel: [65105.174671] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
#tail /var/log/messages
Nov 22 08:42:08 micra kernel: [60810.662564] __ratelimit: 4 messages suppressed
Nov 22 08:42:23 micra kernel: [60826.429898] __ratelimit: 2 messages suppressed
Nov 22 08:54:41 micra kernel: [61564.219307] __ratelimit: 2 messages suppressed
Nov 22 08:59:15 micra kernel: [61837.587991] __ratelimit: 1 messages suppressed
Nov 22 09:47:45 micra kernel: [64748.246023] __ratelimit: 1 messages suppressed
Nov 22 09:47:47 micra kernel: [64750.082644] __ratelimit: 1 messages suppressed
Nov 22 09:47:52 micra kernel: [64755.415289] __ratelimit: 1 messages suppressed
Nov 22 09:49:14 micra kernel: [64836.498946] __ratelimit: 5 messages suppressed
Parece ser que el CTS (Cipher Text Stealing) es un sistema de cifrado y que puede ser activado/descativado en el router. En mi glorioso Zyxel prestige de Telefonica RTS/CTS lo tenía desactivado (?)
El RTS/CTS es un mecanismo para reducir los problemas por colisiones en la red. En mi glorioso Zyxel prestige de Telefonica RTS/CTS lo tenía desactivado (?), lo activo con un threshold de 2432 y Fragmantation Threshold tambien a 2432. >>>> Continuan los mensages "CTS protection enables/disbled" en el syslog y mensages "ratelimit" tambien continua a pareciendo.
Ref:
http://old.nabble.com/WIFI-I4965AGN-WIFI-y--var-log-dmesg-LLENO!!-td16944319.html
Update: Solucionado con la recopilación del kernel de 2.6.26 al 2.6.32.3
#tail /var/log/syslog
Nov 22 09:53:16 micra kernel: [65079.378790] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:17 micra kernel: [65079.577905] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:22 micra kernel: [65085.309522] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:23 micra kernel: [65085.700026] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:30 micra kernel: [65092.887591] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:30 micra kernel: [65093.094322] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:40 micra kernel: [65102.517428] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:40 micra kernel: [65102.718352] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:42 micra kernel: [65104.972206] wlan0: CTS protection disabled (BSSID=xx.xx.xx.xx)
Nov 22 09:53:42 micra kernel: [65105.174671] wlan0: CTS protection enabled (BSSID=xx.xx.xx.xx)
#tail /var/log/messages
Nov 22 08:42:08 micra kernel: [60810.662564] __ratelimit: 4 messages suppressed
Nov 22 08:42:23 micra kernel: [60826.429898] __ratelimit: 2 messages suppressed
Nov 22 08:54:41 micra kernel: [61564.219307] __ratelimit: 2 messages suppressed
Nov 22 08:59:15 micra kernel: [61837.587991] __ratelimit: 1 messages suppressed
Nov 22 09:47:45 micra kernel: [64748.246023] __ratelimit: 1 messages suppressed
Nov 22 09:47:47 micra kernel: [64750.082644] __ratelimit: 1 messages suppressed
Nov 22 09:47:52 micra kernel: [64755.415289] __ratelimit: 1 messages suppressed
Nov 22 09:49:14 micra kernel: [64836.498946] __ratelimit: 5 messages suppressed
Parece ser que el CTS (Cipher Text Stealing) es un sistema de cifrado y que puede ser activado/descativado en el router. En mi glorioso Zyxel prestige de Telefonica RTS/CTS lo tenía desactivado (?)
El RTS/CTS es un mecanismo para reducir los problemas por colisiones en la red. En mi glorioso Zyxel prestige de Telefonica RTS/CTS lo tenía desactivado (?), lo activo con un threshold de 2432 y Fragmantation Threshold tambien a 2432. >>>> Continuan los mensages "CTS protection enables/disbled" en el syslog y mensages "ratelimit" tambien continua a pareciendo.
Ref:
http://old.nabble.com/WIFI-I4965AGN-WIFI-y--var-log-dmesg-LLENO!!-td16944319.html
Update: Solucionado con la recopilación del kernel de 2.6.26 al 2.6.32.3
21 de noviembre de 2009
nano en color
Nano es mi editor e texto preferido.
Se puede mejorar la presentación del texto haciendo que el texto se presente en color:
Como?: editar el archivo /etc/nanorc
Al fina del archivo descomentar las lineas que comeinzan por include:
El resultado es espectacular y muy muy util para hacer scripts en bash.
Se puede mejorar la presentación del texto haciendo que el texto se presente en color:
Como?: editar el archivo /etc/nanorc
Al fina del archivo descomentar las lineas que comeinzan por include:
... ...
## Nanorc files
include "/usr/share/nano/nanorc.nanorc"
## C/C++
include "/usr/share/nano/c.nanorc"
## HTML
include "/usr/share/nano/html.nanorc"
## TeX
include "/usr/share/nano/tex.nanorc"
## Quoted emails (under e.g. mutt)
include "/usr/share/nano/mutt.nanorc"
## Patch files
include "/usr/share/nano/patch.nanorc"
## Manpages
include "/usr/share/nano/man.nanorc"
## Groff
include "/usr/share/nano/groff.nanorc"
## Perl
include "/usr/share/nano/perl.nanorc"
## Python
include "/usr/share/nano/python.nanorc"
## Ruby
include "/usr/share/nano/ruby.nanorc"
## Java
include "/usr/share/nano/java.nanorc"
## Assembler
include "/usr/share/nano/asm.nanorc"
## Bourne shell scripts
include "/usr/share/nano/sh.nanorc"
## POV-Ray
include "/usr/share/nano/pov.nanorc"
## Bourne shell scripts
include "/usr/share/nano/sh.nanorc"
## POV-Ray
include "/usr/share/nano/pov.nanorc"
El resultado es espectacular y muy muy util para hacer scripts en bash.
wifi guardian script
De vez en cuando, sin saber como ni por qué se pierde la conexión wifi y no se reconecta.
En un servidor sin teclado ni pantalla esto es un problema ya que se pierde la conexion totalmente y no hay manera de acceder.
He hecho un sencillo script que comprueba la conexion a internet y reconfigura la conexion wifi si esta caida.
Hace un ping a www.google.com, y si NO hay respuesta reinicia las red y deja una entrada en un log de seguimeinto.
El script:
Lo he puesto en /etc/init.d/pp-wifiguardian.sh
Ahora hecemos que lo ejecute el demonio cron
para ello editamos el archivo /etc/crontab indicando la frecuencia que queramos que se ejecute. Como agregar tareas al Cron de Linux
Cada minuto (solo para probar ...)
Cada hora, con esto creo que es suficiente control ...
pero si quisieramos que se ejecute cada media hora:
y reiniciamos cron
#/etc/init.d/cron restart
Para ver que se esta ejecutando correctamente y a su hora podemos consultar syslog
micra:~# tail /var/log/syslog
Nov 21 20:23:01 micra /USR/SBIN/CRON[5735]: (root) CMD ( /etc/init.d/pp-wifiguardian.sh > /dev/null^I)
Nov 21 20:24:01 micra /USR/SBIN/CRON[5743]: (root) CMD ( /etc/init.d/pp-wifiguardian.sh > /dev/null^I)
Nov 21 20:25:01 micra /USR/SBIN/CRON[5752]: (root) CMD ( /etc/init.d/pp-wifiguardian.sh > /dev/null^I)
Nov 21 20:26:01 micra /USR/SBIN/CRON[5760]: (root) CMD ( /etc/init.d/pp-wifiguardian.sh > /dev/null^I)
Ref:.
cron (Unix)
En un servidor sin teclado ni pantalla esto es un problema ya que se pierde la conexion totalmente y no hay manera de acceder.
He hecho un sencillo script que comprueba la conexion a internet y reconfigura la conexion wifi si esta caida.
Hace un ping a www.google.com, y si NO hay respuesta reinicia las red y deja una entrada en un log de seguimeinto.
El script:
#!/bin/bash
PING=`ping -c 1 www.google.com|grep "64 bytes from"`
if [ -z "$PING" ]
then
/etc/init.d/networking restart
echo "Network restart on date" >> /var/log/pp-wifiguardian.log
date >> /var/log/pp-wifiguardian.log
fi
PING=`ping -c 1 www.google.com|grep "64 bytes from"`
if [ -z "$PING" ]
then
/etc/init.d/networking restart
echo "Network restart on date" >> /var/log/pp-wifiguardian.log
date >> /var/log/pp-wifiguardian.log
fi
Lo he puesto en /etc/init.d/pp-wifiguardian.sh
Ahora hecemos que lo ejecute el demonio cron
para ello editamos el archivo /etc/crontab indicando la frecuencia que queramos que se ejecute. Como agregar tareas al Cron de Linux
Cada minuto (solo para probar ...)
# m h dom mon dow user command
* * * * * root /etc/init.d/pp-wifiguardian.sh > /dev/null
* * * * * root /etc/init.d/pp-wifiguardian.sh > /dev/null
Cada hora, con esto creo que es suficiente control ...
# m h dom mon dow user command
0 * * * * root /etc/init.d/pp-wifiguardian.sh > /dev/null
0 * * * * root /etc/init.d/pp-wifiguardian.sh > /dev/null
pero si quisieramos que se ejecute cada media hora:
# m h dom mon dow user command
0,30 * * * * root /etc/init.d/pp-wifiguardian.sh > /dev/null
0,30 * * * * root /etc/init.d/pp-wifiguardian.sh > /dev/null
y reiniciamos cron
#/etc/init.d/cron restart
Para ver que se esta ejecutando correctamente y a su hora podemos consultar syslog
micra:~# tail /var/log/syslog
Nov 21 20:23:01 micra /USR/SBIN/CRON[5735]: (root) CMD ( /etc/init.d/pp-wifiguardian.sh > /dev/null^I)
Nov 21 20:24:01 micra /USR/SBIN/CRON[5743]: (root) CMD ( /etc/init.d/pp-wifiguardian.sh > /dev/null^I)
Nov 21 20:25:01 micra /USR/SBIN/CRON[5752]: (root) CMD ( /etc/init.d/pp-wifiguardian.sh > /dev/null^I)
Nov 21 20:26:01 micra /USR/SBIN/CRON[5760]: (root) CMD ( /etc/init.d/pp-wifiguardian.sh > /dev/null^I)
Ref:.
cron (Unix)
19 de noviembre de 2009
Debian Lenny webcam server con motion
Objetivo: Instalar la webcam Trust en micra y un servidor web para acceder remotamente:
Buscamos la cámara en la web del proyecto microdia:
http://groups.google.com/group/microdia/web/project-status?pli=1
genial!!!, está y ademas la pone como muy buena!!!
Habra que compilar los modulos ya que no estan en el kernel instalado por defecto en Lenny.
Este tutorial tiene buena pinta:
http://doc.ubuntu-es.org/Instalar_c%C3%A1maras_Microdia
1) Instalando paquetes requeridos:
2)Descargamos el codigo fuente del repositorio:
#git clone http://repo.or.cz/r/microdia.git
3) Compilando el modulo
Eliminamos los simbolos de depuración,
#strip -g sn9c20x.ko
4) Copiamos los modulos al directorio de modulos del nucleo:
#cp sn9c20x.ko /lib/modules/$(uname -r)/kernel/drivers/media/video/usbvideo/
5) Se rehacen las dependencias de modulos y... se carga el modulo:#lsmod
#depmod -a #modprobe sn9c20x
6)Comprobamos que se ha cargado:
Ok!, ahí lo tenemos.
7) Lo añadimos a /etc/modules para que se cargue el booting:
Motion es un programa que detecta movimiento pudiendo configurar la captura de imagenes, video que ejecute un determinado comando. Tambine se puede usar solo como servidor de imagenes via web, inactivado la grabacion.
8) Instalamos motion:
y ahora lo configuramos editando el archivo /etc/motion/motion.conf
micra:~# lsusb
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 004: ID 0c45:624e Microdia PC Camera (SN9C201 + SOI968)
Bus 001 Device 002: ID 18e8:6238 Qcom
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 004: ID 0c45:624e Microdia PC Camera (SN9C201 + SOI968)
Bus 001 Device 002: ID 18e8:6238 Qcom
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Buscamos la cámara en la web del proyecto microdia:
http://groups.google.com/group/microdia/web/project-status?pli=1
genial!!!, está y ademas la pone como muy buena!!!
Habra que compilar los modulos ya que no estan en el kernel instalado por defecto en Lenny.
Este tutorial tiene buena pinta:
http://doc.ubuntu-es.org/Instalar_c%C3%A1maras_Microdia
1) Instalando paquetes requeridos:
#apt-get install build-essential linux-headers-$(uname -r) git-core curl
2)Descargamos el codigo fuente del repositorio:
#git clone http://repo.or.cz/r/microdia.git
3) Compilando el modulo
#cd microdia #make ... ... make: ctags: No se encontró el programa
make: *** [ctags] Error 127
ok!, aparece este error ya que todavia no esta el modulo en su sitio.make: *** [ctags] Error 127
Eliminamos los simbolos de depuración,
#strip -g sn9c20x.ko
4) Copiamos los modulos al directorio de modulos del nucleo:
#cp sn9c20x.ko /lib/modules/$(uname -r)/kernel/drivers/media/video/usbvideo/
5) Se rehacen las dependencias de modulos y... se carga el modulo:#lsmod
#depmod -a #modprobe sn9c20x
6)Comprobamos que se ha cargado:
# lsmod
Module Size Used by
sn9c20x 66196 0
videodev 27392 1 sn9c20x v4l1_compat 12292 1 videodev usbhid 35712 0
Module Size Used by
sn9c20x 66196 0
videodev 27392 1 sn9c20x v4l1_compat 12292 1 videodev usbhid 35712 0
... ... ...
Ok!, ahí lo tenemos.
7) Lo añadimos a /etc/modules para que se cargue el booting:
#nano /etc/modules
sn9c20x
sn9c20x
Motion es un programa que detecta movimiento pudiendo configurar la captura de imagenes, video que ejecute un determinado comando. Tambine se puede usar solo como servidor de imagenes via web, inactivado la grabacion.
8) Instalamos motion:
#aptitude install motion
y ahora lo configuramos editando el archivo /etc/motion/motion.conf
16 de noviembre de 2009
ajaxterm con https en lenny mediante proxy con apache2
Una opción muy interesante es tener acceso a nuestro servidos desde cualquier parte.
Y en cualquier parte hay un navegador web y los puertos http/https abiertos.
Howto para Debian 5.0 Lenny:
1) En el equipo debe estar instalado openssl y apache2
2) Instalamos el paquete ajaxterm
# apt-get install ajaxterm
Configuramos SSL
3) Copiar el fichero de configuracion ssl
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
4) Crear los certificador para https apache2
# mkdir /etc/apache2/ssl
# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
Activamos modulo ssl
# a2enmod ssl
5) Crear el usuario y password para htpasswd
# mkdir /srv/ajaxterm
# htpasswd -bc /srv/ajaxterm/.htpasswd [user] [pass]
Ajaxterm trabaja por defecto en el puerto 8022, lo redirigimos al https 443 mediante un proxi configurado en apache2
4) Crear los enlaces simbolicos para activas los modulos proxy de apache2
# ln -s /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enabled/proxy.conf
# ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load
# ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load
6)Editamos el fichero de configuración apache2, añadiendo al final del fichhero:
#/etc/init.d/apache2 restart
#/etc/init.d/ajaxterm restart
7) acceder a la ajaxterm consola con https://dir.maquina desde cualquier navegador.
En firefox da una advertencia de seguridad por el certificado desconocido.
WebReferences:
http://mewbies.com/how_to_install_ajaxterm_tutorial.htm
https://help.ubuntu.com/community/AjaxTerm
http://www.linuxtotal.com.mx/index.php?cont=info_seyre_001
http://wiki.kartbuilding.net/index.php/Ajaxterm
Y en cualquier parte hay un navegador web y los puertos http/https abiertos.
Howto para Debian 5.0 Lenny:
1) En el equipo debe estar instalado openssl y apache2
2) Instalamos el paquete ajaxterm
# apt-get install ajaxterm
Configuramos SSL
3) Copiar el fichero de configuracion ssl
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
4) Crear los certificador para https apache2
# mkdir /etc/apache2/ssl
# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
Activamos modulo ssl
# a2enmod ssl
5) Crear el usuario y password para htpasswd
# mkdir /srv/ajaxterm
# htpasswd -bc /srv/ajaxterm/.htpasswd [user] [pass]
Ajaxterm trabaja por defecto en el puerto 8022, lo redirigimos al https 443 mediante un proxi configurado en apache2
4) Crear los enlaces simbolicos para activas los modulos proxy de apache2
# ln -s /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enabled/proxy.conf
# ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load
# ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load
6)Editamos el fichero de configuración apache2, añadiendo al final del fichhero:
#nano -w /etc/apache2/sites-enabled/000-default6) Reiniciamos apache2 y ajaxterm
#/etc/init.d/apache2 restart
#/etc/init.d/ajaxterm restart
7) acceder a la ajaxterm consola con https://dir.maquina desde cualquier navegador.
En firefox da una advertencia de seguridad por el certificado desconocido.
WebReferences:
http://mewbies.com/how_to_install_ajaxterm_tutorial.htm
https://help.ubuntu.com/community/AjaxTerm
http://www.linuxtotal.com.mx/index.php?cont=info_seyre_001
http://wiki.kartbuilding.net/index.php/Ajaxterm
14 de noviembre de 2009
Bridge eth0-wlan0 en debian micra
La idea es hacer un bridge de la siguiente forma:
( ( internet ) )__[router01]¡-(wep)---wifi---¡[micra]___ eth _[router02]¡(open)
De modo que los equipos que se conecten a la wifi open del router 2 tengan aceso a internet.
Para ello hay que configurar un bridge (br0) entre eth0 y wlan0 en micra
1) Instalar paquetes para bridges
#aptitude install bridge-utils
2) Activamos ip-forwarding
#echo 1 > /proc/sys/net/ipv4/ip_forward
de forma auto al arranque:
#nano /etc/sysctl.conf
net.ipv4.ip_forward=1
3) Configuracion archivo /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 0.0.0.0
netmask 255.255.255.0
gateway 192.168.1.1
auto wlan0
iface wlan0 inet static
address 0.0.0.0
netmask 255.255.255.0
gateway 192.168.1.1
wireless_essid XXXXX
wireless_key s:XXXXXXXXXXXXX
auto br0
iface br0 inet static
address 192.168.1.53
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 127.0.0.1 80.58.61.250
bridge_ports eth0 wlan0
bridge_stp on
bridge_maxwait 5
4) Restars network
#/etc/init.d/networking restart
5) Me conecto a [router02]
Los interfaces br0, etho y wlan0 estan bien configurados
!!!! pero me conecta con el [router01] ni con internet ??
6) Compruebo los modulos del kernel para bridge:
#modconf
... menus ... ...
/kernel/net/bridge
... no funciona, solo "ve" la parte alambrica eth del bridge
Lo cierto es que he intentado hacer este tipo de puentes de red eth-wifi(encriptada con WEP) varias veces sin conseguirlo ...???!!
13 de noviembre de 2009
Samba setup howto
Ok, este sencillo howto para instalr un servidor samba funciona en debian 5.0, Lenny.
Permitiendo el acceso desde equipos windows con usuario y contraseña.
1) Instalamos paquetes necesarios:
Nos pedira el workgroup
antivar WINS con DHCP: no
y ejecutará los demonios samba: smbd y nmbd
2) Creamos usuario, su password y directorio a compartir, .
3) Editamos el archivo de configuración samba:
#nano /etc/samba/smb.conf
4) Reinicio del servdor samba:
/etc/init.d/samba restart
5) Para comprobar si todo está correcto:
5) smbclient -L localhost
y a probar desde un equipo windows.
6) webografia:
http://www.debianadmin.com/file-server-configuration-in-debian-using-samba.html
Permitiendo el acceso desde equipos windows con usuario y contraseña.
1) Instalamos paquetes necesarios:
#aptitude install samba samba-common samba-client
Nos pedira el workgroup
antivar WINS con DHCP: no
y ejecutará los demonios samba: smbd y nmbd
2) Creamos usuario, su password y directorio a compartir, .
#useradd samba
#smbpasswd -a samba
#mkdir /home/samba
3) Editamos el archivo de configuración samba:
#nano /etc/samba/smb.conf
[SAMBA]
path=/home/samba
browseable=yes
writeable=yes
valid user = samba
4) Reinicio del servdor samba:
/etc/init.d/samba restart
5) Para comprobar si todo está correcto:
# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[SAMBA]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
server string = %h server
obey pam restrictions = Yes
passdb backend = tdbsam
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d
[homes]
comment = Home Directories
valid users = %S
create mask = 0700
directory mask = 0700
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
[SAMBA]
path = /home/samba
valid users = samba
read only = No
5) smbclient -L localhost
y a probar desde un equipo windows.
6) webografia:
http://www.debianadmin.com/file-server-configuration-in-debian-using-samba.html
12 de noviembre de 2009
rt73 wifi modules 01
El fitPC-Slim tiene wifi chipset rt73.
En Debian hay diferentes versiones de modulos para esta wifiUSB.
http://wiki.debian.org/WiFi/rt73
http://rt2x00.serialmonkey.com/wiki/index.php/Main_Page
En el sistema Ubuntu que viene preinstalado en el equipo tiene los modulos:
#lsmod|grep rt73
rt73
usbcore
En la instalacion de Debian 5.0 Lenny, tengo instalados:
#lsmod|grep rt73
rt73usb
crc_itu_t
rt2x00usb
rt2x00lib
firmware_class
Con esta configuración funciona la wifi en lenny aunque da un error del kernel:
/var/log/messages
micra kernel: [ 577.751916] __ratelimit: 1 messages suppressed
...que no parece tener más complicación que llenar los logs de basurilla.
Update: Este problema se soluciona recopilando el kernel del 2.6.26 al 2.6.32.3
Y ademas:
No funciona modo master (!!!)
No funciona bridge wlan0 - eth0 (!!!)
En Debian hay diferentes versiones de modulos para esta wifiUSB.
http://wiki.debian.org/WiFi/rt73
http://rt2x00.serialmonkey.com/wiki/index.php/Main_Page
En el sistema Ubuntu que viene preinstalado en el equipo tiene los modulos:
#lsmod|grep rt73
rt73
usbcore
En la instalacion de Debian 5.0 Lenny, tengo instalados:
#lsmod|grep rt73
rt73usb
crc_itu_t
rt2x00usb
rt2x00lib
firmware_class
Con esta configuración funciona la wifi en lenny aunque da un error del kernel:
/var/log/messages
micra kernel: [ 577.751916] __ratelimit: 1 messages suppressed
...que no parece tener más complicación que llenar los logs de basurilla.
Update: Este problema se soluciona recopilando el kernel del 2.6.26 al 2.6.32.3
Y ademas:
No funciona modo master (!!!)
No funciona bridge wlan0 - eth0 (!!!)
11 de noviembre de 2009
micra Server
Cansado de gastar watios de electricidad y del zumbido de los ventiladores me decido a probar un micropc sin ventiladores y 8watios de consumo: ftpPC-Slim
La idea es configurar un micro servidor doméstico con linux:
La idea es configurar un micro servidor doméstico con linux:
- Debian lenny 5.0
- servidor web: Apache2
- servidor DNS cache: Bind9
- servidor sql: Postgresql 8.3
- Php5
- servidor ssh2
- servidor sftp
- servidor vnc4
- servidor dhcp3
- firewall: iptables
- servidor Samba
- X11 con lxde
- ... y más cosas que se me iran ocurriendo
- AMD geode LX800 500Mhz
- 512 MB Ram
- HD 2,5" de 60GB intercambiable.
- 3 usb 2.0
- 1 ethernet 100Mbt
- wifi 802.11b/g 54Mbs
Suscribirse a:
Entradas (Atom)