Enviar y reicibir notificaciones de Telegram desde la línea de comandos

Utilizando tg, podemos enviar y recibir mensajes de nuestros contactos en Telegram, incluyéndonos a nosotros mismos, desde el terminal. Envíos programados Combinándolo con expect, conseguiremos una forma sencilla de programar notificaciones. He aquí un pequeño ejemplo: #!/usr/bin/env bash function tg { # First argument, if any, must be the receiver local to="$1" local msg="" local cmd="" if [ $# -gt 1 ]; then shift 1 msg="$@" else while read line; do if [ -z "$msg" ]; then msg=$line else msg="$msg\n$line" fi done if [ -z "$to" ]; then to=$(awk '{print $1}' <<< $msg) msg=$(awk '{$1="";print $0}' <<< $msg) fi fi if [[ $msg =~ "\n" ]]; then file=$(mktemp) echo -e "$msg" > $file cmd="send_text $to $file" else cmd="msg $to $msg" fi #echo $cmd expect -c " log_user 0 match_max 100000 spawn /path/to/telegram -k /path/to/tg-server.pub expect \"User \" send -- \"$cmd\r\" expect \"Sent\" send \"quit\" " } tg $@ Algunos ejemplos de uso: ...

May 31, 2014 · 3 min · 432 palabras · Nacho Cano

Crear un repositorio espejo de Ubuntu

Si tenemos un gran número de equipos con Ubuntu en nuestra LAN, nos puede interesar tener un espejo local del repositorio de paquetes de Ubuntu. Una diferencia entre esta opción y utilizar un proxy/caché de paquetes es que, en el primer caso, ya tendremos todos los paquetes disponibles cuando los vayamos a necesitar. Clonar el repositorio en local Para crear un repositorio local, podemos usar el comando apt-mirror, disponible en los repositorios. Una vez instalado, podemos editar el fichero de configuración en /etc/apt/mirror.list para, por ejemplo, cambiar el directorio donde se guardarán los paquetes (por defecto /var/spool/apt-mirror), añadir o eliminar fuentes a incluir en el repositorio, etc. Con las fuentes por defecto, hay que tener en cuenta que serán necesarios más de 100 GB para alojar el repositorio. Si optásemos sólo por incluir el “main”, se queda en 10 GB. ...

May 18, 2014 · 3 min · 528 palabras · Nacho Cano

Caché de paquetes descargados en Ubuntu Trusty Tahr

Si tenemos una LAN con varios equipos, podemos utilizar apt-cacher-ng para no tener que descargar las actualizaciones desde los repostiorios en cada uno de ellos, ya que nos permite reutilizar los paquetes que hayamos descargado. Otras opciones, como AptProxy parece que han quedado algo obsoletas. apt-cacher-ng es un proxy/caché enfocado a gestores de paquetes, que soporta las distribuciones Debian y Ubuntu, entre otras. Es una buena alternativa a montar un espejo para pequeñas LANs. ...

May 17, 2014 · 2 min · 326 palabras · Nacho Cano

Crear paquetes .deb con checkinstall

Una forma sencilla de crear un paquete .deb a partir del código fuente es mediante la utilidad checkinstall, disponible en los respositorios. Para aquellos casos en los que la compilación del código y la instalación sigue los conocidos comandos: $ ./configure $ make $ sudo make install Bastará sustituir el último paso por: $ sudo checkinstall Como ejemplo, podemos crear un .deb a partir del código fuente de libsodium, una librería necesaria para compilar dnscrypt. ...

May 10, 2014 · 4 min · 653 palabras · Nacho Cano

sshuttle, la VPN de los pobres

shuttle es una herramienta que nos permite redirigir todo el tráfico a través de una conexión SSH, incluyendo las peticiones DNS. Está disponible tanto en los repositorios como en GitHub. Su uso es sencillo. Para establecer la conexión: $ sshuttle --D --pidfile=/tmp/sshuttle.pid -r user@server:1234 --dns 0/0 Para terminarla: $ kill $(cat /tmp/sshuttle.pid)

