एक वेब पेज में एक क्लिक घटना पर एक शेल कमांड निष्पादित करें


11

जब मैं किसी ब्राउज़र में पाठ पर क्लिक करता हूं, तो क्या bash कमांड निष्पादित करने का कोई तरीका है?

वेब पेज कंप्यूटर ए पर है, ब्राउज़र कंप्यूटर बी पर है: मैं कंप्यूटर बी पर कोड निष्पादित करना चाहता हूं, जैसे hsetrootछवि पर क्लिक करते समय वॉलपेपर बदलना।

जवाबों:


5

नहीं वास्तव में कोई नहीं। वह सभी सुरक्षा छिद्रों की जननी है। आप पूछ रहे हैं कि क्या आप एक वेबपेज सेट कर सकते हैं जो क्लाइंट की मशीन पर मनमानी कमांड को निष्पादित करता है। यदि मैं इस आदेश को चलाने वाला वेबपृष्ठ सेट करूँ तो क्या होगा:

rm -rf ~/

यह आपके सभी फ़ाइलों को हटा देगा $HOME। वास्तव में, हाल ही में एक हंगामा हुआ जब एक बग की खोज की गई जिसने ऐसा होने दिया। संभावित अटैक वैक्टर में से एक क्लाइंट (कंप्यूटर बी आपके मामले में) को बैश कमांड चलाने में बरगला रहा था।

तो नहीं, आप अपने स्थानीय मशीन पर एक वेब ब्राउज़र के माध्यम से मनमाने ढंग से कोड निष्पादित नहीं कर सकते। पहली बार में किसी तरह प्रवेश किए बिना नहीं। आप जावास्क्रिप्ट या इसी तरह की भाषा कमांड चला सकते हैं, लेकिन आपके उपयोगकर्ता के सत्र तक उनकी पहुँच नहीं होगी।


उत्तर के लिए धन्यवाद, मैं वहां स्पष्ट मुद्दे को समझता हूं। मैं एक कस्टम ब्राउज़र के साथ इसे प्राप्त करने की कोशिश कर रहा हूं: stackoverflow.com/questions/30963508/…
बॉब डायलन

@bobdylan मुझे नहीं लगता कि यह संभव है। मुझे निश्चित रूप से उम्मीद है कि यह वैसे भी नहीं है। यह एक अच्छा सा कार्यक्रम है, वैसे। मुझे नहीं पता था कि यह करना आसान था! हालाँकि, यह है कि मुझे नहीं लगता कि ब्राउज़र से स्थानीय शेल सत्र शुरू करना संभव है।
terdon

खैर मान लीजिए कि मैं अपने ओएस से जुड़ी कुछ कार्यक्षमता के साथ एक हाइब्रिड वेबसाइट / कार्यक्रम बनाना चाहता हूं। तो मेरा ब्राउज़र एक सामान्य "ब्राउज़र" नहीं होगा। इसलिए मैं यह नहीं देखता कि यह कैसे संभव नहीं है।
बॉब डायलन

निश्चित रूप से यह एक कार्यक्रम के लिए संभव है। विचार करें: कोई अंतर नहीं है, सिद्धांत रूप में, एक एफ़टीपी ग्राहक और एक ब्राउज़र (एक HTTP क्लाइंट) के बीच - दोनों एक स्थानीय उपयोगकर्ता और एक सर्वर के साथ बातचीत करते हैं। सामान्य रूप से, FTP क्लाइंट स्थानीय फ़ाइलों को संशोधित कर सकता है और (कुछ) स्थानीय कमांड निष्पादित कर सकता है। ज़रूर, यह केवल उपयोगकर्ता के अनुरोध पर है, लेकिन यह वास्तविक बाधा नहीं है। तो एक ब्राउज़र ही कर सकता है। मैंने सुना है, लगभग दस साल पहले, कुछ प्रमुख ब्राउज़रों की सुरक्षा सेटिंग इतनी कम थी कि उन्होंने इसकी अनुमति दी थी, लेकिन मुझे विवरण याद नहीं है, और चीजें तब से अब तक कड़ी हो गई हैं।
जी-मैन का कहना है मोनिका '

@ जी-मैन मुझे नहीं पता कि क्या यह संभव है कि एक क्लिक के लिए ब्राउज़र को वापस पारित किया जाए और शेल सत्र शुरू किया जाए। एफ़टीपी बहुत अलग है क्योंकि यह परिभाषा द्वारा सत्र शुरू करता है। मैं यह नहीं कह रहा हूं कि यह 100% असंभव है, मैं वास्तव में नहीं जानता, मुझे लगता है कि यह असंभव है और यह निश्चित रूप से मौजूदा ब्राउज़रों के साथ संभव नहीं है।
terdon

