Aller au contenu

Envoyer une commande TCP


Messages recommandés

Posté(e)

Bonjour

 

J'ai un petit souci de rien du tout pour vous autres je pense...

J'ai recuperé une commande "ping" qui fonctionne tres bien

merci a Krikroff

 

la voici :

 

--[[
%% properties
%% globals
--]]

-- Ping v 1.0.1 [05-2013]
-- Copyright © 2013 Jean-christophe Vermandé

fibaro:log("Start process");

local _deviceIp = "192.168.0.34";
local _devicePort = 22;
local _maxRetryProcess = 5;

-- recursive function to ping device
local function _ping(retry)
  retry = retry or 0;
  --open the socket
  local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort);
  --set the read timeout
  tcpSocket:setReadTimeout(250);
  --notify user
  fibaro:log("Search on the local network, try #" .. retry .. " please wait...");
  fibaro:sleep(250);    
  --send packet
  local bytes, errorCode = tcpSocket:write("test");
  --check for error      
  if errorCode == 0 then
    return true;
  else
    if retry < _maxRetryProcess then
      fibaro:log("Retry process, please wait...");
      fibaro:sleep(1000);
      return _ping(retry + 1);
    end
    return false;
  end
end

--ping device, secure with pcall to catch errors.
local f, result = pcall(_ping);

if (f) then
  if (result == true) then
    fibaro:log("Device has been found, is awake and listening.");
  else
    fibaro:log("Device was not found!");
  end
else
  fibaro:log("Error: " .. f);
end

 

 

Maintenant je n'arrive pas a envoyer une commande Tcp...

 

Voici mon script :

 

--[[
%% properties
%% globals
--]]

 

fibaro:log("Start process");

local _deviceIp = "192.168.0.34";
local _devicePort = 22;

 

  --open the socket
  local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort);

tcpSocket:setReadTimeout(2000)

 

local commande ='sudo shutdown -h now'
fibaro:debug(commande)
tcpSocket:write(commande)

tcpSocket:setReadTimeout(2000)

 

--open the socket
  local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort);
tcpSocket:setReadTimeout(2000)

 

local mdp ='000000'
fibaro:debug(mdp)
tcpSocket:write(mdp)

 

fibaro:log("The computer is shuting down, please wait...");
  fibaro:sleep(250);
 

Et on ne rigole pas svp...;)

Merci d'avance !!!

 

 

Posté(e)

J'avais fait une longue réponse, mais elle a disparu :( (regarde si tu ne l'a pas vu passer dans tes emails de notification)

 

En résumé : pas de SSH, mais TELNET OK =>

 

  • Upvote 1
Posté(e)

Sinon l'autre solution, si c'est un PI ou tout autre machine sur laquelle on a la main, c'est de mettre un serveur Web avec PHP qui exécute les commandes désirées, ainsi il n'y a plus de limites. Et la HC2 sait faire des requêtes HTTP en toute simplicité.

Posté(e)

Merci pour vos reponses !!

 

Desole de ne pas vous avoir repondu avant j'etais en deplacement pour le taf...

 

Le 26/10/2017 à 19:44, Lazer a dit :

J'avais fait une longue réponse, mais elle a disparu :( (regarde si tu ne l'a pas vu passer dans tes emails de notification)

 

Merci pour ta reponse et non pas dans mes mails de notification:(

 

je vais regarder en tout cas ce que tu me propose cela peux repondre a ma question

Dès que j'ai du tps j'essaie... car avec le taf c chaud...

 

Le 26/10/2017 à 19:53, Krikroff a dit :

c'est quoi l'idée, éteindre un Pi ?

C'est mon media center de la maison (HAKINTOSH... Je l'aurai bien mis sous ubuntu mais je dois d'abord passer toutes mes photos (beaucoup, beaucoup de Go) qui sont sur ce putain de "iphoto" en mode dossier simple.)

Il me sert a regarder des series, écouter de la musique, regarder les photos...

L'interet et de l'eteindre la nuit par un coup de poing qui eteints les lumieres... (consomation elec tout simplement)

 

Le 26/10/2017 à 19:55, Lazer a dit :

c'est de mettre un serveur Web avec PHP qui exécute les commandes désirées, ainsi il n'y a plus de limites. Et la HC2 sait faire des requêtes HTTP en toute simplicité.

Comment fait on ca ?

Mon scripte est il mauvais ? (je pense que oui et trouverai la reponse dans "Activer/désactiver Point Accès Wifi Via Hc2")

 

En tout cas merci encore de m'aider ! Je debute un peu en code mais trouve ca vraiment interessant !

Posté(e)

Voila j'ai essayé ca

 

--[[
%% properties
%% globals
--]]

fibaro:log("Start process");

local _deviceIp = "192.168.0.34";
local _devicePort = 22;

  --open the socket
  local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort);

tcpSocket:setReadTimeout(2000)

bytes, errorCode = tcpSocket:write("sudo shutdown -h now") --code eteindre
fibaro:sleep(1000)
if errorCode == 0 then
  local result = tcpSocket:read()
fibaro:debug("rep1: " .. string.len(tostring(result)))
else
  fibaro:debug("error1") 
end

bytes, errorCode = tcpSocket:write("xxxxxx") --pass
fibaro:sleep(1000)
if errorCode == 0 then
  result = tcpSocket:read()
fibaro:debug("rep2: " .. string.len(tostring(result)))
  fibaro:debug(result)
else
  fibaro:debug("error2") 
end

fibaro:log("The computer is shuting down, please wait...");
  fibaro:sleep(250);

cela ne fonctionne pas sinon trop simpe...

mon hakintosh est allumé :angry:

 

HELP !!

 

Posté(e)

Bonsoir,

il faut que tu installes le serveur sur l'appareil que tu veux arrêter.

Je me suis inspiré du post de Gazous pour gérer mon PI, cela devrait convenir à ton appareil aussi.

Avec un peu d'imagination nul doute que tu y parviennes :)

 

 

 

×
×
  • Créer...