Control de brillo mediante script

22 May, 2016

En esta entrada contare como controlar el brillo desde teclado mediante un script.

Para comenzar tendremos que localizar el directorio donde están los ficheros de configuración del brillo, en mi caso esta en:

/sys/class/backlight/intel_backlight/

 

Este ultimo directorio puede variar según nuestra maquina.

Dentro encontraremos:

actual_brightness  bl_power  brightness  device  max_brightness  power	subsystem  type  uevent

Nos quedamos con max_brightness y brightness. En brightness encontramos el brillo a modificar y en max_brightness encontraremos el brillo máximo, es importante tener en cuenta este ultimo para el modificador ya que nos podemos encontrar desde 99 hasta 4882.

Para comenzar descargamos el script: https://github.com/Tedezed/Codigo-variado/tree/master/control_brillo

Modificamos el valor de la variable modificador a nuestro antojo y la ruta de los ficheros brightness y max_brightness.

subir_brillo.sh

#!/bin/sh

modificador=30

brillo=$(cat /sys/class/backlight/intel_backlight/brightness)
max_brillo=$(cat /sys/class/backlight/intel_backlight/max_brightness)
brillo=$(expr $brillo + $modificador)

if [ "$brillo" -lt "$max_brillo" ]; then
echo $brillo > /sys/class/backlight/intel_backlight/brightness
else
echo $max_brillo > /sys/class/backlight/intel_backlight/brightness
fi

bajar_brillo.sh

#!/bin/sh

modificador=30

brillo=$(cat /sys/class/backlight/intel_backlight/brightness)
max_brillo=$(cat /sys/class/backlight/intel_backlight/max_brightness)
brillo=$(expr $brillo - $modificador)

if [ 0 -lt "$brillo" ]; then
echo $brillo > /sys/class/backlight/intel_backlight/brightness
else
echo 0 > /sys/class/backlight/intel_backlight/brightness
fi

Para instalarlo ejecutamos el instalador:

sh install_root.sh

 

install_root.sh

#!/bin/sh
mkdir /usr/local/bin/control_brillo
cp subir_brillo.sh /usr/local/bin/control_brillo
cp bajar_brillo.sh /usr/local/bin/control_brillo
chmod 755 -R /usr/local/bin/control_brillo

Por ultimo añadimos un atajo de teclado, en Configuración -> teclado.

sudo sh /usr/local/bin/control_brillo/subir_brillo.sh

 

sudo sh /usr/local/bin/control_brillo/bajar_brillo.sh

 

Asociar VIP (Virtual IP) a IP flotante OpenStack

22 May, 2016

En esta entrada tratare un problemas al que muchos nos hemos enfrentado al montar un cluster Activo/Activo o Activo/Pasivo con VIP dentro de de OpenStack. El problema reside en que la VIP que asignas es normalmente de una subnet de neutron, para poder acceder a este recurso podremos acceder desde otra maquina virtual en la misma subnet o asociando la IP de la VIP a una IP flotante.

Para poder realizar la asociación correctamente necesitaremos; la VIP, id IP flotante, id port de la VIP.

En primer lugar listamos las redes con neutron, para consultar la id de la red

(cli-openstack)debian-user@debian:~/$ neutron net-list
+--------------------------------------+--------------------------+--------------------------------------------------+
| id                                   | name                     | subnets                                          |
+--------------------------------------+--------------------------+--------------------------------------------------+
| 9734556d-XXXX-XXXX-XXXX-fdad435fff18 | red de usuario.xxxx | 56693ca1-XXXX-XXXX-XXXX-ee8074bb13b1 10.0.0.0/24 |
| a86fc437-XXXX-XXXX-XXXX-f37a7b05537f | ext-net                  | 3c8cdfb0-XXXX-XXXX-XXXX-c6c3e228b81c             |
+--------------------------------------+--------------------------+--------------------------------------------------+

Creamos un puerto para la VIP neutron port-create {net-id} --fixed-ip ip_address={ip}