October 20, 2013 · 1 min · 52 palabras · Nacho Cano

Solucionado el error «DistributionNotFound» al usar pip

Si al ejecutar pip, nos aparece el siguiente error: $ pip Traceback (most recent call last): File "/usr/local/bin/pip", line 5, in from pkg_resources import load_entry_point File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2707, in working_set.require(__requires__) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 686, in require needed = self.resolve(parse_requirements(requirements)) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 584, in resolve raise DistributionNotFound(req) pkg_resources.DistributionNotFound: pip==1.1 puede ser debido a que es necesario actualizar el propio pip: $ sudo easy_install --upgrade pip Searching for pip Reading http://pypi.python.org/simple/pip/ Best match: pip 1.4 Downloading https://pypi.python.org/packages/source/p/pip/pip-1.4.tar.gz#md5=ca790be30004937987767eac42cfa44a Processing pip-1.4.tar.gz Running pip-1.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-XSmFvr/pip-1.4/egg-dist-tmp-jmeGZW warning: no files found matching '*.html' under directory 'docs' warning: no previously-included files matching '*.rst' found under directory 'docs/_build' no previously-included directories found matching 'docs/_build/_sources' Adding pip 1.4 to easy-install.pth file Installing pip script to /usr/local/bin Installing pip-2.7 script to /usr/local/bin Installed /usr/local/lib/python2.7/dist-packages/pip-1.4-py2.7.egg Processing dependencies for pip Finished processing dependencies for pip Comprobamos que se ha solucionado: ...

July 28, 2013 · 2 min · 280 palabras · Nacho Cano

Iniciar sesión en DynDNS desde el terminal

Hace un par de semanas, DynDNS cambió su política de uso de las cuentas gratuitas para incluir una cláusula por la cual es necesario hacer mínimo un login al mes si no se quieren perder los dominios que tengamos: Starting now, if you would like to maintain your free Dyn account, you must log into your account once a month. Failure to do so will result in expiration and loss of your hostname. This activity helps us eliminate hostnames that are no longer needed and/or dormant. Note that an update client will not suffice for this monthly login. ...

June 10, 2013 · 2 min · 248 palabras · Nacho Cano

Conectarse por SSH utilizando sshpass

sshpass es un programa que nos permite iniciar sesión en un servidor SSH de forma no interactiva y sin utilizar claves, para lo que deberemos proporcionar la contraseña como argumento del programa. Para conectar a un servidor SSH, es preferible utilizar claves, además de tener en cuenta otros sistemas de seguridad, como la autenticación en dos pasos, pero puede haber escenarios en los que sshpass sea una alternativa a considerar. Su uso es sencillo: ...

June 9, 2013 · 1 min · 156 palabras · Nacho Cano

SSLyze

