Retransmitir ethernet por wifi

La Nintendo Switch es una consola early access.

Como esta consolita tiene una mierda de recepción wifi, me fue imposible probar las betas online de algunos juegos, así que por no irme al lado del router busqué alguna manera rápida de retransmitir por wifi el internet del PC que me viene por cable (porque tampoco funciona el adaptador chino eth->USB que SÍ funciona en el tablet). Para ello usé mi tarjeta wifi externa USB conectada al PC.

El script en Windows para crear esta nueva red es:
netsh wlan set hostednetwork mode=allow ssid=Retransmision key=Contrasenya
netsh wlan start hostednetwork

Y para cerrar la retransmisión:
netsh wlan stop hostednetwork

No me acuerdo si tuve que editar algo más, pero ya lo investigarás tú si es así 😀

Convertir ogv a mp4

Ahora que estoy haciendo los videotutoriales para www.ultimateraspbian.com necesito grabar la pantalla en linux, así que uso recordmydesktop. Pero este programa graba en .ogv y eso no me lo lee ni avidemux (linux) ni virtualdub(windows), así que tengo que convertir a mp4 con el siguiente comando:
ffmpeg -y -i archivo.ogv -sameq -s 1920x1040 -r 15 -b 2M -bt 4M -vcodec libx264 -threads 8 -an -f mp4 salida.mp4/code>

He necesitado también instalar el codec libx264 con el comando
sudo apt-get install libavcodec-extra-53

Fuente: http://www.youtube.com/watch?v=mR9GuNpbWl4

Script de notificacion mail

Cuando tenia el otro movil me solia activar bluetooth para notificarme con mensajes ciertos eventos importantes, como cuando logea Angela o cuando habia tareas interesantes en el trabajo. Ahora con el nuevo movil como tengo internet everywhere 😀 he pensado que seria mejor tener notificaciones por mail. Se ejecuta pasandole por parametro el mensaje que se quiere enviar. Primero se prueba a enviar un txt con dicho mensaje por bluetooth a una MAC concreta por un canal concreto, y si falla se envia por mail a user@mail.con con el subject Notify. Lo malo es que la notificacion por mail tarda mucho… si no recuerdo mal de 2 a 3min ya que el movil no esta cada segundo monitorizando si tiene mail y el propio programa tarda mucho en enviar el mail. Tuve que editar la configuracion de sendmail y poner el smtp de gmail que es donde envio notificaciones… Por ahora no he encontrado ninguna utilidad a esta notificacion por mail XDDD

#!/bin/bash

#Enviamos notificacion por bluetooth
echo $1 > ~/mensaje.txt
obexftp -b 00:00:00:00:00:00 -B 12 -p ~/mensaje.txt

#Si falla la enviamos por mail
if [ $? != 0 ]; then
echo $1 | mail -s "Notify" user@mail.com
fi

Ampliacion iptables

El otro dia me dio por poner firewall mas serio con iptables. Ya que usaba iptables para enrutar la conexion haciendo de router lo aproveche para tambien poner politicas a drop y aceptar solo algunas concretas… La info la saque de alguna web, copie lineas y adapte a mi iptables. No se si realmente funciona el firewall pero esto es lo que tengo ahora ^^U


#### SCRIPT DE CONFIGURACION DE IPTABLES ####
#!/bin/bash

# Dispositivo de red de internet
EXIF=»eth3″
# Dispositivo de red local
INIF=»CASA»

fail=0

