এইচটিএমএল বোতামের সাহায্যে শেল স্ক্রিপ্টটি চালান


12

কোনও ওয়েবসাইটে বোতাম চাপলে আমি ব্যাশ স্ক্রিপ্টটি চালু করতে চাই launch এটা আমার প্রথম প্রচেষ্টা:

<button type="button" onclick="/path/to/name.sh">Click Me!</button>

তবে ভাগ্য নেই। কোন পরামর্শ?

সম্পাদনা- ছদ্মবেশ এবং মিট পরামর্শ অনুসরণ:

আমার কাছে / var / www তে একটি পিএইচপি ফাইল রয়েছে যা আমি আমার ওয়েব-ব্রাউজারকে নির্দেশ করি। ফাইলের বিষয়বস্তুগুলি নিম্নরূপ:

<?php
exec("/home/aa/scripts/test.sh");
?>

tesh.sh এ এতে রয়েছে:

screen -S server1 -X quit

আমি /home/aa/scripts/test.shযদি শেল টাইপ করি তবে স্ক্রিপ্টটি কার্যকর করতে সক্ষম। যাইহোক, যখন আমি আমার ওয়েব ব্রাউজারটি http://example.com/screen.php (যার উপরের কোডটি রয়েছে) এ নির্দেশ করি তখন আমি একটি ফাঁকা পৃষ্ঠা দেখি এবং স্ক্রিপ্টটি কার্যকর হয় নি। উভয়েরই অনুমতি কার্যকর করা আছে have কেন এটি কাজ করে না?


এটি কী ধরণের ওয়েব সার্ভার তা জেনে রাখা আকর্ষণীয় হবে। উদাহরণস্বরূপ এটি কোনও হোম লিনাক্স সার্ভার, এক্সএএমপিপি সহ একটি উইন্ডোজ মেশিন বা বড় হোস্টারের কোনও ডোমেন নাম সহ একটি স্ট্যান্ডার্ড ওয়েবসাইট ভর হোস্টিং অফার হতে পারে?
এমআইটি

আমি ডেবিয়ান লেনিতে আছি যা আমি ভাড়া নিয়েছি এমন কোনও ভিপিএস বন্ধ করে দেয়
ডিউকভিন

1
এটি সত্যই এটির একটি ডুপ, এমনকি একই ব্যবহারকারী ">> স্ট্যাকওভারফ্লো.com/ জিজ্ঞাসা / 23২৩৫85/৫/২ দ্বারা জিজ্ঞাসা করেছেন , যেখানে আমি আমার কাজের উত্তর পোস্ট করেছি F মনে হয় তাদের লিঙ্ক করা উচিত
ফ্রিসফটওয়্যার সার্ভারস

উত্তর:


11

আপনি যা করার চেষ্টা করছেন সেভাবে সম্ভব নয়।

মনে রাখবেন যে এর সর্বদা দুটি দিক রয়েছে: ক্লায়েন্ট পাশ এবং সার্ভারের দিক। স্ক্রিপ্টটি ক্লায়েন্ট কম্পিউটারে বা সার্ভারে রয়েছে?


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

এটি সম্পর্কে চিন্তা করুন: ব্রাউজারটি কীভাবে ফাইলটি খুলতে জানবে? আপনি কি মনে করেন না এটিও সুরক্ষা সমস্যা হতে পারে - একটি ক্লায়েন্টের কম্পিউটারে স্ক্রিপ্টগুলি কার্যকর করার জন্য একটি সরল ওয়েবসাইট? যদি এমন কিছু হত onClick('rm -rf /home/user')?

একটি বিকল্প জাভা অ্যাপলেট চালানো হবে, যদি আপনি ক্লায়েন্টের উপর কোড কার্যকর করতে চান তবে এটি ঠিক একই নয় এবং এটি সত্যিই জটিল কিছু। আমি এটিকে বিস্তারিতভাবে ব্যাখ্যা করা প্রয়োজন বলে মনে করি না।


