একটি ওয়েব পৃষ্ঠায় ক্লিক ইভেন্টের উপর একটি শেল কমান্ড কার্যকর করুন


11

আমি যখন কোনও ব্রাউজারে কোনও পাঠ্যে ক্লিক করি তখন বাশ কমান্ড কার্যকর করার কোনও উপায় আছে?

ওয়েব পৃষ্ঠাটি কম্পিউটার এ-তে রয়েছে, ব্রাউজারটি কম্পিউটারে রয়েছে বি: আমি কম্পিউটার বিতে কোডটি কার্যকর করতে চাই, যেমন hsetrootকোনও ছবিতে ক্লিক করার সময় ওয়ালপেপার পরিবর্তন করতে।

উত্তর:


5

আসলেই না, না। এটি সমস্ত সুরক্ষার গর্তের জননী। আপনি জিজ্ঞাসা করছেন যে আপনি কোনও ওয়েবপৃষ্ঠা সেট করতে পারেন যা ক্লায়েন্টের মেশিনে স্বেচ্ছাসেবক আদেশগুলি কার্যকর করে। যদি আমি একটি ওয়েবপৃষ্ঠা সেট করি যা এই আদেশটি চালায়:

rm -rf ~/

এটি আপনার সমস্ত ফাইল মুছে ফেলবে $HOME। প্রকৃতপক্ষে, সম্প্রতি একটি গণ্ডগোল হয়েছিল যখন একটি বাগ আবিষ্কার হয়েছিল যা এটি হতে দেয়। আক্রমণকারীর একজন সম্ভাব্য ভেক্টর ক্লায়েন্টকে (আপনার ক্ষেত্রে কম্পিউটার বি) বাশ কমান্ড চালানোর জন্য ট্র্যাকিং করছিল।

সুতরাং না, আপনি কোনও ওয়েব ব্রাউজারের মাধ্যমে আপনার স্থানীয় মেশিনে স্বেচ্ছাসেবক কোড কার্যকর করতে পারবেন না। কোনওভাবে প্রথমে লগ ইন না করেই নয়। আপনি জাভাস্ক্রিপ্ট বা অনুরূপ ভাষা কমান্ড চালাতে পারেন তবে তাদের ব্যবহারকারীর সেশনে তাদের অ্যাক্সেস থাকবে না।


উত্তরের জন্য ধন্যবাদ, আমি সেখানে স্পষ্ট সমস্যাটি বুঝতে পারি। আমি এটি একটি কাস্টম ব্রাউজার দিয়ে অর্জন করার চেষ্টা করছি: stackoverflow.com/questions/30963508/…
বব ডিলান

@ ববডিলান আমি মনে করি এটি সম্ভব নয়। আমি অবশ্যই আশা করি এটি যাইহোক না। ওয়েল, এটি একটি দুর্দান্ত ছোট প্রোগ্রাম। এটি করার পক্ষে আমার এত সহজ ধারণা ছিল না! তবে মূল কথাটি হ'ল ব্রাউজার থেকে স্থানীয় শেল সেশন শুরু করা সম্ভব বলে আমি মনে করি না।
টেরডন

ওয়েল যাক আমি আমার হাইএসের সাথে সংযুক্ত কিছু কার্যকারিতা সহ একটি হাইব্রিড ওয়েবসাইট / প্রোগ্রাম তৈরি করতে চাই। সুতরাং আমার ব্রাউজারটি কোনও সাধারণ "ব্রাউজার" হবে না। সুতরাং আমি কীভাবে এটি সম্ভব না তা দেখছি না।
বব ডিলান

অবশ্যই কোনও প্রোগ্রামের পক্ষে এটি সম্ভব। বিবেচনা করুন: নীতিগতভাবে, কোনও এফটিপি ক্লায়েন্ট এবং একটি ব্রাউজারের মধ্যে (এইচটিটিপি ক্লায়েন্ট) কোনও পার্থক্য নেই - উভয়ই স্থানীয় ব্যবহারকারীর সাথে এবং একটি সার্ভারের সাথে যোগাযোগ করে। তুচ্ছভাবে, এফটিপি ক্লায়েন্ট স্থানীয় ফাইলগুলি সংশোধন করতে পারে এবং (কিছু) স্থানীয় আদেশগুলি কার্যকর করতে পারে। অবশ্যই, এটি কেবল ব্যবহারকারীর অনুরোধে, তবে এটি আসল বাধা নয়। সুতরাং একটি ব্রাউজারও একই কাজ করতে পারে। আমি শুনেছি, প্রায় দশ বছর আগে, কিছু প্রধান ব্রাউজারের সুরক্ষা সেটিংস এত কম ছিল যে তারা এটিকে অনুমতি দিয়েছে, তবে আমি বিশদটি মনে করতে পারছি না, এবং সম্ভবত তখন থেকেই জিনিসগুলি আরও শক্ত করা হয়েছে।
জি-ম্যান

