Underc0de

Programación Scripting => Python => Mensaje iniciado por: JaAViEr en Octubre 30, 2014, 04:55:20 AM

Título: [Python-CGI] PC Control Remoto - JaAViEr
Publicado por: JaAViEr en Octubre 30, 2014, 04:55:20 AM
¿ Qué es PC Control Remoto ?

PC Control Remoto es un programa/web desarrollado bajo el lenguaje de programación Python en conjunto con su librería CGI, la cuál nos permitirá montar un servidor CGI y poder llevar acabo nuestro cometido.

Este programa nos permitirá acceder a nuestro computador forma remota, con tu Navegador favorito, conectado vía LAN o a Internet (configuración aparte), desde cualquier navegador. Las funciones que nos brinda son las siguiente:
El programa en general se compone de:
Además de otros componentes como Topcoat (CSS), jQuery (JS).


Link de descarga con todos los archivos. (http://codigo.ga/wp-content/uploads/2014/10/remote-control.rar)

Solo extraer en una carpeta y ejecutar server.py PUERTO
(http://codigo.ga/wp-content/uploads/2014/10/server-working.png)
Adjunto el código de cada archivo Python mencionado anteriormente

server.py

Código (python) [Seleccionar]
'''
Autor: JaAViEr
Twitter: @javieresteban__
Website: http://codigo.ga
'''
from CGIHTTPServer import CGIHTTPRequestHandler
from BaseHTTPServer import HTTPServer
import socket
import sys

try:

port = int(sys.argv[1])

if port:

ip_interna = socket.gethostbyname(socket.gethostname())
print "Panel de control: http://%s:%s/cgi-bin/index.py" % (ip_interna, port)
server_address=('', port)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()

except:

print "-"*40
print "Uso:"
print sys.argv[0], "PUERTO"
print "-"*40
print "Ejemplo de uso:"
print sys.argv[0], "5050"
print "-"*40

Luego de server.py, deben pasar como parámatro el puerto al cual estará asociado el servidor.




index.py

Código (python) [Seleccionar]
#-*- encoding:utf-8 -*-
'''
Autor: JaAViEr
Twitter: @javieresteban__
Website: http://codigo.ga
'''
import cgi
import os
import Cookie
import md5

lista_usuarios = ["admin", "JaAViEr"] #Usuarios
lista_passwords = ["root", "toor"] # Contraseñas
method = os.environ.get("REQUEST_METHOD")
logueado = False
contenido_cookies = os.environ.get('HTTP_COOKIE')

tag_head = ''' <meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="/topcoat/css/topcoat-mobile-dark.min.css" class="uib-framework-theme">
<link rel="stylesheet" type="text/css" href="/css/index_main.less.css" class="main-less">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
<style type="text/css">
/* Prevent copy paste for all elements except text fields */
*  { -webkit-user-select:none; -webkit-tap-highlight-color:rgba(255, 255, 255, 0); }
input, textarea  { -webkit-user-select:text; }
</style>
<script type="application/javascript" src="/js/jquery.min.js"></script>
<script type="application/javascript" src="/js/index_user_scripts.js"></script>'''

def code_login(accion=False):

if accion == 'error':

mensaje_error = '''
  <div class="topcoat-navigation-bar widget uib_w_1 d-margins" data-uib="topcoat/nav" data-ver="0">
<div class="topcoat-navigation-bar__item center full">
<h1 class="topcoat-navigation-bar__title">Verifica tus credenciales por favor[/size][/center]
</div>
  </div>
'''

else:

mensaje_error = ''

return '''
<!DOCTYPE html>
<html>

  <head>
''' + tag_head + '''
<title>Indetifícate en el sistema</title>
  </head>

  <body>
    <div class="uwrap">
      <div class="upage" id="mainpage">
        <div class="upage-outer">
          <div class="upage-content" id="mainsub">

            <div class="grid grid-pad urow uib_row_2 row-height-2" data-uib="layout/row" data-ver="0">
              <div class="col uib_col_2 col-0_12-12" data-uib="layout/col" data-ver="0">
                <div class="widget-container content-area vertical-col">

                  <div class="topcoat-navigation-bar widget uib_w_1 d-margins" data-uib="topcoat/nav" data-ver="0">
                    <div class="topcoat-navigation-bar__item center full">
                      <h1 class="topcoat-navigation-bar__title">Indentifícate[/size][/center]
                    </div>
                  </div>
                  <span class="uib_shim"></span>
                </div>
              </div>
              <span class="uib_shim"></span>
            </div>

            <div class="grid grid-pad urow uib_row_3 row-height-3" data-uib="layout/row" data-ver="0">

<form action="" method="POST">
<div class="col uib_col_3 col-0_12-12" data-uib="layout/col" data-ver="0">
<div class="widget-container content-area vertical-col">
<div class="table-thing widget uib_w_2 d-margins" data-uib="topcoat/input" data-ver="0">
<label class="narrow-control label-top-left">Usuario</label>
<input class="wide-control topcoat-text-input" type="text" placeholder="Usuario" name="usuario">
</div>
<div class="table-thing widget d-margins" data-uib="topcoat/input" data-ver="0">
<label class="narrow-control label-top-left">Contraseña</label>
<input class="wide-control topcoat-text-input" type="password" placeholder="Contraseña" name="password">
</div>
<button class="widget d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0">Ingresar</button><span class="uib_shim"></span>
</div>
''' +mensaje_error+ '''
</form>
              </div>
              <span class="uib_shim"></span>
            </div>
          </div>
          <!-- /upage-content -->

        </div>
        <!-- /upage-outer -->

      </div>
      <!-- /upage -->

    </div>
    <!-- /uwrap -->
  </body>

</html>'''

code = '''<!DOCTYPE html>
<!--HTML5 doctype-->
<html>

<head>
''' + tag_head + '''
<title>Control Remoto :: 2014</title>
</head>

<body>
<!-- content goes here-->
<div class="uwrap">
<div class="upage" id="mainpage">
<div class="upage-outer">
<div class="upage-content" id="mainsub">

<div class="grid grid-pad urow uib_row_1 row-height-1" data-uib="layout/row" data-ver="0">
<div class="col uib_col_2 col-0_12-12" data-uib="layout/col" data-ver="0">
<div class="widget-container content-area vertical-col">

<div class="topcoat-navigation-bar widget uib_w_2 d-margins" data-uib="/topcoat/nav" data-ver="0">
<div class="topcoat-navigation-bar__item center full">
<h1 class="topcoat-navigation-bar__title">Panel de Control Remoto[/size][/center]
</div>
</div>
<button class="widget uib_w_4 d-margins topcoat-button--large--cta" data-uib="/topcoat/button" data-ver="0">Consola - Terminal</button>
<button class="widget uib_w_3 d-margins topcoat-button--large--cta" data-uib="/topcoat/button" data-ver="0">Enviar comando rápido</button>
<button class="widget uib_w_5 d-margins topcoat-button--large" onclick='location.href="logout.py"' data-uib="/topcoat/button" data-ver="0">Salir</button>
<span class="uib_shim"></span>
</div>
</div>
<span class="uib_shim"></span>
</div>

</div>
<!-- /upage-content -->

</div>
<!-- /upage-outer -->

</div>
<div class="upage hidden" id="uib_page_3">
<div class="upage-outer">
<div id="uib_page_3sub" class="upage-content ">
</div>
</div>
<!-- /upage-outer -->
te </div>
<div class="upage hidden" id="uib_page_2">
<div class="upage-outer">
<div id="uib_page_2sub" class="upage-content ">
</div>
</div>
<!-- /upage-outer -->
</div>
<div class="upage hidden" id="uib_page_1">
<div class="upage-outer">
<div id="uib_page_1sub" class="upage-content ">
</div>
</div>
<!-- /upage-outer -->
</div>

<!-- /upage -->

</div>
<!-- /uwrap -->
</body>

</html>'''

def verificar_login(u, p):

if u in lista_usuarios and p in lista_passwords:

session = u + p
session = md5.md5(session).hexdigest()
return True

else:

return False

if contenido_cookies: #Si hay cookies...

valores_cookie = Cookie.SimpleCookie(contenido_cookies)
session_actual = valores_cookie['sess'].value # session_actual = cookie "sess"

if session_actual == "false": # No logueado

logueado = False

else: # Verifica login

for a, b in zip(lista_usuarios, lista_passwords):

session_temporal = a + b
session_temporal = md5.md5(session_temporal).hexdigest()

if session_actual == session_temporal:

logueado = True # Login coincide
break

else:

pass

else: #No logueado, sess = false

print "Set-Cookie:sess=false"

print "Content-Type: text/html"

if method == "POST":

form = cgi.FieldStorage()
usuario = form.getvalue('usuario')
password = form.getvalue('password')

if verificar_login(usuario, password):

session = usuario + password
session = md5.md5(session).hexdigest()
print "Set-Cookie:sess=%s" % session
print
print code

else:

print
print code_login('error')

elif method == "GET":

if not logueado:

print code_login()

else:

print code


terminal.py

Código (python) [Seleccionar]
#-*- encoding:utf-8 -*-
'''
Autor: JaAViEr
Twitter: @javieresteban__
Website: http://codigo.ga
'''
import cgi
import os
import Cookie
import md5

print "Content-Type: text/html"
print

code_terminal = '''
<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" type="text/css" href="/topcoat/css/topcoat-mobile-dark.min.css" class="uib-framework-theme">
    <link rel="stylesheet" type="text/css" href="/css/terminal_main.less.css" class="main-less">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
<title>Terminal</title>
    <script src="/js/jquery.min.js"></script>
  </head>

  <body>
    <div class="uwrap">
      <div class="upage" id="mainpage">
        <div class="upage-outer">
          <div class="upage-content" id="mainsub">

            <div class="grid grid-pad urow uib_row_1 row-height-1" data-uib="layout/row" data-ver="0">
              <div class="col uib_col_1 col-0_12-12" data-uib="layout/col" data-ver="0">
                <div class="widget-container content-area vertical-col">

                  <div class="topcoat-navigation-bar widget uib_w_1 d-margins" data-uib="/topcoat/nav" data-ver="0">
                    <div class="topcoat-navigation-bar__item center full">
                      <h1 class="topcoat-navigation-bar__title">Consola - Terminal[/size][/center]
                    </div>
                  </div>
                  <div class="table-thing widget uib_w_2 d-margins" data-uib="/topcoat/textarea" data-ver="0">
                    <label class="narrow-control label-inline"></label>
                    <textarea class="wide-control topcoat-textarea" type="text" placeholder="Comandos" name="comando"></textarea>
                  </div>
<button class="widget uib_w_2 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick='execute();'>¡Ejecutar!</button>
<button class="widget uib_w_2 d-margins topcoat-button" data-uib="topcoat/button" data-ver="0" onclick='location.href="index.py"'>Volver</button>
<hr>
Salida:
<span id="loader"></span>
                  <span class="uib_shim"></span>
                </div>
              </div>
              <span class="uib_shim"></span>
            </div>
          </div>
          <!-- /upage-content -->

        </div>
        <!-- /upage-outer -->

      </div>
      <!-- /upage -->

    </div>
    <!-- /uwrap -->
<script language="JavaScript">

function execute(){

comando = $("textarea[name=comando]").val();
$("#loader").load("terminal.py", {"comando":comando});

}
</script>
  </body>

</html>'''

logueado = False
lista_usuarios = ["admin", "JaAViEr"] #Usuarios
lista_passwords = ["root", "toor"] # Contraseñas
method = os.environ['REQUEST_METHOD']
lectura_cookies = os.environ.get('HTTP_COOKIE')

if lectura_cookies:

valores_cookie = Cookie.SimpleCookie(lectura_cookies)
session_actual = valores_cookie['sess'].value # session_actual = cookie "sess"

if session_actual != "false":

for a, b in zip(lista_usuarios, lista_passwords):

session_temporal = a + b
session_temporal = md5.md5(session_temporal).hexdigest()

if session_actual == session_temporal:

logueado = True # Login coincide
break

else:

pass
else:

pass

if logueado:
if method == "GET":

print code_terminal

elif method == "POST":

form = cgi.FieldStorage()
comando = form.getvalue("comando")
lineas = comando.split("\n")
print '''
<span  style="font-family:Trebuchet Ms; color: #fff;" class="wide-control">
<br />
'''
for l in lineas:

try:

run = os.popen(l, "r")
run_content = run.read()
run_content = run_content.replace("\n", "<br>")
run_content = run_content.replace(" ", "&nbsp;")
print run_content
run.close()

except:

print "Error al ejecutar comando %s" % (l)

print "</span>"
else:
print "<script>location.href='index.py';</script>"

comando_rapido.py
Código (python) [Seleccionar]
#-*- encoding:utf-8 -*-
'''
Autor: JaAViEr
Twitter: @javieresteban__
Website: http://codigo.ga
'''
import cgi
import os
import subprocess
import Cookie
import md5

print "Content-Type: text/html"
print
code_terminal = '''
<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" type="text/css" href="/topcoat/css/topcoat-mobile-dark.min.css" class="uib-framework-theme">
    <link rel="stylesheet" type="text/css" href="/css/terminal_main.less.css" class="main-less">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
<title>Comandos rápidos</title>
    <script src="/js/jquery.min.js"></script>
  </head>

  <body>
    <div class="uwrap">
      <div class="upage" id="mainpage">
        <div class="upage-outer">
          <div class="upage-content" id="mainsub">

            <div class="grid grid-pad urow uib_row_3 row-height-3" data-uib="layout/row" data-ver="0">
              <div class="col uib_col_3 col-0_12-12" data-uib="layout/col" data-ver="0">
                <div class="widget-container content-area vertical-col">

                  <div class="topcoat-navigation-bar widget uib_w_1 d-margins" data-uib="topcoat/nav" data-ver="0">
                    <div class="topcoat-navigation-bar__item center full">
                      <h1 class="topcoat-navigation-bar__title">Comandos rápidos[/size][/center]
                    </div>
                  </div>
                  <span class="uib_shim"></span>
                </div>
              </div>
              <span class="uib_shim"></span>
            </div>

            <div class="grid grid-pad urow uib_row_4 row-height-4" data-uib="layout/row" data-ver="0">
              <div class="col uib_col_4 col-0_12-12" data-uib="layout/col" data-ver="0">
                <div class="widget-container content-area vertical-col">

<button class="widget uib_w_2 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="comando('apagar'); return false;">Apagar</button>
<button class="widget uib_w_3 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="comando('reiniciar'); return false;">Reiniciar</button>
<button class="widget uib_w_4 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="comando('cancelar salida'); return false;">Cancelar Apagado/Rein.</button>
<button class="widget uib_w_5 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="matar_proceso('mostrar'); return false;">Matar proceso</button>
<span id="matar_proceso" style="display:none">
<hr>
<input class="wide-control topcoat-text-input" type="text" placeholder="proceso.ext" name="proceso">
<button class="widget uib_w_6 d-margins topcoat-button wide-control" data-uib="topcoat/button" data-ver="0" onclick="matar_proceso('kill'); return false;">¡Matar ahora!</button>
<hr>
</span>
<button class="widget uib_w_6 d-margins topcoat-button--cta" data-uib="topcoat/button" data-ver="0" onclick="iniciar_proceso('mostrar'); return false;">Iniciar proceso</button>
<span id="iniciar_proceso" style="display:none">
<hr>
<input class="wide-control topcoat-text-input" type="text" placeholder="proceso.ext" name="iniciar_proceso">
<button class="widget uib_w_6 d-margins topcoat-button wide-control" data-uib="topcoat/button" data-ver="0" onclick="iniciar_proceso('iniciar'); return false;">¡Iniciar ahora!</button>
<hr>
</span>
<button class="widget uib_w_2 d-margins topcoat-button" data-uib="topcoat/button" data-ver="0" onclick='location.href="index.py"'>Volver</button>
  <span class="uib_shim"></span>
 
                </div>
              </div>
              <span class="uib_shim"></span>
            </div>
          </div>
          <!-- /upage-content -->

        </div>
        <!-- /upage-outer -->

      </div>
      <!-- /upage -->

    </div>
    <!-- /uwrap -->
  </body>
  <span id="loader" style="display:none;"></span>
  <script language="JavaScript">
 
  function comando(cmd){
 
$("#loader").load("comando_rapido.py", {"comando":cmd});
 
  }
  function matar_proceso(param){
 
if(param == 'mostrar'){
$("#matar_proceso").fadeIn();
$("#iniciar_proceso").fadeOut();
}else if(param == 'kill'){
proceso = $("input[name=proceso]").val();
$("#loader").load("comando_rapido.py", {"kill": proceso});
$("#matar_proceso").fadeOut();
$("input[name=proceso]").val("");
}
  }
 
  function iniciar_proceso(accion){
 
  if (accion == "mostrar"){
 
$("#matar_proceso").fadeOut();
$("#iniciar_proceso").fadeIn();

  }else if(accion == "iniciar"){
 

nuevo_proceso = $("input[name=iniciar_proceso]").val();
$("#loader").load("comando_rapido.py", {"correr": nuevo_proceso});
$("#iniciar_proceso").fadeOut();
$("input[name=iniciar_procesoproceso]").val("");
 
  }
 
  }
  </script>


</html>'''

logueado = False
lista_usuarios = ["admin", "JaAViEr"] #Usuarios
lista_passwords = ["root", "toor"] # Contraseñas
method = os.environ['REQUEST_METHOD']
lectura_cookies = os.environ.get('HTTP_COOKIE')
if lectura_cookies:
valores_cookie = Cookie.SimpleCookie(lectura_cookies)
session_actual = valores_cookie['sess'].value # session_actual = cookie "sess"

if session_actual != "false":
for a, b in zip(lista_usuarios, lista_passwords):

session_temporal = a + b
session_temporal = md5.md5(session_temporal).hexdigest()

if session_actual == session_temporal:
logueado = True # Login coincide
break

else:

pass
else:

pass

if logueado:
if os.name == "nt":

so = "windows"

else:

so = "unix"

if method == "GET":

print code_terminal

elif method == "POST":

form = cgi.FieldStorage()
comando = form.getvalue("comando")
kill = form.getvalue("kill")
correr = form.getvalue("correr")
iniciar_proceso = ""
matador = ""

try:

if correr:

if so == "windows":

iniciar_proceso = "start %s" % (correr)

elif so == "unix":

iniciar_proceso = "%s" % (correr)

subprocess.call(iniciar_proceso)

if kill:

if so == "windows":

matador = "taskkill /F /IM %s" % (kill)

elif so == "unix":

matador = "pkill -9 %s" % (kill)

kill = subprocess.call(matador)
kill.close()

if comando == "apagar":

if so == "windows":

accion = "shutdown /S /T 60"

elif so == "unix":

accion = "sudo poweroff"


elif comando == "reiniciar":

if so == "windows":

accion = "shutdown /R /T 60"

elif so == "unix":

accion = "sudo reboot"

#accion = ""

elif comando == "cancelar salida":

if so == "windows":

accion = "shutdown /A"

elif so == "unix":

accion = ""

#accion = ""


action = subprocess.call(accion)
action.close()
except:

pass

else:
print "<script>location.href='index.py';</script>"

logout.py

Código (python) [Seleccionar]
import cgi
'''
Autor: JaAViEr
Twitter: @javieresteban__
Website: http://codigo.ga
'''
print "Content-Type: text/html"
print "Set-Cookie: sess=false"
print "Location:index.py"
print
print "<script>location.href='index.py';</script>"


Un par de Screenshots de como luce el programa...
Identificación
(http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-08-57-576x1024.png) (http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-08-57.png)
Panel de control
(http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-09-07-576x1024.png) (http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-09-07.png)
Consola-Terminal Remota
(http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-43-19-576x1024.png) (http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-43-19.png)
Comando rápidos
(http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-10-30-576x1024.png) (http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-10-30.png)
Comandos rápidos - Iniciar Proceso
(http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-11-32-576x1024.png) (http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-11-32.png)
Comandos rápidos - Matar Proceso
(http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-11-02-576x1024.png) (http://codigo.ga/wp-content/uploads/2014/10/Screenshot_2014-10-30-03-11-02.png)


Fuente Original: http://codigo.ga/python/python-cgi-pc-control-remoto/
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: blackdrake en Octubre 30, 2014, 06:17:44 AM
Excelente aporte, ahora mismo lo pruebo :D

Gracias!!
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: JaAViEr en Octubre 30, 2014, 06:24:00 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Excelente aporte, ahora mismo lo pruebo :D

Gracias!!
Muchísimas gracias. Cualquier consulta no dudes en publicar :-D

Saludos!
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: WhiZ en Octubre 30, 2014, 11:42:55 AM
Está excelente JaAViEr!  Cuando llegue a casa pruebo todo.
+1

Saludos!
WhiZ
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: JaAViEr en Octubre 30, 2014, 12:05:20 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Está excelente JaAViEr!  Cuando llegue a casa pruebo todo.
+1

Saludos!
WhiZ
Muchas gracias WhiZ
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: BigBear en Octubre 30, 2014, 07:20:10 PM
soy diabolico Javier xD.

pregunta : se puede entrar al server desde otra red de otro pais , o solo desde el internet de tu casa , porque yo hice algo asi en perl llamado Commander que esta publicado en el foro y me pasaba eso solo podia entrar desde mi propia red Wifi.
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: WhiZ en Octubre 30, 2014, 09:35:51 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
pregunta : se puede entrar al server desde otra red de otro pais , o solo desde el internet de tu casa , porque yo hice algo asi en perl llamado Commander que esta publicado en el foro y me pasaba eso solo podia entrar desde mi propia red Wifi.

Eso debe ser por el "socket.gethostbyname(socket.gethostname())". En vez de eso se puede usar una cadena vacía o "0.0.0.0".

En este caso, habría que modificar eso en el código para que funcione fuera de la red local.

Saludos!
WhiZ
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: Ruleman en Octubre 30, 2014, 11:15:17 PM
JaAViEr: EXCELENTE!!!

Muy buen trabajo bro, te felicito!

Prometo que lo probaré!!


Saludos
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: Snifer en Octubre 30, 2014, 11:46:01 PM
Javicho maldito  no m funciona :( .. xD toca modificar

Regards,
Snifer
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: JaAViEr en Octubre 31, 2014, 08:51:51 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Javicho maldito  no m funciona :( .. xD toca modificar

Regards,
Snifer
Mala noticia :( . Manda pantallazos por interno. Por si acaso la aplicación está programada bajo Python 2.7 , obviamente sobre 3.0 no funcionará, problemas de sintaxis claramente :P
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
JaAViEr: EXCELENTE!!!

Muy buen trabajo bro, te felicito!

Prometo que lo probaré!!


Saludos
¡ Muy bien !
Espero un comentario o feedback de vuelta. Podría motivar una segunda versión sobre esto :)

Saludos, Javier.
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: Snifer en Octubre 31, 2014, 10:20:42 AM
Obvio microbio! solo le di un python script.py me levanto todo tranquilo pero al momento de ingresar desde el movil note algo en el debug de permisos, no le di una mirada mas a fondo! aclarando lo corri en linux, toca verlo despues ;) .

Regards,
Snifer
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: Hexs en Noviembre 03, 2014, 06:26:12 PM
Este bebe me recordo al sw de cisco(meraki) que utilizo actualmente como "mdm" en general (Desktop/Mobile). Actualmente lo uso como administracion interna entre Trabajo / Casa. He tenido problemillas con el pugin de java para el remote desktop (hay que insistirle unas 2 o 3 veces para que agarre) pero en lo demas funciona como una flecha (depende mucho de la estabilidad de la red).

Siento que le falta un filemanager pero con un remote puedo transferirlos directo a la nube :P

Aca un pequeño demo screen.
(http://i62.tinypic.com/296kpoo.png)

Les adjunto el link. El uso es muy intuitivo*.
https://meraki.cisco.com/ (https://meraki.cisco.com/)
Título: Re:[Python-CGI] PC Control Remoto - JaAViEr
Publicado por: JaAViEr en Noviembre 04, 2014, 12:54:06 AM
Interrsante, trabajaré en eso de la transferencia de archivos.
Edición remota.
Descarga remota.
Enviar archivo local.

Saludos