[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

log_begin_msg «Aplicando Reglas de Firewall…»

## Borrado de reglas anteriores
iptables -F || fail=1
iptables -X || fail=1
iptables -Z || fail=1
iptables -t nat -F || fail=1

## Establecemos politica por defecto
iptables -P INPUT DROP || fail=1
iptables -P OUTPUT DROP || fail=1
iptables -P FORWARD DROP || fail=1
iptables -t nat -P PREROUTING ACCEPT || fail=1
iptables -t nat -P POSTROUTING ACCEPT || fail=1

# Marcar paquetes salientes con su ip de origen
iptables -t nat -A POSTROUTING -o $EXIF -j MASQUERADE || fail=1

############################SCRIPT NUEVO############################
# Deshabilitar broadcast
echo «1» > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts || fail=1

# Deshabilitar la redirección del ping
echo «0» > /proc/sys/net/ipv4/conf/all/accept_redirects || fail=1

# Registrar los accesos extraños, paquetes falseados, etc..
echo «1» > /proc/sys/net/ipv4/conf/all/log_martians || fail=1

# Anti-flooding o inundación de tramas SYN.
iptables -N syn-flood || fail=1
iptables -A INPUT -i $INIF -p tcp –syn -j syn-flood || fail=1
iptables -A syn-flood -m limit –limit 1/s –limit-burst 4 -j RETURN || fail=1
iptables -A syn-flood -j DROP || fail=1

# Guardar los accesos con paquetes fragmentados, recurso utilizado para tirar
# servidores y otras maldades (bug en Apache por ejemplo)
iptables -A INPUT -i $INIF -f -j LOG –log-prefix «Fragmento! » || fail=1
iptables -A INPUT -i $INIF -f -j DROP || fail=1
############################SCRIPT NUEVO############################

# Reenvio de IP
echo 1 > /proc/sys/net/ipv4/ip_forward || fail=1

# Aceptar paquetes para reenviar procedentes de la red local
iptables -A FORWARD -i $INIF -o $EXIF -j ACCEPT || fail=1

# Aceptar paquetes para reenviar procedentes de internet de conexiones ya establecidas
iptables -A FORWARD -i $EXIF -o $INIF -m state –state RELATED,ESTABLISHED -j ACCEPT || fail=1

############################SCRIPT NUEVO############################
# Operar en localhost sin limitaciones
iptables -A INPUT -i lo -j ACCEPT || fail=1
iptables -A OUTPUT -o lo -j ACCEPT || fail=1

# Permitimos que la maquina pueda salir a la web
iptables -A INPUT -p tcp -m tcp –sport 80 -m state –state RELATED,ESTABLISHED -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –dport 80 -j ACCEPT || fail=1

# Y tambien a webs seguras
iptables -A INPUT -p tcp -m tcp –sport 443 -m state –state RELATED,ESTABLISHED -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –dport 443 -j ACCEPT || fail=1

# Reglas necesarias para FTP pasivo y activo y SSH. Se permiten conexiones entrantes YA establecidas
iptables -A INPUT -p tcp -m tcp –sport 20:22 -m state –state RELATED,ESTABLISHED -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –dport 20:22 -j ACCEPT || fail=1
iptables -A INPUT -p tcp -m tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –dport 1024:65535 -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT || fail=1

# Permitimos la consulta a un primer DNS
iptables -A INPUT -s 62.42.63.52 -p udp -m udp –sport 53 -j ACCEPT || fail=1
iptables -A OUTPUT -d 62.42.63.52 -p udp -m udp –dport 53 -j ACCEPT || fail=1

#Ahora para el amsn
iptables -A INPUT -p tcp -m tcp –dport 6891:6895 -j ACCEPT || fail=1
iptables -A OUTPUT -p tcp -m tcp –sport 6891:6895 -j ACCEPT || fail=1

# Barrera de backup por si cambiamos a modo ACCEPT temporalmente
# Con esto protegemos los puertos reservados y otros well-known
iptables -A INPUT -p tcp -m tcp –dport 1:1024 -j DROP || fail=1
iptables -A INPUT -p udp -m udp –dport 1:1024 -j DROP || fail=1
iptables -A INPUT -p tcp -m tcp –dport 1723 -j DROP || fail=1
iptables -A INPUT -p tcp -m tcp –dport 3306 -j DROP || fail=1
iptables -A INPUT -p tcp -m tcp –dport 5432 -j DROP || fail=1
############################SCRIPT NUEVO############################

# Se muestran los resultados
log_end_msg $fail

if [ $fail -eq 0 ]
then
log_success_msg «Verifique que lo que se aplica con: iptables -L -n.»
else
log_warning_msg «Se ha producido un error al aplicar alguna de las reglas»
fi

#### FIN SCRIPT DE CONFIGURACION DE IPTABLES ####

Renombrar archivos

Ha llegado la hora de limpiar los pcs T_T Por ahora empiezo por lo facil, el portatil 😀 Revisando para guardar cosas he encontrado este script que creo que hice para mi padre, pero al final no lo usó.
Creo que simplemente accedia a una carpeta e iba renombrando todos los archivos al numero del contador
Creo que primero renombra los archivos de 1 a X sin añadir ceros a la izquierda, y luego cuando sabe el numero total de archivos los deja bien como: 001.jpg, 002.jpg, … 101.jpg
Lo hice rapido y mal, ahora que lo reviso se me ocurren formas mejores de hacerlo, y no se para que puede servir XD
@Ubuntu 9.04 y bash
Uso: ./script carpeta


#!/bin/bash
cd $1
j=1
for i in *
do
echo $i $j
mv «$i» $j
let j+=1
done
let j=j-1
k=1
for i in `seq -w 1 $j`
do
echo $k $i
mv «$k» $i
let k+=1
done

Scripts de iptables para enrutar conexion

Scripts de iptables y puente para el caso concreto de mi casa xD
Un modem-router se conecta por USB a mi pc y le da internet. Mi pc tiene dos tarjetas de red y crea un puente entre las dos interfaces. Luego enruta la conexion del modem al puente. Asi tengo internet en este pc y en 2 mas que se conecten por red.
@Ubuntu 9.04 y bash

Script para crear el puente:

#Creando bridge
brctl addbr CASA
brctl addif CASA eth0
brctl addif CASA eth1
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
ifconfig CASA 192.168.0.10

Script de configuracion iptables para enrutar la conexion:

#### SCRIPT DE CONFIGURACION DE IPTABLES ####
#!/bin/bash

# Dispositivo de red de internet
EXIF="eth3"
# Dispositivo de red local
INIF="CASA"

fail=0

[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

log_begin_msg "Aplicando Reglas de Firewall..."

## Borrado de reglas anteriores
iptables -F || fail=1
iptables -X || fail=1
iptables -Z || fail=1
iptables -t nat -F || fail=1

## Establecemos politica por defecto
iptables -P INPUT ACCEPT || fail=1
iptables -P OUTPUT ACCEPT || fail=1
iptables -P FORWARD DROP || fail=1
iptables -t nat -P PREROUTING ACCEPT || fail=1
iptables -t nat -P POSTROUTING ACCEPT || fail=1

# Marcar paquetes salientes con su ip de origen
iptables -t nat -A POSTROUTING -o $EXIF -j MASQUERADE || fail=1
# Reenvio de IP
echo 1 > /proc/sys/net/ipv4/ip_forward || fail=1

# Aceptar paquetes para reenviar procedentes de la red local
iptables -A FORWARD -i $INIF -o $EXIF -j ACCEPT || fail=1
# Aceptar paquetes para reenviar procedentes de internet de conexiones ya establecidas
iptables -A FORWARD -i $EXIF -o $INIF -m state --state RELATED,ESTABLISHED -j ACCEPT || fail=1

# Se muestran los resultados
log_end_msg $fail

if [ $fail -eq 0 ]
then
log_success_msg "Verifique que lo que se aplica con: iptables -L -n."
else
log_warning_msg "Se ha producido un error al aplicar alguna de las reglas"
fi

#### FIN SCRIPT DE CONFIGURACION DE IPTABLES ####

Script para codificar todos los archivos de una carpeta en mp4 psp

Script para codificar todos los archivos de una carpeta a mp4 en una subcarpeta llamada po. Se asume que no existen archivos no codificables XD

@Ubuntu 9.04 y bash

En cualquier directorio ejecutar en terminal. 29.97 fps, 320×240 res, 48kbps abitrate, 128kbps vbitrate, codec h264, contenedor mp4. Contenidos en la carpeta ./po/ xD El ffmpeg esta modificado para aceptar el codec x264, supongo que hoy en dia ya tendra soporte oficial.

echo Escribe el directorio
read DIR
cd $DIR
mkdir po
ACUM=0
for i in *; do ffmpeg -i "$i" -f psp -scodec x264 -r 29.97 -s 320x240 -vb 384000 -ar 48000 -ab 128000 po/"$ACUM".MP4 && (( ACUM += 1 )); done

Script para rellenar con 0 un pendrive

@Ubuntu 9.04 y bash

Ejecutar en cualquier directorio fuera del que se quiera rellenar. Se accedera a KINGSTON y se rellenara con 0. Creo que el 487 son los megas del pen, que era de 512.

#!/bin/bash
cd /media/KINGSTON/
for j in `seq 1 487`; do
{
mkdir $j
cd $j
for i in `seq 1 1024`; do echo
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
> $i; done
cd ..
}; done

Script para avisar de tareas URL y Review del trabajo

@Ubuntu 9.04, Firefox plugin (iMacro) y bash

Firefox abierto con la web del curro. Script iMacro:

REFRESH
WAIT SECONDS=5
SAVEAS TYPE=HTM FOLDER=* FILE=EWOQ
WAIT SECONDS=60

En la carpeta donde guarde iMacro el archivo EWOQ.htm ejecutar el script:

#!/bin/bash
enviado=0
contador=0

while [ true ]; do
#Hay tareas URL?
cat EWOQ.htm |grep -i «URL Rating» > /dev/null
if [ $? -eq 0 ] && [ $enviado -eq 0 ]; then
touch URL
date +%H:%M
echo «Hay URL!!»
obexftp -b 00:17:E6:9C:F9:30 -B 11 -p ./URL
rm URL
enviado=1
fi

#Hay tareas Review?
cat EWOQ.htm |grep -i «Review» > /dev/null
if [ $? -eq 0 ] && [ $enviado -eq 0 ]; then
touch Review
date +%H:%M
echo «Hay Review!!»
obexftp -b 00:17:E6:9C:F9:30 -B 11 -p ./Review
rm Review
enviado=1
fi

echo «Vaya mierda las side-by-side»

#Si han pasado 30 min poner enviado a 0 (para poder notificar otra vez)
if [ $contador -eq 29 ]; then
enviado=0
contador=0
fi

#Se comprueba el html cada 60 segundos, 60 veces en una hora (0-59)
sleep 60

#Incremento contadores
let contador=$contador+1
done