Bueno partiendo de esta publicación

http://cirelramos.blogspot.com/2015/12/programar-servidor-para-enviar-mensajes.html


dije nada la utilidad que busco es poder ordenarle a mi pc auto-destruyete en 10 segundos jaja...! nah en realidad queria poder sentarme agarrar mi cel y sin conectarme por ssh ni por otro medio solo escribir reinicia o apagar y automaticamente mi computador ejecute la orden, ahora es importante señalar puedes expandir mas las ordenes y no solo limitarlas a reiniciar o apagar, pero vamos, todo informatico sabe que si pruebas apagar y enceder todo se arregla (The IT Crowd) jajaja





Bueno lo primero es descargar los script...


https://drive.google.com/file/d/0B-2FDrPc5MapOUtNWWZwTWlTblk/view?usp=sharing

https://drive.google.com/file/d/0B-2FDrPc5Mapd3dLN3QtcXlEa2c/view?usp=sharing



Copiamos nuestros los archivos al home, y comenzaremos a trabajar con crontab sino conoces de contrab puedes hacerte una idea con esta publicación

http://cirelramos.blogspot.com/2015/03/cron-y-contrab-ejecucion-como-root.html




ejecutamos crontab SIN SER ROOT  primero..


Terminal:
crontab -e



y copiamos las siguientes reglas:


*/10 * * * * /home/server/buscar_telegram.sh >> /home/server/test-busqueda.log 2>&1
#verifica cada 10 minutos si hay algun mensaje que mande ejecutar reinicio o apagado...
@reboot /home/server/buscar_telegram.sh >> /home/server/test-busqueda.log 2>&1
#realiza el mismo procedimiento pero solo al encender el computador

#fin de el texto a copiar



ahora CON ROOT:


Terminal:
sudo su


Terminal:
crontab -e


*/25 * * * * /home/server/scritp-para-telegram/buscar_telegram.sh >> /home/server/test-root.log 2>&1
#chequea y ejecuta si hay una orden de reinicio o apagado

#fin de el texto a copiar





ahora se preguntaran para que ejecutar el mismo script con y sin root, se ejecuta como root para poder reiniciar o apagar el ordenador, como sabemos desde el terminal para ejecutar "reboot" y "shutdown" necesitamos ser root y sin root es para ejecutar telegram leer los mensajes y escribirlos de manera que quede registrado que se reinicio o apago el ordenador..



ejemplo:  si escribo en mi telegram "reiniciar", el crontab cuando este sin root lee el mensaje crea unos archivos log donde cuenta las palabras reiniciar y luego con el root se ejecute y vea que solo hay una palabra "reiniciar" en la converzación ejecutara la orden pero antes creara otro archivo log donde dejara un registro que ejecuto la orden, luego al enceder de nuevo el ordenador verifica el archivo anterior que dice si ejecuto o no la orden y escribe 3 veces mas "reiniciar" en la converzación de esta manera no volvera a reiniciar o apagar el ordenador.



Bueno eso fue todo, si tienen alguna duda dejen un comentario y en cuanto pueda les respondo..









Hace tiempo vi alguien que usaba el whatsapp para un caso similar, aunque no eran mensajes muy informativos a diferencia de el que vamos a programar, pero me quedo la duda de hacer como un script que me enviara información de mi servidor cada cierto tiempo para saber en que estado esta, no me decidi por whatsapp por todo ese lio de estar casado con un solo dispositivo y la inseguridad que maneja en sus converzaciones, Bueno MANOS A LA OBRA!



Esta parte si es un poco copiada de otra web, abajo dejare la fuente....


Instalamos los paquetes esenciales para el funcionamiento y compilación de teleram

Terminal:
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make




Terminal:
sudo apt-get install git









ahora nos descargamos del repositorio de telegram




Terminal:
git clone --recursive https://github.com/vysheng/tg.git && cd tg




ahora configuramos el programa, en el comando anterior ya nos ubica en la carpeta del programa solo tenemos que ejecutar lo siguiente:



Terminal:
./configure


compilamos el programa

Terminal:
make




Listo, ya tenemos todo preparado para comenzar a usar Telegram desde la terminal. Para configurarlo, deberemos colocarnos en el directorio donde compilamos el programa -que no es otro que “/home/usuario/tg”- e iniciar el programa con:




Terminal:
bin/telegram-cli -k tg-server.pub



Donde -k indica dónde se encuentra la llave pública del programa. Además, también podemos añadir -N para ver el número del mensaje. La primera vez que lo ejecutemos, nos aparecerá una pantalla tal que así:





tipean el numero de telefono con codigo de area internacional ejemplo de venezuela

+584264445566


luego les va enviar el sms con el codigo de verificacion y listo finalizado



contact_list: muestra una lista de nuestros contactos que utilizan Telegram. Cada contacto se llama peer.

msg <peer> <mensaje>: envía un mensaje de texto al contacto seleccionado.

 Ejemplo: msg Pepe Hola, ¿qué tal estás? 

En caso de que el nombre del contacto tenga espacios, escribiremos “_” entre palabras.

 Por ejemplo: msg Pepe_Apellido El mensajesend_photo <peer> <ruta de la imagen>: envía la imagen seleccionada al contacto seleccionado.

 Por ejemplo: send_photo Pepe “/home/usuario/Imágenes/imagen.png”

chat_with_peer <peer>: nos abre un chat privado con la persona que hayamos escrito como peer. No confundir con chat encriptado,  Tecleando /quit, salimos de este modo.
 Ejemplo: chat_with_peer Pepe

quit: sale del programa.


lista completa de los comandos útiles, es recomendable visitar el GitHub del autor.



==================================================================



hasta ahora solo instalamos y configuramos el telegram para ser usado en nuestro sistema, necesitamos definir el usuario al que le vamos a enviar el mensaje.



entren a telegram-terminal y ejecuten de nuevo


contact_list


copien bn el nombre del usuario que desean enviar el mensaje


descargamos el script


https://github.com/cirelramos/send-info-server-for-telegram



coloquen el script en el home de su sistema y ejecutamos OJO  siempre tienes que tener en cuenta las variantes de la ruta el usuario que voy a usar se llama SERVER por lo tanto su home es /home/server  ustedes deben tener otro usuario por lo tanto debe ser utilizado con otra direccion...

Terminal:
chmod +x enviar-mensajes-telegram.sh







ahora vamos a editar el usuario que esta en el script en la linea  to="Cirel";  por el usuario que buscaron arriba con el comando contact_list

Terminal:
nano enviar-mensajes-telegram.sh


programamos una tarea en crontab cada 45 minutos

Terminal:
crontab -e

si es la primera vez que abres crontab -e 



te preguntara que editar quieres usar, el mas facil es nano por lo tanto selecciona el 2



sino conoces mucho de crontab  puedes conocer mas aca


http://cirelramos.blogspot.com/2015/03/cron-y-contrab-ejecucion-como-root.html


luego dentro de crontab  agregamos la siguiente linea


*/45 * * * * /home/server/mensaje-inicio-server.sh >> /home/server/test.log 2>&1
#HASTA AQUI


CTRL+O para guardar


CTRL+X para salir


ese comando ejeuctara el script cada 45 minutos y enviara el resultado a un archivo log por si hay errores :D



bueno eso fue todo


Fuente: http://nosolotuitah.es/2015/07/17/instalar-telegram-terminal-ubuntu/



.









como primera opcion podemos hacer descargarnos todo el repo en un zip con el siguiente comando es necesario buscar el token


1 vamos a profile settings




2 hacemos click en account







y ya tendremos nuestro token para ser usado en el siguiente comando


Terminal:
curl -Lk -o cirelramos.zip 'https://gitlab.com/zcqopx/pruebaparablogger/repository/archive.zip?private_token=dasd654a312das'



Terminal:
curl -Lk -o testFonax.md 'https://gitlab.com/zcqopx/preload/raw/master/README.md?private_token=312odajsldkjsa'





como segunda opción podemos usar ssh configuramos los parametros globales ojo si no han creado la llave ssh pueden mirar este tutorial



http://cirelramos.blogspot.com/2015/08/manejar-proyectos-con-gitlab-subir.html


ok, manos a la obra:


Terminal:
git config --global user.name "zcqopx"

Terminal:
git config --global user.email "zcqopx@gmail.com"




 OJO ESTE ES MI GITLAB USTEDES TIENEN OTRO USUARIO Y EMAIL


#entramos en la carpeta del proyecto antes creado

Terminal:
cd existing_folder 

#inicializamos git

Terminal:
git init 


#añadimos el repo

Terminal:
git remote add origin git@gitlab.com:zcqopx/pruebaparablogger.git 



#ahora sincronizamos los archivos locales con el origen del repo y el branch(rama), en este caso solo tengo la rama "master" es lo mas comun

Terminal:
git pull origin