neutron port-create 9734556d-XXXX-XXXX-XXXX-fdad435fff18 --fixed-ip ip_address=10.0.0.38

Podremos ver el resultado con

(cli-openstack)debian-user@debian:~/Descargas$ neutron port-list | grep 10.0.0.38
2821603c-POPP-POPP-POPP-bd2349b29e63 | | fa:16:3e:94:a9:bd | {"subnet_id":"56693ca1-XXXX-XXXX-XXXX-ee8074bb13b1","ip_address":"10.0.0.38"}

Para poder asociar la IP flotante necesitaremos su id, para ello podemos listar las existentes con

(cli-openstack)debian-user@debian:~/$ neutron floatingip-list
+--------------------------------------+------------------+---------------------+--------------------------------------+
| id                                   | fixed_ip_address | floating_ip_address | port_id                              |
+--------------------------------------+------------------+---------------------+--------------------------------------+
| 03eeacd9-XXXX-XXXX-XXXX-71a1182ee838 |                  | 172.22.205.249      |                                      |
| 0f36bd32-XXXX-XXXX-XXXX-e41867c5b8d4 | 10.0.0.50        | 172.22.205.246      | 0a10a744-XXXX-XXXX-XXXX-b8ecdcd8bac0 |
| 1f8d124a-XXXX-XXXX-XXXX-101c148a348d | 10.0.0.44        | 172.22.205.241      | 8c306c2b-ZZZZ-ZZZZ-ZZZZ-b64bb5753e6f |
| 2cc63597-XXXX-XXXX-XXXX-45e8e85034fa | 10.0.0.46        | 172.22.205.243      | 2f56c5a4-YYYY-YYYY-YYYY-541916af4b92 |
| 61b53f55-XXXX-XXXX-XXXX-4ca9c90479d5 | 10.0.0.45        | 172.22.205.242      | 8b628bdc-VVVV-VVVV-VVVV-b1608f29624d |
| 75619867-CCCC-CCCC-CCCC-2ac0907329ee | 10.0.0.48        | 172.22.205.244      | 469b1a30-XXXX-XXXX-XXXX-ba487da79e3f |
| acd9ba03-RRRR-RRRR-RRRR-f535dcf0c769 | 10.0.0.43        | 172.22.205.240      | 40f6ad24-JJJJ-JJJJ-JJJJ-7be049772175 |
| d6f96986-EEEE-EEEE-EEEE-563823df3216 |                  | 172.22.205.248      |                                      |
| e4d55da9-WWWW-WWWW-WWWW-308d9b147b13 | 10.0.0.53        | 172.22.205.247      | 8da8d613-BBBB-BBBB-BBBB-96e89e31d8f5 |
| ea9033b1-XXXX-XXXX-XXXX-6dc56a6b9cea | 10.0.0.52        | 172.22.205.245      | c219e492-NNNN-NNNN-NNNN-62ee771c5700 |
+--------------------------------------+------------------+---------------------+--------------------------------------+

Finalmente la asociamos con la IP flotante con la VIP con neutron floatingip-associate --fixed-ip-address {ip} {float-ip-uuid} {port-uuid}

neutron floatingip-associate --fixed-ip-address 10.0.0.38 d6f96986-EEEE-EEEE-EEEE-563823df3216 2821603c-POPP-POPP-POPP-bd2349b29e63

Resultado final

