lunes, 27 de febrero de 2017

Ejemplo rapido de cron en linux

Debes editar el fichero /etc/crontab y añadir los tabs

Ejemplo:
20 8 27 2 * hector echo "esto es una prueba" | tee /tmp/prueba

Indica que quiere correr todos los años el comando "echo "esto es una prueba" | tee /tmp/prueba" con el usuario hector el 27 de febrero a las 8 y 20 AM


miércoles, 22 de febrero de 2017

Test WAVECOM M1306B en Linux




Primero debes agregar al usuario dialout para que tenga permisos para usar el puerto serial.

Para probar se utilizó Moserial con las siguientes configuraciones:


Luego se conectó y se envió el comando "AT" y se recibió respuesta "OK". Lo que indica que está bien conectado:


Probando el envío de mensajes:

Se prueba con el comando
at+cmgs="NUMERO DE TELEFONO"
Ej:
at+cmgs="041485548412"

Luego de enviarlo te saldrá un prompt y debes enviar el siguiente carácter hexadecimal para simular que presionaste CTRL+Z
                   ASCII          OCT         HEX
Control-Z =    26      = '\032' = '\x1A'

Para mas detalles de configuración:
http://www.puntoflotante.net/CONFIGURACION%20INICIAL%20Y%20PRUEBAS%20DE%20MODEM%20WAVECOM%20M1306B.pdf

lunes, 20 de febrero de 2017

Borrar conexión en el Network Manager

Jugando con el Network Manager buscando la forma de crear un NIC teaming cree por error una interfaz llamada "bridge0" la cual, aunque la eliminé por el gui seguia apareciendo con el comando ifconfig.


Para eliminarla basta con escribir:

nmcli connection delete bridge0

sábado, 18 de febrero de 2017

El mejor editor de Bash para linux

La mejor forma de escribir código bash es usando el plugin BashSupport para los ides de IntelliJ.

En mi caso lo instalé en PyCharm y va excelente:

Entras en Settings -> Plugins -> Browse Repositories y lo buscas:



Una vez instalado renicias PyCharm y ya te debería salir la opción de crear un nuevo bash file:



Seteas el intérprete y listo

sábado, 11 de febrero de 2017