por los pasos anteriores te debes dar cuenta que fue necesario colocar la clave de tu ssh para ejecutar el comando, para evitarnos esto y que se pueda ejecutar el script sin problemas utilizaremos el siguiente comando



Terminal:
ssh-add 



es posible que te de el error:


Could not open a connection to your authentication agent.


entonces ejecutaras


Terminal:
eval `ssh-agent -s`

y de nuevo el comando anterior: "ssh-add"

te pedira de nuevo la contraseña y ya quedara guardada mientras la session este activa :)



este comando por si quieres cancelar el anterior: eval $(ssh-agent)


instalamos keychain

Terminal:
apt-get install keychain






nos logeamos como root


Terminal:
sudo su




agregamos un comando para al entrar a root


Terminal:
nano /root/.bashrc 


y agregar


/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh
#hasta aqui

PRESIONAN CTRL+O para guardar y CTRL+X para salir


salimos de root

Terminal:
exit


entramos de nuevo

Terminal:
sudo su





ahora el script


Terminal:
nano /root/cargarRepo.sh

copiamos lo siguiente

#!/bin/bash
source /root/.keychain/ubuntu-sh
#en linea anterior puede cambiar un poco en el ultimo archivo dependiendo el nombre de la maquina por lo tanto lo mejor es que hagan un
#ls -la /root/.keychain/
# y asi verifiquen el nombre del archivo-sh y remplazar por el nombre adecuado
cd /var/www;
echo "cambio de directorio";
#/usr/bin/git pull -q origin;
git pull origin
git fetch origin;
git checkout -f origin/master;
#hasta aqui




ahora en el contrab


Terminal:
crontab -e



*/1 * * * * /bin/bash -l -c 'sh /root/cargarRepo.sh > /root/cargarRepo-log'
#hasta aqui



con estos comandos estaria completa la actualizacion continua del repositorio, no solamente puede ser un repo o mejor aun una sola rama del mismo repo, cualquier duda comenta y lo mas pronto posible te la resuelvo




debido a tener varios problemas con la luz mis puertos ethernet eth0 y eth1 se renombraron cosa que no me gusta ya que tengo una configuración especifica para cada puerto en el firewall entonces esto dejaba el servidor mal funcionando la solución para esto es simple.


 Ejecutamos el Siguiente comando:


Terminal:
gksudo gedit /etc/udev/rules.d/70-persistent-net.rules 

                     




ahora solo seria modificar el valor KERNEL=="eth*", NAME="eth3"


y cambiar el eth3 por otro que no este ocupado, reiniciar y ya estara nuestros cambios




ahora si tienes la configuración como deseas pero no te muestra los adaptadores al ejecutar:


Terminal:
 ifconfig -a


entonces es necesario que verifiques lo siguiente:


Terminal:
dmesg | grep eth



Terminal:
lshw -C network


en este ultimo comentario deberia especificar con que tarjeta logica (adaptador virtual esta asociado eth0, eth1, eth2, ethN)

logical name: eth1ahora si las tarjetas estan conectadas y las reconoce linux e igual no te las muestra como adaptador puedes probar con

Terminal:
sudo ifup -a




Fuente: http://askubuntu.com/questions/146076/network-is-not-working-anymore-ubuntu-12-04










Fuente: http://askubuntu.com/questions/217635/how-to-rename-an-ethernet-interface






1. En la consola de comandos (shell) ejecutar el siguiente comando:

Terminal:
sudo apt-get install mysql-server

2. Seguir con los pasos del asistente de instalación y no olvidarse la clave asignada al superusuario
    root. Una vez instalado el servidor MySQL verificamos que el servidor se haya levantado a
    través del siguiente comando:
  


Terminal:
sudo netstat -tap | grep mysql


    El comando mostrará algo similar a lo siguiente, indicando el nombre de proceso asignado y que el
    servidor se encuentra escuchando (LISTEN).

tcp        0      0 UbuntuSrv:mysql *:*                     LISTEN      667/mysqld

3. El archivo de configuración del servidor MySQL se crea en el directorio

Terminal:
sudo nano /etc/mysql/my.cnf

    En éste archivo descomentar la línea:
  
bind-address = 127.0.0.1
  
   Y colocar la IP asignada al servidor, esto sirve para que el servidor acepte conexiones de clientes
    externos. Por ejemplo:
  
bind-address = 192.168.90.100

o si quieres desde cualquier ubicación

bind-address = 0.0.0.0
  
