amule en servidor – amuled, amulecmd y amuleweb en Raspberry Pi

amulecmd
amulecmd en una terminal conectada por ssh a la Raspberry Pi.

Por la noche es un momento ideal para poner a bajar en el Amule (el Emule de Linux) Juego de Tronos. Podemos aprovechar todo el ancho de banda sin perjudicar la calidad de navegación de la red y por la mañana tendremos todo bajadito y listo en el disco duro. Lo malo es dejar el Amule funcionando toda la noche y tener que aguantar el molesto ruido del ventilador del pc.

Por eso, una excelente solución, es correr la versión de Amule en consola, amuled (de amule daemon), que funciona como demonio sin tener que tener abierto el Amule y poder correrlo en algo tan silencioso como nuestra Raspberry Pi, que como no tiene ventilador es silenciosa y discreta.

Vamos allá. Tenemos una Raspberry (da igual el modelo) y podemos conectarnos a ella mediante ssh sin problema. Pues nos conectamos en un terminal a la Pi e instalamos el amule de consola:

sudo apt-get install amule-daemon

luego lanzamos el demonio para que cree los ficheros de configuración básicos, aunque no funcionará hasta que los modifiquemos nosotros. En el caso de que ya tuviésemos instalado el Amule normal estos ficheros ya están creados.

Puedes hacer un control+c para que cierre el proceso pero ya tendremos unos archivos para configurar.

Hacemos ls -a en nuestra home de la Pi para ver si tenemos un directorio .aMule y entramos en él:

ls -a

cd .aMule

aquí está el fichero de configuración amule.conf

Hay que tener en cuenta que este es el fichero de configuración general del Amule. En mi caso, como ya tenía instalado el Amule normal, con su GUI, pues ya está configurado con todos los datos de puertos abiertos en el router, las rutas de las carpetas de descargas, etc. Tal vez un buen truco para configurar fácilmente todo eso si no se quiere hacerlo directamente en el amule.conf es abrir el Amule normal vía ssh gráfico y configurarlo en él.

El caso es que aquí sólo añadiré los cambios que necesitamos para que funcione amuled. Serían estos:

primero hay que crear una contraseña de seguridad para poder trabajar con el amuled, se hace así:

echo -n contraseña | md5sum

Donde «contraseña» es la que tú pongas. La consola te responderá con una clave alfanumérica que es mejor copiar en un documento de texto aparte. Algo tipo «d41d8cd98f00b204e9800998ecf8427e –«

editamos el fichero amule.conf

nano amule.conf

buscamos «AcceptExternalConnections=»

cambiamos aceptar conexiones externas de 0 a 1.

AcceptExternalConnections=1

buscamos «ECPassword=» ahí es donde tenemos que copiar el código de antes, así:

ECPassword=d41d8cd98f00b204e9800998ecf8427e

(atención, NO copiar el espacio ni el guión que nos dio antes la consola)

un campo más a cambiar es «Password=»

Password=contraseña

(aquí la contraseña normal que pusimos al crear el código alfanumérico)

y ya de paso vamos a añadir también la configuración para poder usar la interfaz web que explico al final:

[WebServer]
Enabled=1
Port=4711

aquí autorizo a usar la interfaz web en ese puerto.

Y ya está, podemos guardar las modificaciones y salir de nano

control+o
control+x

para poder usarlo hay que arrancar el demonio así:

amuled &

(le ha colocado la «&» después para que lo ejecute en segundo plano y libere la terminal, porque si no, esa terminal se queda abierta ligada al proceso.)

Ahora que ya está funcionando el demonio podemos ejecutar el programa de control de Amule por consola:

amulecmd

vemos que responde:

***************************

This is amulecmd 2.3.1

Creating client...
Succeeded! Connection established to aMule 2.3.1

---------------------------------------
| aMule text client |
---------------------------------------

Use 'Help' for command list

aMulecmd$

***************************

pues ya estamos dentro, podemos teclear un help para conocer los comandos.

Lo básico es esto:

buscar:
search global juego de tronos 6×01

ver los resultados de búsqueda:

results

lo que nos muestra los resultados de búsqueda con un número delante

descargar lo que queramos:

download [el número que sea]

ver lo que se está descargando:

show dl

Se puede pausar, cambiar prioridades de descarga, etc, etc, te dejo a ti que investigues un poco.