SSLyze es una herramienta para analizar la configuración SSL de un servidor, diseñada para ser rápida y exhaustiva. Un ejemplo de uso: $ python sslyze --regular localhost:443 REGISTERING AVAILABLE PLUGINS ----------------------------- PluginCertInfo PluginSessionRenegotiation PluginCompression PluginSessionResumption PluginOpenSSLCipherSuites CHECKING HOST(S) AVAILABILITY ----------------------------- localhost:443 => 127.0.0.1:443 SCAN RESULTS FOR LOCALHOST:443 - 127.0.0.1:443 ----------------------------------------------------------------- * Compression : Compression Support: Disabled * Session Renegotiation : Client-initiated Renegotiations: Rejected Secure Renegotiation: Supported * Certificate : Validation w/ Mozilla's CA Store: Certificate is NOT Trusted: self signed certificate in certificate chain Hostname Validation: OK - Common Name Matches SHA1 Fingerprint: 12C4EC1C16807D8654269FBE5E0A8DBFBF1244CC Common Name: localhost Issuer: /C=ES/ST=IB/O=Localhost CA/CN=localhost/emailAddress=postmaster@localhost Serial Number: F525610B96987DAE Not Before: Mar 20 10:31:07 2013 GMT Not After: Mar 20 10:31:07 2014 GMT Signature Algorithm: sha1WithRSAEncryption Key Size: 2048 Unhandled exception when processing --sslv2: utils.ctSSL.errors.ctSSLFeatureNotAvailable - SSLv2 disabled. * Session Resumption : With Session IDs: Supported (5 successful, 0 failed, 0 errors, 5 total attempts). With TLS Session Tickets: Supported * TLSV1_1 Cipher Suites : Rejected Cipher Suite(s): Hidden Preferred Cipher Suite: RC4-SHA 128 bits HTTP 302 Found - / Accepted Cipher Suite(s): CAMELLIA256-SHA 256 bits HTTP 302 Found - / AES256-SHA 256 bits HTTP 302 Found - / DES-CBC3-SHA 168 bits HTTP 302 Found - / RC4-SHA 128 bits HTTP 302 Found - / CAMELLIA128-SHA 128 bits HTTP 302 Found - / AES128-SHA 128 bits HTTP 302 Found - / Undefined - An unexpected error happened: None * TLSV1_2 Cipher Suites : Rejected Cipher Suite(s): Hidden Preferred Cipher Suite: AES128-GCM-SHA256 128 bits HTTP 302 Found - / Accepted Cipher Suite(s): CAMELLIA256-SHA 256 bits HTTP 302 Found - / AES256-SHA256 256 bits HTTP 302 Found - / AES256-SHA 256 bits HTTP 302 Found - / AES256-GCM-SHA384 256 bits HTTP 302 Found - / DES-CBC3-SHA 168 bits HTTP 302 Found - / RC4-SHA 128 bits HTTP 302 Found - / CAMELLIA128-SHA 128 bits HTTP 302 Found - / AES128-SHA256 128 bits HTTP 302 Found - / AES128-SHA 128 bits HTTP 302 Found - / AES128-GCM-SHA256 128 bits HTTP 302 Found - / Undefined - An unexpected error happened: None * SSLV3 Cipher Suites : Rejected Cipher Suite(s): Hidden Preferred Cipher Suite: RC4-SHA 128 bits HTTP 302 Found - / Accepted Cipher Suite(s): CAMELLIA256-SHA 256 bits HTTP 302 Found - / AES256-SHA 256 bits HTTP 302 Found - / DES-CBC3-SHA 168 bits HTTP 302 Found - / RC4-SHA 128 bits HTTP 302 Found - / CAMELLIA128-SHA 128 bits HTTP 302 Found - / AES128-SHA 128 bits HTTP 302 Found - / Undefined - An unexpected error happened: None * TLSV1 Cipher Suites : Rejected Cipher Suite(s): Hidden Preferred Cipher Suite: RC4-SHA 128 bits HTTP 302 Found - / Accepted Cipher Suite(s): CAMELLIA256-SHA 256 bits HTTP 302 Found - / AES256-SHA 256 bits HTTP 302 Found - / DES-CBC3-SHA 168 bits HTTP 302 Found - / RC4-SHA 128 bits HTTP 302 Found - / CAMELLIA128-SHA 128 bits HTTP 302 Found - / AES128-SHA 128 bits HTTP 302 Found - / Undefined - An unexpected error happened: None SCAN COMPLETED IN 16.95 S -------------------------

March 29, 2013 · 3 min · 504 palabras · Nacho Cano

Solucionado el error «error: error running non-shared postrotate script for /var/log/samba/log.nmbd of '/var/log/samba/log.nmbd '»

Si nos encontramos con el siguiente error: error: error running non-shared postrotate script for /var/log/samba/log.nmbd of '/var/log/samba/log.nmbd ' En Ubuntu 12.04.2, con la versión de samba 3.6.3, podría producirse cuando el script de logrotate para samba intenta hacer un reload del servicio nmbd y éste no está en ejecución. Necesita un pequeño cambio en los comandos utilizados en la directiva postrotate: deberemos cambiar reload por reload --quiet, quedando finalmente así las respectivas líneas en el fichero /etc/logrorate.d/samba: ...

March 22, 2013 · 1 min · 85 palabras · Nacho Cano