3

आप सामान्य रूप से ऐसा नहीं कर सकते हैं, लेकिन एक परिभाषित वातावरण में, जहां आप ग्राहक मशीन बी को नियंत्रित कर सकते हैं, आप प्रस्ताव कर सकते हैं कि मशीन बी एक सेट्रोट सेवा चलाती है, आप बस उदाहरण के लिए नोड्ज या गोलंग के साथ अपने दम पर लिख सकते हैं और उससे बात कर सकते हैं सेवा जब आप घटना प्राप्त करते हैं। लेकिन किसी भी मामले में आपके पास कोई मौका नहीं है (या कम से कम आपके पास कभी मौका नहीं होना चाहिए) यदि आप मशीन बी पर कुछ अतिरिक्त सेवा स्थापित नहीं करते हैं।


मैंने पहले कभी NodeJs का उपयोग नहीं किया है। आपका मतलब है कि मैं एक साधारण जावास्क्रिप्ट का उपयोग कर सकता हूं जैसे run("whatever command on machine B");:?
बोब डायलन

हाँ, नोडज ऐसी कम जरूरतों के लिए उपयोग करने के लिए बहुत सरल है।
.क्रोबे

@ikrabbe: 500 प्रतिष्ठा तक पहुंचने पर बधाई। । (और, Btw, प्यारा gravatar बस न दें अपने सुपर गिलहरी मेरी बिल्लियों के पास ढीला :-)!
जी-मैन 'को फिर से बहाल मोनिका' कहते हैं

3

मैं इसे एक नोडजेएस सर्वर का उपयोग करके हल करता हूं। (साफ / अंतिम कोड नहीं बल्कि इसका काम)

कंप्यूटर A: (सर्वर)

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);" />

कंप्यूटर B: (क्लाइंट) फ़ाइल जिसे server.jsans के साथ निष्पादित किया जाता हैnodejs 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);

जैसा कि मेरे उत्तर ने आपको विधि का उपयोग करने के लिए प्रेरित किया, आपने पूछा, यह अच्छा होगा कि आप मेरे उत्तर के लिए एक संपादन के लिए पूछें, आपके कोड सहित और इसके अलावा मैं एक शेल कमांड निष्पादित करने के लिए एक विधि का वर्णन करता हूं, जैसा आपने पूछा था एक सामान्य दृष्टिकोण और इसके लिए। क्लाइंट मशीनों के लिए पोर्टेबल सेवाएं लिखना कई, कई चीजें कर सकता है। यदि आप मेरे उत्तर के लिए मतदान करेंगे जो ठीक भी होगा।
.क्रबे

2
@ikrabbe ओपी वोट नहीं कर सकता, उनके पास प्रतिनिधि नहीं है। जैसा कि स्वीकार करने के लिए, हाँ आपके उत्तर (जो मैंने किया था) ने वास्तव में उन्हें एक संकेतक दिया था, लेकिन आपने यह नहीं बताया कि वे नोडज का उपयोग कैसे कर सकते हैं और न ही आपने एक उदाहरण दिया है। आपका उत्तर बहुत उपयोगी था, लेकिन यह वास्तव में ओपी की समस्या को हल नहीं करता था, इसने उन्हें केवल सही दिशा में बताया। अपने स्वयं के उत्तर को पोस्ट करना और इसे स्वीकार करना पूरी तरह से ठीक है।
terdon

0

PHP टेक्सटफाइल्स की सामग्री को /var/www/.../folder/mytextfie.txt में उदाहरण के लिए ब्राउज़र पार कर सकती है। आपके पास केवल उस फ़ाइल से स्ट्रिंग प्राप्त करने के लिए है, एक स्क्रिप्ट फ़ाइल शुरू करने के लिए व्हिच एक कमांड या कमांड भी हो सकती है। ।

एक क्रोनजॉब वेदर को जांचने के लिए चला सकता है कि टेक्स्टफाइल में कोई निष्पादन योग्य है।

#!/usr/bin/env bash
echo $(cat /var/www/.../folder/commandsperline.txt)
#or 
while read line
    do
    echo "$(${line})"
done< "/var/www/.../folder/commandsperline.txt"

उस पाठ का संदर्भ:

#!/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

ते के साथ लूप के साथ उस टेक्स्ट-फाइल से कमांड निष्पादित करना संभव है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.