***************************

Otra posibilidad, es manejar amuled mediante una interfaz web con amuleweb

Recuerda que en el amule.conf ya autorizamos la interfaz web.

Así que ya puedes activar la interfaz web así:

amuleweb --write-config --host=localhost --password=contraseña --admin-pass=contraseña

amuleweb &

(recuerda que «contraseña» tiene que ser tu contraseña normal, la que pusiste en «Password=contraseña» del fichero amule.conf

Entonces, en el navegador de cualquier equipo de tu intranet, si pones:

http://192.168.0.15:4711 (suponiendo que 192.168.0.15 es la IP de la Raspberry con el puerto que habíamos autorizado, el 4711 es por defecto)

entrarás en la interfaz web de Amule, te pedirá tu contraseña y ya podrás usar la interfaz web que, como puedes ver en la imagen de abajo, es muy parecida a la GUI normal del Amule.

Pues espero que lo disfrutes y puedas bajar tus cositas del Amule sin las molestias de tener que dejar tu pc funcionando durante horas.

amuleweb
amuleweb, la interfaz web de amuled.

conectar a internet por wifi desde consola (wpa supplicant + DHCPCD)

fundamentos GNU/Linux fun-gnu


Siempre instalo GNU/Linux desde una conexión ethernet. Es más simple, rápido y lo único que hago es activar DHCP y este le asignará automáticamente una IP a la interfaz de red.

Más adelante, si instalo Gnome, este instala NetworkManager y la conexión wifi se convierte en algo banal.

El otro día, tras una nueva instalación de Gentoo, me negué a instalar Gnome, hice una minimalista instalación con i3, personalizada, simple, hermosa, rápida y perfecta. Y así mismo me negué a instalar NetworkManager.

Así que me dije, es el momento de conectar a internet por wifi desde la consola o un terminal.

Esto se puede hacer de diferentes formas, pero la que describo es muy sencilla y pensada para que tu ordenador se conecte automáticamente siempre a TU wifi, sin hacer nada ni preguntarte nada. No está pensada para cambiar de conexión wifi, eso se hace de otra manera que algún día contaré.

Vamos allá:

Se instala el paquete «wpa supplicant»:

sudo apt install wpasupplicant
sudo pacman -S wpa_supplicant
sudo emerge wpa_supplicant

Para Debian, Arch y Gentoo, respectivamente.

En un terminal se utiliza wpa_passphrase para generar los datos de conexión adecuados:

wpa_passphrase nombre-de-tu-wifi frase-contraseña

lo que genera algo así adaptado a tus datos:

*************************************************************

network={
ssid=»nombre-de-tu-wifi»
#psk=»frase-contraseña»
psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}

*************************************************************
editamos el archivo wpa_supplicant.conf

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Y copiamos el resultado de wpa_passphrase más la autorización de wpa_supplicant para el grupo wheel.

O sea, algo similar a todo esto:

*************************************************************

# Allow users in the ‘wheel’ group to control wpa_supplicant
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel

# Make this file writable for wpa_gui
update_config=1

network={
ssid=»nombre-de-tu-wifi»
#psk=»frase-contraseña»
psk=f5d1c49e15e679bebe385c37648d4141bc5c9297796a8a185d7bc5ac62f954e3
}

*************************************************************

Lógicamente, tu usuario debe pertenecer el grupo wheel (el mismo de sudo).

Miras si estás en el grupo wheel:

groups pepito

Si no perteneces a wheel te añades así:

sudo usermod -a -G wheel pepito

Y ya casi está. Para que DHCP le asigne una IP al arranque hace falta que DHCPCD arranque al inicio:

Le decimos a Systemd que inicie DHCPDC en cada arranque del sistema.

sudo systemctl enable dhcpcd

No es necesario añadir wpa_supplicant al inicio, pues DHCPDC buscará automáticamente si hay un fichero /etc/wpa_supplicant/wpa_supplicant.conf válido, y si lo hay conectará la interfaz wifi a esa red con esa contraseña.

Y ya está, rebootea, arranca y comprueba con ifconfig que la interfaz wifi tiene asignada una IP.

Este es el resultado de mi ifconfig:

*************************************************************

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.8 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fdf4:8e92:3d68:8400:2f2e:90d9:4dd8:faea prefixlen 64 scopeid 0x0<global>
inet6 fe80::4641:ce9d:3f9f:4268 prefixlen 64 scopeid 0x20<link>
ether 74:d0:2b:1e:3a:1d txqueuelen 1000 (Ethernet)
RX packets 9590 bytes 7058517 (6.7 MiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 8932 bytes 1072214 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.3 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fdf4:8e92:3d68:8400:51b6:4f49:48df:7e88 prefixlen 64 scopeid 0x0<global>
inet6 fe80::a79b:2de:a75f:c590 prefixlen 64 scopeid 0x20<link>
ether 48:d2:24:75:4b:c7 txqueuelen 1000 (Ethernet)
RX packets 154 bytes 37043 (36.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14 bytes 1820 (1.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

*************************************************************

DHCPCD le ha asignado la IP 10.0.0.8 a la interfaz de red ethernet (enp3s0) y
la IP 10.0.0.3 a la interfaz de red wifi (wlp2s0).

Por lo que tendré siempre conexión a mi wifi y, por tanto a internet, aunque desenchufe el cable de red  ;-P

He probado esto en Gentoo y en Arch y funciona sin problema, y de la misma forma debería funcionar en cualquier otra distro LINUX.

conectar a Internet por consola (ethernet) (cualquier distro)

fundamentos GNU/Linux fun-gnu


linux_network

 

 

 

 

Comprobar el controlador del dispositivo de red:

lspci -k
02:00.0 Network controller: Intel Corporation Centrino Wireless-N 1000 [Condor Peak]
Subsystem: Intel Corporation Centrino Wireless-N 1000 BGN
Kernel driver in use: iwlwifi
Kernel modules: iwlwifi
44:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8072 PCI-E Gigabit Ethernet Controller (rev 10)
Subsystem: Hewlett-Packard Company Device 3072
Kernel driver in use: sky2
Kernel modules: sky2

lspci -v (muestra más información)

*****************************************************
en el arranque, udev detecta y carga automáticamente el controlador de la tarjeta de red. Si no lo hiciera, siempre podemos cargarlo manualmente.

podemos ver los controladores disponibles:

lsmod

los controladores están aquí:

/lib/modules/nombre_del_kernel/

para cargar manualmente un controlador:

sudo modprobe sky2 (el controlador ethernet, en el caso de arriba)

sudo modprobe iwlwifi (el controlador wifi, en la caso de arriba)

*****************************************************

ver interfaces de red:

ls /sys/class/net (nombres de las interfaces de red)

ip link (interfaces de red)

ifconfig (interfaces de red, sus IP’s, direcciones MAC, etc)

route (se ven las interfaces que se estén usando, las demás no)
*****************************************************

Activación y desactivación de las interfaces de red:

sudo ip link set eth0 up
sudo ip link set eth0 down

Para comprobar el resultado:

ip addr show dev eth0

responde:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

donde lo importante es el UP, que significa que el dispositivo de red está funcionanado.

************************************************

Para conectarse a Internet por consola, lo más fácil es arrancar el servicio DHCP (que hará que el router asigne automáticamente una IP interna al equipo). Sólo hay que arrancar dhcpcd para un dispositivo de red determinado, por ejemplo eth0.

Ejecutar manualmente el demonio DHCP Client:

sudo dhcpcd eth0 (eth0 o el nombre de dispositivo de red que sea)

ip addr show dev eth0 (muestra su dirección de red)

Arrancar DHCP mediante systemd:

sudo systemctl start dhcpcd@eth0

Ejecutar DHCP para que se cargue en el arranque:

sudo systemctl enable dhcpcd@eth0

************************************************

Resumen:

para conectar a Internet por consola hace falta:

1. que el controlador del dispositivo de red esté cargado (lo suele cargar udev automáticamente)
2. saber qué nombre le ha asignado Linux al dispositivo de red (ip link o ifconfig te lo darán)
3. activar la inferfaz de red (ip link set eth0 up)
4. asignar el cliente DHCP (dhcpcd) a la insterfaz de red (dhcpcd eth0)
5. ya podemos comprobar si tenemos red/internet: ping -c 3 8.8.8.8 (le hacemos 3 ping’s al servidor de DNS de Google, por ejemplo, y vemos si responde).

Nota.- evidentemente también se puede conectar a Internet por wifi, pero es más trabajoso y eso merece una entrada aparte.