যদি স্ক্রিপ্টটি সার্ভারে থাকে: আপনি যদি সার্ভারের দিক থেকে কোনও স্ক্রিপ্ট চালাতে চান এবং ব্যবহারকারীর দ্বারা এটি কার্যকর করা যায় তবে আপনাকে একটি সার্ভার সাইড প্রোগ্রামিং ভাষা ব্যবহার করতে হবে। কেবল এইচটিএমএল এটি করবে না, কারণ এটি কম-বেশি একটি স্ট্যাটিক ফাইল। আপনি যদি সার্ভারের সাথে ইন্টারঅ্যাক্ট করতে চান তবে আপনি পিএইচপি ব্যবহার করতে পারেন ।

এটি execওয়েব সার্ভারে সঞ্চিত একটি কমান্ড লাইন স্ক্রিপ্ট চালানোর কাজ করে। সুতরাং মূলত, আপনি লিখতে পারতেন exec('/path/to/name.sh');এবং এটি সার্ভারে স্ক্রিপ্টটি চালাত।

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


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

সমস্যার ক্ষেত্রে echo exec(...);কোনও ত্রুটি আছে কিনা তা পরীক্ষা করে স্ক্রিপ্টের রিটার্ন মানটি পরীক্ষা করে দেখুন।

আপনি কমান্ড লাইন থেকে স্ক্রিপ্টটি চালাতে পারেন এবং এটি ব্রাউজার সহ নয় php /path/to/file.php


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

ঠিক আছে, এটি তখন ভিন্ন বিষয়। আপনি কি পিএইচপি ইনস্টল করেছেন? execলেখার মাধ্যমে লাইনের রিটার্ন কোড পাওয়ার চেষ্টা করুন echo exec(...);। এছাড়াও নোট করুন যে স্ক্রিপ্টটির জন্য কেবলমাত্র আপনার ব্যবহারকারী নয়, আপনার ওয়েবসারভার যে গোষ্ঠীতে চলছে তার জন্য অনুমতি সম্পাদনের প্রয়োজন।
slhck

হ্যাঁ আমার উভয় ফাইলে chmod 777 রয়েছে। এবং আমি শেল থেকে অদ্ভুত ফলাফলের সাথে সরাসরি পিএইচপি চালানোর চেষ্টা করেছি। পেস্টবিন.php -v com/eU0xTkp2 যাইহোক, আমি পিএইচপি ইনস্টল করেছি, এর সাথে নিশ্চিত হয়েছি এবং লোকেরা ফাইল সম্পাদনা করার জন্য আমার কাছে পিএইচপি ফাইলম্যানার আছে ile কেন এটি পিএইচপি ইন্টারপ্রেটার ব্যবহার করছে না?
ডিউকভিন

আপনার php /var/www/trash/run.phpকেবল এটি পিএইচপি ফাইলের নাম দিয়ে চালানো উচিত নয়।
slhck

1
না একটা জিনিস! আমি সুনির্দিষ্ট বিষয়ে খুব বেশি নিশ্চিত নই, তবে হওয়া উচিত কারণ আপনি যখন কমান্ড লাইন থেকে এটি চালাবেন, আপনি এটি সঠিক ব্যবহারকারীরূপে চালিত করবেন, যখন ব্রাউজার থেকে চালিত হওয়ার সময়, ব্যবহারকারী অনুপস্থিত থাকে। আপনার শেল স্ক্রিপ্টের মধ্যে আপনার এটি পরীক্ষা করা দরকার, আমার ধারণা।
slhck

4

এর জন্য আপনার কিছু সার্ভার সাইড বুদ্ধি দরকার। এইচটিএমএল একা যথেষ্ট নয়, কারণ এটি অচল। একটি সাধারণ উপায় পিএইচপি হবে। অনেক হোস্ট করা অফার পিএইচপি ডিফল্টরূপে ইনস্টল থাকে।

আপনার সার্ভারের মূল ডিরেক্টরিতে একটি পাঠ্য ফাইল লাগাতে আপনি একটি এফটিপি প্রোগ্রাম ব্যবহার করতে পারেন।

নিম্নলিখিত বিষয়বস্তুর সাথে পাঠ্য ফাইলটির নাম "রান.এফপি" রাখা যেতে পারে:

<h3>Executing /path/to/name.sh</h3>
<?
exec('/path/to/name.sh');
?>

আপনি যদি আপনার ব্রাউজারে এই পৃষ্ঠাটি দেখেন তবে আপনার ডোমেনটি "উদাহরণ.com" হিসাবে বলুন:

http://example.com/run.php

তারপরে পিএইচপি ফাইলটি সার্ভারে কার্যকর করা হবে। এটি শিরোনাম সহ ব্রাউজারে একটি HTML পৃষ্ঠা প্রেরণ করবে। এবং স্ক্রিপ্টটি সার্ভারে কার্যকর করা হবে।

কিছু বিষয় মাথায় রাখতে এবং কিছু সম্ভাব্য উন্নতি রয়েছে:

1) প্রত্যেকে এই পৃষ্ঠায় হিট করতে সক্ষম হবে, এছাড়াও রোবটগুলি। আপনি htacces দিয়ে পৃষ্ঠাটি সুরক্ষিত করতে পারেন।

2) এই পৃষ্ঠাটি ব্রাউজার থেকে একটি সাধারণ "জিইটি" অনুরোধের ক্ষেত্রে চালু হবে। তবে এটি সার্ভারে একটি ক্রিয়াকলাপটি প্রেরণ করে এবং যদি এই ক্রিয়াটি ডেটা পরিবর্তন করে বা কোনও গুরুত্বপূর্ণ কাজ করে তবে কেবলমাত্র একটি পোস্টের অনুরোধে স্ক্রিপ্টটি ফায়ার করা ভাল।

3) আপনি পৃষ্ঠাটি পুনরায় লোড / এক্সিকিউট করতে সক্ষম হতে একটি ফর্ম / বোতাম বিবৃতি sertোকাতে পারেন। এইচটিএমএল ফর্ম বিবৃতিটির পদ্ধতি বৈশিষ্ট্যে সঠিক পদ্ধতি (জিইটি বা পোষ্ট) ব্যবহার করার বিষয়টি নিশ্চিত হন।

৪) শেল স্ক্রিপ্ট (rturn কোড এবং সম্ভবত টেক্সট আউটপুট) এর ফলাফল পেয়ে এটি ব্রাউজারে লিখতে ভাল হবে। এটিতে পৃথক বিচারের জন্য যথেষ্ট সমস্যা রয়েছে:)


3

এটি অনুমতি সংক্রান্ত সমস্যা হতে পারে।

যখন আপনি এটি ব্যবহার আলোড়ন সৃষ্টি ওয়েবঅ্যাপ্লিকেশনটি , এটা Apache স্ক্রিপ্ট চালানো হয়। যদি আপাচে স্ক্রিপ্টটি চালানোর অনুমতি না থাকে তবে এটি কাজ করবে না।

সমাধান: অনুমতি পরীক্ষা করে আবার চেষ্টা করুন .. :)


1

আমি জানি যে এটি দেরি হয়ে গেছে তবে আমি মনে করি এটি লক্ষ্য করার মতো যে কোনও সার্ভারে সিজিআই কনফিগার করা আপনাকে পিএইচপি বা সাজানোর কোনও কিছুই ব্যবহার না করে সার্ভার-সাইড ব্যাশ স্ক্রিপ্ট চালানোর অনুমতি দেবে।

আমি জানি এটি আপডেট করা প্রশ্নের সমাধান করছে না, তবে জিনিসগুলি নিজেরাই বের করার চেষ্টা করার সময় আমি এটি পেয়েছিলাম যাতে আমি বুঝতে পেরেছিলাম যে এটি পোস্ট করব!


0

ব্রাউজার থেকে সরাসরি শেল স্ক্রিপ্টগুলি চালনা করতে, আপনার .htaccess ফাইলে এই নিয়মটি যুক্ত করা উচিত:

Options +ExecCGI
AddHandler cgi-script .sh

এটি ওয়েব সার্ভারকে .sh ফাইলগুলিকে সিজিআই স্ক্রিপ্ট হিসাবে বিবেচনা করতে বলে। .Sh ফাইলের অনুমতিগুলি 755 এ পরিবর্তন করতে ভুলবেন না।

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