2016-12-07 5 views
0

RPIのデータを更新するために、別のサーバーからRPIにファイルをダウンロードし、execコマンドでRPIサーバーでコマンドを実行しようとしています。更新(サーバーからファイルをダウンロード)Raspberry Pi 3

私の最初のことは、サーバにxhr要求のある新しいバージョンがあるかどうかをチェックしてから、xhr要求でファイルをダウンロードしてRPIサーバを使用したいが、動作しないようにすることでした。

RPIにいくつかのファイルをダウンロードし、それらをRPIサーバー上のexecで使用する方法はありますか(sudoの移動かtahtのようなもの)?

答えて

0

方法が見つかりました。私はRPIにコマンドを実行するためにchild_processでnode.jsを使用しています。あなたが特定のフォルダに入れたい場合は、私は、サーバーから何かをダウンロードするために使用するコマンドは、あなたがして、それを開く必要がwget http://ipaddress:port/path_to_file/

あるcd path_to_folder

全体コード:

var express = require("express"); 
var app = express(); 
var http = require("http").Server(app); 
var io = require('socket.io')(http); 
var exec = require('child_process').exec; 
var request = require('request'); 

http.listen(6669); 

io.on('connection', function(socket){ 
    socket.on("Update",function(){ 
     update(); 
    } 
} 

//////////FUNCTIONS////////// 
function update() { 
    try { 
     console.log("Start updating!"); 
     if(checkServerFile('http://ip_address:port/path_to_file')){ 
       console.log("Starting download..."); 
       execute('cd /home/pi/server/update/ && sudo wget http://ip_address:port/update/update.sh && sudo bash /home/pi/server/update/update.sh'); 
     }  
    } 
    catch (err) { 
     console.log(err); 
    } 
} 

function checkServerFile(path){ 
    var result = false; 
    result = request(path, function(err, resp){ 
     if(resp.statusCode === 200){ 
       return true; 
     } 
    }); 
    console.log(result); 
    return result; 
} 

function execute(command) { 
    var cmd = exec(command, function(error){ 
     console.log("error: ", error); 
    }); 
} 

機能

checkserverファイル

ファイルがサーバーに存在するかどうかを確認します。