Corregir: file_exists(): open_basedir restriction in effect. File(/var/www/html/

Cuando desplegué un api que estoy desarrollando a mi hosting me saltó el siguiente error:


ErrorException
 in Filesystem.php line 23:
file_exists(): open_basedir restriction in effect. File(/var/www/html/API/storage/framework/cache/2c/60) is not within the allowed path(s): (/home/u776079664:/tmp:/var/tmp:/opt/php-5.6/pear:/usr/local/bin:/etc/pki/tls/certs)



En esta imag se ve mejor


Esta mierda ocurre porque se subió el fichero de bootstrap/cache/config.php que se crea cuando se ejecuta el comando

php artisan config:make

Para solucionar el error basta con borrar este fichero en el servidor o lo que es lo mismo, ejecutar :

php artisan config:clear

jueves, 9 de febrero de 2017

Unban ip baneado por ssh

Cuando se excede el número de intentos fallidos al intentar acceso a un terminal ssh el servidor bloquea el acceso a la maquina.
Para solventarlo se hace lo siguiente:
fail2ban-client set sshd unbanip IP_A_UNBANEAR

ej:

fail2ban-client set sshd unbanip 192.168.1.123

martes, 7 de febrero de 2017

Enviar correos desde Laravel usando cuenta Gmail

Intentando enviar un correo desde láravel usando mi cuenta gmail encontré que cuando se intentaba enviar me salía el siguiente error: 

Swift_TransportException in AbstractSmtpTransport.php line 383:
Expected response code 250 but got code "535", with message "535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials p62sm3200250ywb.2 - gsmtp
"


Esto ocurre porque gmail detecta el server como una aplicación no segura. 
Para solucionarlo debes ir a la cuenta de gmail e entrar en: 



Ya con esto debería funcionar.
Mis valores del .env me quedaron así:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=micorreo@gmail.com
MAIL_PASSWORD=claveloca
MAIL_ENCRYPTION=tls

Si todavía con eso no te funciona intenta entrar en el siguiente link y darle aceptar:


ABA CANTV se pone lento con aumento de plan (Explicación del porque)

Es probable que al subir el plan de internet tu velocidad de conexión haya bajado. En mi caso me ocurrió que tenía 4 Megas y me funcionaba bien. Luego coloqué el de 10 Megas y la velocidad de descarga bajó drásticamente a 1 Mega

Esto suena contradictorio pero tiene explicación:

Explicación corta:

La linea que tienes no "soporta" el plan que colocaste porque tienes mucha atenuación o ruido, por lo que el modem reduce la velocidad de transferencia a una que permita la comunicación con menos tasa de errores.

OJO: También es posible que tu baja de velocidad sea también por saturación en el servicio de CANTV

Explicación larga:

Hay dos variables que definen la velocidad máxima que se puede transmitir por una línea antes que se pierda la sincronización. Estas son el ruido y la atenuación.
Estas variables las puedes ver en el panel de tu modem:

En este caso el modem indica un SNR Margin de 13.3 dB y una atenuación de 32 dB.


Ruido:

Cada linea telefónica tiene un ruido  asociado. Este es llamado SNR.
Cada velocidad de conexión tiene un ruido máximo al que se puede transmitir llamado SNR to sync.
La diferencia entre el SNR y SNR to sync es el SNR Margin, que se puede interpretar como la holgura que se tiene para transmitir a esa velocidad con ese ruido SNR.
El valor del SNR to sync viene seteado en el modem y depende de cada fabricante
Ejemplo
SNR = 44dB
SNR to sync at 8Mb = 35dB       <--- Plan CANTV 8 Megas
SNR MARGIN = 44-35 = 9dB <---- Mientras mayor sea el número mejor es la conexión

¿Como sé si mi plan es adecuado según el ruido que tengo?
Por lo anteriormente expuesto, el SNR Margin aumenta cuando cambiamos de plan.

Puedes guiarte con los siguientes valores para saber si tienes un SNR Margin adecuado:

6dB O menos deriva en una muy mala navegación con muchos errores.
7dB-10dB Conexión con mala calidad
11dB-20dB Es un buen valor. Con pocos problemas sincronización
20dB-28dB  Es excelente. 
29dB o más: Es un sueño (El ruido ideal)

Atenuación:

Es la reducción de la "fuerza" de la señal en la linea. Está relacionado con la distancia al nodo, pero también hay otros factores como la calidad del cable, la frecuencia de transmisión, los empalmes, etc.

Generalmente se asume que hay una perdida de 13.81 db por cada km que separe el cliente del nodo (Por supuesto en la vida real nunca es exacto y depende del tipo de infraestructura de transmisión).

20dB o menos es ideal
20dB-30dB es excelente
30dB-40dB es muy bueno
40dB-50dB es aceptable
50dB-60dB es una conexión pobre y muy posiblemente tengas problemas
60dB o menos es muy mala atenuación. Tendrás problemas importantes en la navegación


Con un ruido ideal, estas son las siguientes velocidades de navegación máximas que se pueden lograr. Note la relación entre distancia y atenuación:
1km = 24Mbit
1.0km = 13.81dB = 23Mbit
1.5km = 20.7dB = 21Mbit
2.0km = 27.6dB = 18Mbit
2.5km = 34.5dB = 13Mbit
3.0km = 41.4dB = 8Mbit
3.5km = 48.3dB = 6Mbit
4.0km = 56dB = 4Mbit
4.5km = 62.1dB = 3Mbit
5.0km = 69dB = 2Mbit

En la siguiente table lo podemos ver mejor




Mi experiencia:
Mi ejemplo: Con el plan de 8 Megas en las mañanas el SNR Margin sube a 22.3 dB y puedo navegar con total normalidad a 8 Megas. En la tarde el SNR Margin baja y se sitúa en 13 por lo que la velocidad baja y no paso de 2 Megas.

Para ver estos valores entra en el panel de tu modem y busca las opciones DSL







Hosting

sábado, 4 de febrero de 2017

Manejo de imágenes API con Laravel 5.3

Me surgió hacer un api en donde el cliente debía subir imágenes:

Para hacerlo es muy sencillo. Primero creas la ruta:

Route::post('/add', 'ApiAuthController@add');

Luego creas el controlador

    public function add(Request $request) {
        $v = Validator::make($request->all(), [
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);

        if ($v->fails()){
            return response()->json(["success"=>"False", "Error"=>$v], 422);
        }

        $image = $request->file('image');
        $input['imagename'] = time().'.'.$image->getClientOriginalExtension();
        $destinationPath = public_path('/images');
        $image->move($destinationPath, $input['imagename']);

//        $this->postImage->add($input);

        return back()->with('success','Image Upload successful');
    }

Luego lo pruebas con Postman


y Listo. Se guarda en public/images



Hosting

viernes, 3 de febrero de 2017

Create object and add attributes to it: Python

Creamos el objeto args y le agregamos los atributos recid y sigb64
args = SimpleNamespace()
setattr(args, 'recid', "receptor1")
setattr(args, 'sigb64', "AfGLmNB==")

Luego podemos hacer args.recid o args.sigb64


jueves, 2 de febrero de 2017

Probar sockets

Este programa es lo máximo para probar sockets. Si estamos haciendo un monitor tcp, o un cliente esto va de maravillas :)
https://sourceforge.net/projects/sockettest/?source=typ_redirect



Hosting

Instalar módulo de python en formato tar.gz

Si por ejemplo quieres instalar el módulo netifaces en un sitio donde no hay conexión a internet

Primero te bajas el paquete de:

https://pypi.python.org/simple/

Luego lo instalas

pip install ./netifaces-0.10.4.tar.gz
pip3 install ./netifaces-0.10.4.tar.gz

y listo



Hosting

miércoles, 1 de febrero de 2017

Descargar todas los documentos de una vista en CouchDB


curl -X GET http://127.0.0.1:5984/basededatoszapateria/_design/zapatos/_view/porMarca\?include_docs\=true > zapatos_por_marca.json



Hosting