4. Reiniciar el servidor MySQL usando el comando:
   

Terminal:
sudo /etc/init.d/mysql restart


5. En la consola de comandos acceder a la consola de administración de MySQL usando:

Terminal:
mysql -u root -p

   NOTA: recordar la contraseña que se colocó para el usuario root en el paso 1.




6. Crear un usuario para realizar tareas administrativas.



Terminal:
use mysql;

Terminal:
GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'manager' WITH GRANT OPTION;
Terminal:
FLUSH PRIVILEGES;
Terminal:
QUIT;


   NOTA: en éste caso la contraseña para el usuario creado es manager, de preferencia cambiarlaa una más segura.



Ó tambien pudes agregarlo de la siguiente forma

creamos el usuario para uso local

Terminal:
CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
Terminal:
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
Terminal:
WITH GRANT OPTION;
ahora creamos el usuario para uso externo

Terminal:
CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
Terminal:
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
Terminal:
WITH GRANT OPTION;
Terminal:
exit


ya con esto si tienes un cliente mysql o phpmyadmin lo puedes conectar con el usuario creado ya que tiene acceso permitido desde el exterior


Si pierdes la clave del usuario root

Finalizamos el proceso mysql
Terminal:
sudo /etc/init.d/mysql stop

Terminal:
sudo mysqld --skip-grant-tables &
Terminal:
sudo mysqld --skip-grant-tables &
Terminal:
mysql -u root mysql
luego de entrar en mysql colocamos la nueva clave, remplazar YOURNEWPASSWORD por tu clave

Terminal:
UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; exit;
Terminal:
exit



Fuente: http://ingmmurillo.blogspot.com/2011/03/como-instalar-mysql-server-en-un.html
http://ubuntu.flowconsult.at/en/mysql-set-change-reset-root-password/











  1. Pasos para instalar nginx y php




        Añadimos los repositorios
    Terminal:
    echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/nginx-stable.list
    Terminal:
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
    Terminal:
    sudo apt-get update
    Terminal:
    sudo apt-get install nginx
  2. Iniciamos Nginx


    Terminal:
    sudo service nginx start
    ahora vamos a nuestro navegador y colocamos la ip del server o el dominio con que tenemos asociado nuestro servidor
  3. Instalación de PHP

    as
    Terminal:
    sudo apt-get install php5-fpm
  4. modificamos los archivos de configuracion de php


    Terminal:
     sudo nano /etc/php5/fpm/php.ini

    en la siguiente linea

    cgi.fix_pathinfo=1

    vas a remplazar el valor por 0


    Si este número se mantiene como 1, el intérprete PHP hará todo lo posible para procesar el archivo que está tan cerca de el archivo solicitado posible. Este es un posible riesgo de seguridad. Si este número se establece en 0, por el contrario, el intérprete sólo se procesará el camino-un archivo exacto alternativa mucho más segura. Guardar y salir. Tenemos que hacer otro pequeño cambio en el php5-FPM configuration.


    Terminal:
     sudo nano /etc/php5/fpm/pool.d/www.conf


     buscamos la linea:  listen = 127.0.0.1:9000


    y la remplamos por: listen = /var/run/php5-fpm.sock



    tambien es importante descomentar las siguientes lineas (quitar los ";" )


    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660




    reiniciamos php5-fpm


    Terminal:
    sudo service php5-fpm restart

  5. ahora configuramos el sitio disponible en nginx



    Terminal:
    sudo nano /etc/nginx/sites-available/default



    copia este contenido


    server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www;
        index index.php index.html index.htm;

        server_name server_domain_name_or_IP;

        location / {
            try_files $uri $uri/ =404;
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /usr/share/nginx/html;
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }



  6. creamos los directorios sino estan creados


    Terminal:
    mkdir /var/www
  7. creamos un archivo index .php y colocamos un contenido de prueba



    Terminal:
    cd /var/www


    Terminal:
    sudo nano index.php

    copiamos dentro

    <?php
    phpinfo();
    ?>
    guardamos CTRL+O y cerramos CTRL+X


  8. reiniciamos el servidor y ya estara funcionando


    Terminal:
    sudo service nginx restart



si deseas darle mas seguridad a tus directorios puedes usar


location /css {
      if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
             return 403;
        }
    }

    location /js {
      if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
             return 403;
        }
    }



IMPORTANTE! LAS LINEAS ANTERIORES DEBEN ESTAR DENTRO DE LAS LLAVES DE SERVER  !!





Fuente:  https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-12-04