Yanıtlar:
Gerçekten değil, hayır. Tüm güvenlik açıklarının annesi budur. İstemcinin makinesinde rasgele komutlar yürüten bir web sayfası ayarlayıp ayarlayamayacağınızı soruyorsunuz. Bu komutu çalıştıran bir web sayfası kurarsam:
rm -rf ~/
Bu işlem, bilgisayarınızdaki tüm dosyaları silecektir $HOME
. Aslında, son zamanlarda bunun gerçekleşmesine izin veren bir hata keşfedildiğinde bir kargaşa vardı . Olası saldırı vektörlerinden biri, istemciyi (sizin durumunuzdaki bilgisayar B) bir bash komutu çalıştırmak için kandırmaktı.
Yani hayır, bir web tarayıcısı üzerinden yerel makinenizde rasgele kod yürütemezsiniz. Bir şekilde giriş yapmadan olmaz. JavaScript veya benzer dil komutları çalıştırabilirsiniz, ancak bunlar kullanıcının oturumuna erişemez.
Bunu genel olarak yapamazsınız, ancak istemci makine B'yi kontrol edebileceğiniz tanımlanmış bir ortamda, makine B'nin bir kök hizmetini çalıştırmasını önerebilir, örneğin kendi başınıza nodejs veya golang ile kendi başınıza yazabilir ve bununla konuşabilirsiniz. hizmet aldığınızda olay. Ancak, B makinesine ekstra bir servis yüklemezseniz, herhangi bir şansınız yoktur (veya en azından hiç şansınız olmamalıdır).
run("whatever command on machine B");
?
Bir nodeJS sunucusu kullanarak çözmek. (temiz / nihai kod değil, çalışması)
Bilgisayar A: (sunucu)
function change_wallpaper(image){
var objReq = new XMLHttpRequest();
objReq.open("GET", "http://localhost:8888" + "?image=" + image, false);
objReq.send(null);
}
<img src="./img/1.jpeg" onclick="change_wallpaper(this.src);" />
<img src="./img/2.jpeg" onclick="change_wallpaper(this.src);" />
Bilgisayar B: server.js
ans adı verilen (istemci) dosyanodejs server.js
var http = require("http");
var sys = require('sys')
var exec = require('child_process').exec;
var url = require("url");
function onRequest(request, response) {
var params = url.parse(request.url,true).query;
function puts(error, stdout, stderr) {sys.puts(stdout)}
exec("/usr/bin/feh --bg-center " + params.image, puts);
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Wallpaper');
}
http.createServer(onRequest).listen(8888);
PHP metin dosyalarının içeriğini tarayıcıdan değiştirebilir, örneğin /var/www/.../folder/mytextfie.txt içinde .
bir cronjob, textfile dosyasının yürütülebilir olup olmadığını kontrol etmek için çalıştırılabilir.
#!/usr/bin/env bash
echo $(cat /var/www/.../folder/commandsperline.txt)
#or
while read line
do
echo "$(${line})"
done< "/var/www/.../folder/commandsperline.txt"
bu metin dosyasının içeriği:
#!/bin bash
#you need to declare absolute path
# chmod 755 /home/user/*.sh -to make executabble all scripts there
/home/user/backup.sh
/home/user/anyscript.sh
Te while döngüsü ile bu metin dosyasından komutları çalıştırmak mümkündür.
Evet .. onunla mümkündür neutralinojs .
Kullanabilirsiniz Neutralino.os.runCommand()
. Ancak senaryonuzda Neutralino bulut modu kullanılabilir.