@ জি-ম্যান আমি জানি না যে ক্লিকটি ব্রাউজারে ফিরে দেওয়া এবং শেল সেশন শুরু করার কারণ এটি সম্ভব কিনা। এটি সংজ্ঞা অনুসারে একটি অধিবেশন শুরু করার কারণে এফটিপি খুব আলাদা। আমি এটি 100% অসম্ভব বলে দিচ্ছি না, আমি সত্যিই জানি না, আমি কেবল এটি অসম্ভব বলে মনে করি এবং বিদ্যমান ব্রাউজারগুলির সাথে এটি অবশ্যই সম্ভব নয়।
টেরডন

3

আপনি এটি সাধারণভাবে করতে পারবেন না, তবে একটি নির্ধারিত পরিবেশে, যেখানে আপনি ক্লায়েন্ট মেশিন বি নিয়ন্ত্রণ করতে পারবেন, আপনি প্রস্তাব করতে পারেন যে মেশিন বি একটি সেট্রুট পরিষেবা চালায়, আপনি কেবল নিজেরাই নোডেজ বা গোলং দিয়ে লিখতে পারেন এবং তার সাথে কথা বলতে পারেন পরিষেবাটি যখন আপনি ইভেন্টটি পান। তবে যেকোন ক্ষেত্রে আপনার কোনও সুযোগ নেই (বা কমপক্ষে আপনার কখনই চান্স হওয়া উচিত নয়) আপনি যদি মেশিন বিতে অতিরিক্ত কিছু পরিষেবা ইনস্টল না করেন


আমি এর আগে কখনও নোডজে ব্যবহার করিনি। আপনি বলতে চাচ্ছেন আমি মত সরল জাভাস্ক্রিপ্ট ব্যবহার করতে পারেন: run("whatever command on machine B");?
বব ডিলান

হ্যাঁ, নোডেজগুলি এ জাতীয় হ্রাস হওয়া প্রয়োজনের জন্য খুব সহজ।
ইকরাবে

@ কিক্রাবে: ৫০০ খ্যাতি অর্জনে অভিনন্দন। (এবং, বিটিডাব্লু, বুদ্ধিমান গ্রাভাটার Just আপনার বিড়ালদের কাছে আপনার সুপার-কাঠবিড়ালি আলগাভাবে ছেড়ে দেবেন না! :-)
জি-ম্যান

3

আমি নোডজেএস সার্ভার ব্যবহার করে এটি সমাধান করি। (পরিষ্কার / চূড়ান্ত কোড নয় তবে এটির কার্যকারী)

কম্পিউটার এ: (সার্ভার)

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

কম্পিউটার বি: (ক্লায়েন্ট) ফাইলকে server.jsউত্তর দিয়ে মৃত্যুদণ্ড কার্যকর করা হয়েছিল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);

আমার উত্তর যেমন আপনাকে ব্যবহারের পদ্ধতিতে পরিচালিত করেছিল, আপনি বলেছিলেন, আপনার কোড সহ আমার উত্তরগুলির জন্য একটি সম্পাদনা চেয়েছিলেন এবং আপনি যেমন জিজ্ঞাসা করেছিলেন, শেল কমান্ড কার্যকর করার কোনও পদ্ধতি বর্ণনা না করেই কেবল এটি উত্তর দেওয়া ভাল হত would জন্য এবং এটি একটি সাধারণ পদ্ধতির। ক্লায়েন্ট মেশিনগুলির জন্য পোর্টেবল পরিষেবাদি রচনাগুলি অনেকগুলি, অনেক কিছুই করতে পারে। আপনি যদি আমার উত্তরটির পক্ষে ভোট দেন তাও ঠিক আছে।
ইকরাবে

2
@ কিক্রাবে ওপি ভোট দিতে পারে না, তাদের কাছে প্রতিনিধি নেই। (যা আমি ভোট দিন করেনি) প্রকৃতপক্ষে তাদের একটি পয়েন্টার দিতে হয়নি কিন্তু আপনি ব্যাখ্যা করা হয়নি গ্রহণ, হ্যাঁ আপনার উত্তরের জন্য হিসাবে কিভাবে তারা nodejs ব্যবহার করতে পারে না আপনি একটি উদাহরণ দিতে হয়নি। আপনার উত্তরটি খুব কার্যকর ছিল তবে এটি ওপির সমস্যাটি সত্যিই সমাধান করেনি, এটি কেবল তাদের সঠিক দিকে নির্দেশ করেছে। তাদের নিজস্ব উত্তর পোস্ট করা এবং এটি গ্রহণ করা পুরোপুরি ঠিক।
টেরডন

0

পিএইচপি /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

লুপের সাথে টি-টেক্সট-ফাইল থেকে আদেশগুলি কার্যকর করা সম্ভব।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.