+--------------------------------------+------------------+---------------------+--------------------------------------+
| id                                   | fixed_ip_address | floating_ip_address | port_id                              |
+--------------------------------------+------------------+---------------------+--------------------------------------+
| 03eeacd9-XXXX-XXXX-XXXX-71a1182ee838 |                  | 172.22.205.249      |                                      |
| 0f36bd32-XXXX-XXXX-XXXX-e41867c5b8d4 | 10.0.0.50        | 172.22.205.246      | 0a10a744-XXXX-XXXX-XXXX-b8ecdcd8bac0 |
| 1f8d124a-XXXX-XXXX-XXXX-101c148a348d | 10.0.0.44        | 172.22.205.241      | 8c306c2b-ZZZZ-ZZZZ-ZZZZ-b64bb5753e6f |
| 2cc63597-XXXX-XXXX-XXXX-45e8e85034fa | 10.0.0.46        | 172.22.205.243      | 2f56c5a4-YYYY-YYYY-YYYY-541916af4b92 |
| 61b53f55-XXXX-XXXX-XXXX-4ca9c90479d5 | 10.0.0.45        | 172.22.205.242      | 8b628bdc-VVVV-VVVV-VVVV-b1608f29624d |
| 75619867-CCCC-CCCC-CCCC-2ac0907329ee | 10.0.0.48        | 172.22.205.244      | 469b1a30-XXXX-XXXX-XXXX-ba487da79e3f |
| acd9ba03-RRRR-RRRR-RRRR-f535dcf0c769 | 10.0.0.43        | 172.22.205.240      | 40f6ad24-JJJJ-JJJJ-JJJJ-7be049772175 |
| d6f96986-EEEE-EEEE-EEEE-563823df3216 | 10.0.0.38        | 172.22.205.248      | 2821603c-POPP-POPP-POPP-bd2349b29e63 |
| e4d55da9-WWWW-WWWW-WWWW-308d9b147b13 | 10.0.0.53        | 172.22.205.247      | 8da8d613-BBBB-BBBB-BBBB-96e89e31d8f5 |
| ea9033b1-XXXX-XXXX-XXXX-6dc56a6b9cea | 10.0.0.52        | 172.22.205.245      | c219e492-NNNN-NNNN-NNNN-62ee771c5700 |
+--------------------------------------+------------------+---------------------+--------------------------------------+ 

Conexión VPN cliente a red con OpenVPN y certificados x509

5 May, 2016

En esta entrada explicare como realizar una configuración cliente VPN a red privada (VPN host to net) con un túnel VPN con certificados x509.

En primer lugar instalamos openvpn y openssl para el certificado:

apt-get install openvpn openssl

Bajamos los script de ejemplo o lo instalamos desde repositorios: Opción 1:

apt-get install easy-rsa

Opción 2:

git clone https://github.com/OpenVPN/easy-rsa.git -b 'release/2.x'

Copiamos los script de ejemplo:

cd /etc/openvpn/
mkdir easy-rsa
cp -r /root/easy-rsa/easy-rsa/2.0/* easy-rsa

Dentro de /etc/openvpn/easy-rsa/vars podremos configurar algunas variables de entorno que cargaremos posteriormente, vamos a modificar:

export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="ES"
export KEY_PROVINCE="Sevilla"
export KEY_CITY="Dos Hermanas"
export KEY_ORG="IESGN"
export KEY_EMAIL="juanmanuel.torres@aventurabinaria.es"
export KEY_OU="Informatica"

export KEY_NAME="vpn_key"
# PKCS11 Smart Card
export PKCS11_MODULE_PATH="/usr/lib/changeme.so"
export PKCS11_PIN=1234
export KEY_CN="ServidorVPN"

Cargamos las variables de entorno anteriores:

root@servidorvpn:/etc/openvpn/easy-rsa# source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

Creación del certificado:

Borramos las claves anteriores:

root@servidorvpn:/etc/openvpn/easy-rsa# ./clean-all

Creamos dh:

root@servidorvpn:/etc/openvpn/easy-rsa# ./build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
.............
root@servidorvpn:/etc/openvpn/easy-rsa# ./build-ca
Generating a 2048 bit RSA private key
.............
Country Name (2 letter code) [ES]:
State or Province Name (full name) [Sevilla]:
Locality Name (eg, city) [Dos Hermanas]:
Organization Name (eg, company) [IESGN]:
Organizational Unit Name (eg, section) [Informatica]:
Common Name (eg, your name or your server's hostname) [ServidorVPN]:
Name [vpn_key]:
Email Address [juanmanuel.torres@aventurabinaria.es]:

Creación del certificado para el servidor:

root@servidorvpn:/etc/openvpn/easy-rsa# ./build-key-server ServidorVPN
Generating a 2048 bit RSA private key
........+++
.............................................+++
writing new private key to 'ServidorVPN.key'
----
Country Name (2 letter code) [ES]:
State or Province Name (full name) [Sevilla]:
Locality Name (eg, city) [Dos Hermanas]:
Organization Name (eg, company) [IESGN]:
Organizational Unit Name (eg, section) [Informatica]:
Common Name (eg, your name or your server's hostname) [ServidorVPN]:
Name [vpn_key]:
Email Address [juanmanuel.torres@aventurabinaria.es]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:tu_contraseña
An optional company name []:

Creamos el certificado para el cliente:

root@servidorvpn:/etc/openvpn/easy-rsa# ./build-key cliente-vpn
Generating a 2048 bit RSA private key
...............+++
...................................................+++
writing new private key to 'cliente-vpn.key'
-----
Country Name (2 letter code) [ES]:
State or Province Name (full name) [Sevilla]:
Locality Name (eg, city) [Dos Hermanas]:
Organization Name (eg, company) [IESGN]:
Organizational Unit Name (eg, section) [Informatica]:
Common Name (eg, your name or your server's hostname) [cliente-vpn]:
Name [vpn_key]:
Email Address [juanmanuel.torres@aventurabinaria.es]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Las claves se encuentran en la carpeta: /etc/openvpn/easy-rsa/keys/

Configuración del servidor VPN:

Copiamos el paquete de ejemplo de configuración del servidor:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

Configuración del servidor:

nano server.conf
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/ServidorVPN.crt
key /etc/openvpn/easy-rsa/keys/ServidorVPN.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
server 10.88.88.0 255.255.255.0
push "route 10.99.99.0 255.255.255.0"
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 4

Activamos el encaminamiento:

nano /etc/sysctl.conf
net.ipv4.ip_forward=1
echo 1 > /proc/sys/net/ipv4/ip_forward

Reiniciamos el servicio:

service openvpn restart
service openvpn status

Configuración del cliente en el servidor:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn

Modificamos:

nano /etc/openvpn/easy-rsa/keys/client.ovpn
remote 10.0.0.33 1194

Tranferimos los certificados al cliente,en mi caso para realizar la prueba lo pasare a otra maquina por scp:

scp /etc/openvpn/easy-rsa/keys/cliente-vpn.key debian@172.33.23.92:/home/debian/openvpn
scp /etc/openvpn/easy-rsa/keys/cliente-vpn.crt debian@172.33.23.92:/home/debian/openvpn
scp /etc/openvpn/easy-rsa/keys/ca.crt debian@172.33.23.92:/home/debian/openvpn
scp /etc/openvpn/easy-rsa/keys/client.ovpn debian@172.33.23.92:/home/debian/openvpn

Configuración del cliente:

Movemos los certificados y la configuración:

sudo mv /home/debian/openvpn/* /etc/openvpn/
sudo mv client.ovpn client.conf

Editamos la configuración del cliente:

nano /etc/openvpn/client.conf
client
dev tun
proto udp
remote 10.0.0.33 1194
keepalive 10 120
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/cliente-vpn.crt
key /etc/openvpn/cliente-vpn.key
#ns-cert-type server
comp-lzo
verb 4
log /var/log/openvpn.log

Quitamos el arranque automatico de OpenVPN:

update-rc.d -f openvpn remove

Reiniciamos el servicio:

service openvpn restart

Comprobamos el funcionamiento del tunel:

root@servidorvpn:/etc/openvpn# ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.99.99.1 P-t-P:10.99.99.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:672 (672.0 B) TX bytes:0 (0.0 B)

root@clientevpn:/etc/openvpn# ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.99.99.6 P-t-P:10.99.99.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:504 (504.0 B)

Añadimos una regla nat al servidor VPN:

iptables -A POSTROUTING -t nat -s 10.88.88.0/24 -o eth0 -j MASQUERADE

Nos conectamos a la maquina de la red interna:

ssh debian@10.99.99.3

Con esto ya tendríamos funcionando nuestra conexión host to network con OpenVPN.