क्या शेल स्क्रिप्ट पर पासवर्ड पास करना संभव है?


11

लंबे समय से मैं इसे खोज रहा हूं, मैं जानना चाहता हूं कि क्या शेल स्क्रिप्ट में पासवर्ड पास करना संभव है? बहुतों के जवाब नहीं के साथ लौटे। हाल ही में मैंने एक लेख पढ़ा जिसमें बताया गया था कि शेल स्क्रिप्ट में पासवर्ड कैसे पास किया जाता है। मैंने कोशिश की है, लेकिन यह काम नहीं करता है। यही कड़ी है । क्या कोई चेकआउट कर सकता है और वापस लौट सकता है? इसके अलावा pls मुझे एक खोल स्क्रिप्ट में पासवर्ड पारित करने के लिए एक रास्ता है? अगर कोई pls मुझे यह नहीं बताता कि लिनक्स को पासवर्ड के लिए इनपुट कैसे मिलता है?

जवाबों:


12

"पासवर्ड दर्ज करके", आपका मतलब उपयोगकर्ता के लिए दिखाई दिए बिना डेटा दर्ज करना है।

(गीरा द्वारा सुझाया गया) बैश का उपयोग करते -sसमय , आप टाइप किए गए पात्रों को प्रदर्शित होने से रोकने के लिए विकल्प का उपयोग कर सकते हैं :

read -p "Password please: " -s pass

वैकल्पिक रूप से, टाइप किए गए वर्णों को छिपाने के लिए टर्मिनल के व्यवहार को बदलें stty -echo(अक्षम करें echo)। पासवर्ड को शेल में अंतर्निहित readचर (नीचे उदाहरण में $pass) के साथ पढ़ने के बाद , इसे वापस चालू करें stty echo। क्योंकि नई लाइन से Enterछिपा हुआ है, आप भविष्य की आउटपुट को नई लाइन पर लाने के लिए एक नई लाइन प्रिंट कर सकते हैं।

stty -echo
read -p "Password please: " pass
stty echo
printf '\n'

readऔर printfशेल बिल्ट-इन हैं। पैकेज sttyद्वारा प्रदान किया जाता coreutilsहै जो डिफ़ॉल्ट रूप से स्थापित होता है। इसका मतलब है कि यह स्निपेट बहुत पोर्टेबल है।

नोट: -pविकल्प मानक नहीं है, लेकिन से bash। यदि आपको अन्य गोले में शीघ्र प्रदर्शित करने की आवश्यकता है, तो उपयोग करें:

printf "Password please: "
stty -echo
read pass
stty echo
printf '\n'

संदर्भ:


मैं सिर्फ स्क्रिप्ट में रिमोट सिस्टम का रूट पासवर्ड देना चाहता हूं। क्या यह आपके मामले में संभव है?
कार्तिक87

@ karthick87: नहीं, यह स्क्रिप्ट उपयोगकर्ता के डेटा को अंतःक्रियात्मक रूप से कैप्चर करती है। यदि आप स्क्रिप्ट में रूट पासवर्ड डालना चाहते हैं, तो आप कीबेड लॉगइन पर विचार क्यों नहीं करते हैं?
लेकेनस्टाइन

1
बैश के रीड में भी लाइन में पढ़ते समय गूंज को निष्क्रिय करने का विकल्प होता है। देखते हैं help '\read'
गरिहा

इसके zshमाध्यम से प्राप्त करने योग्य है read -s 'pw?Prompt text', जहां pwएक चर है जहां पासवर्ड रखा जाएगा और -sइनपुट को छिपाने के लिए एक ध्वज है।
बाल्डर्स

2

आप किस प्रोग्राम के लिए पासवर्ड डालना चाहते हैं?

लिंक पर स्क्रिप्ट मेरे लिए काम करती है। ध्यान दें कि एक शेल स्क्रिप्ट नहीं है, लेकिन एक उम्मीद की स्क्रिप्ट है (पैकेज expectस्थापित करने की आवश्यकता है)। पाठ आधारित इंटरैक्टिव कार्यक्रमों को स्वचालित करने के लिए उम्मीद का उपयोग करना एक सामान्य तरीका है।

गैर-संवादात्मक sshलॉगिन अक्सर कुंजी-आधारित प्रमाणीकरण का उपयोग करके खाली पासफ़्रेज़ के साथ किया जाता है।

कुछ अन्य कार्यक्रमों (जैसे sudo) में स्टडिन से पासवर्ड पढ़ने के विकल्प हैं।

कमांड लाइन विकल्प के रूप में एक पासवर्ड प्रदान करना अक्सर एक सुरक्षा समस्या होती है क्योंकि अधिकांश सिस्टम पर कोई भी उपयोगकर्ता किसी भी अन्य उपयोगकर्ता प्रक्रियाओं को देख सकता है जिसमें कमांड लाइन तर्क जैसे सरल उपकरण का उपयोग करना शामिल है ps


मैं सिर्फ ssh प्रोग्राम के लिए पासवर्ड देना चाहता हूं।
कार्तिक87

तो हो सकता है कि कुंजी प्रमाणीकरण आपके लिए काम करता है: ssh-keygenप्रमाणीकरण कुंजी बनाने के लिए उपयोग करें (पास वाक्यांश के लिए पूछे जाने पर केवल Enter दबाएं) और इसका उपयोग करके दूरस्थ उपयोगकर्ता को कॉपी करें ssh-copy-id। यदि कुंजी प्रमाणीकरण sshd के लिए सक्षम है (यह डिफ़ॉल्ट रूप से है) तो ssh तब होगा आपसे पासवर्ड नहीं मांगता।
फ्लोरियन डिस्च

1

एक स्क्रिप्ट को कभी भी पासवर्ड को संभालना नहीं चाहिए। जो भी एप्लिकेशन को पासवर्ड की आवश्यकता है उसे स्वयं पूछें, या यदि यह संभव नहीं है, तो आवेदन के साथ प्रमाणित करने का एक बेहतर साधन ढूंढें। कृपया http://mywiki.wooledge.org/BashFAQ/069 पढ़ें


0

पासवर्ड को बैश स्क्रिप्ट में संग्रहीत करने का एक तरीका है, लेकिन आपको स्क्रिप्ट को एन्क्रिप्ट करना होगा ताकि कोई वास्तव में इसे पढ़ न सके, या उस पर किसी भी प्रकार के डीबगर को चला सके, यह देखने के लिए कि यह क्या कर रहा है। एक बैश / शेल स्क्रिप्ट को एन्क्रिप्ट करने के लिए और वास्तव में यह निष्पादन योग्य है, इसे यहां कॉपी और पेस्ट करने का प्रयास करें

उपरोक्त पृष्ठ पर, आपको बस अपनी स्क्रिप्ट सबमिट करनी है (आप अपने मन की शांति के लिए पहले एक नमूना स्क्रिप्ट प्रस्तुत कर सकते हैं)। आपके लिए एक जिप फाइल जेनरेट होगी। डाउनलोड लिंक पर राइट क्लिक करें और आपके द्वारा प्रदान किए गए URL को कॉपी करें। फिर, अपने UNIX बॉक्स पर जाएं और निम्न चरणों का पालन करें।

स्थापना:

   wget link-to-the-zip-file
   unzip the-newly-downloaded-zip-file
   cd /tmp/KingLazySHIELD
   ./install.sh  /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username)  -force 

आपके लिए उपरोक्त इंस्टॉल कमांड क्या करेगी:

  1. यह निर्देशिका में एन्क्रिप्टेड स्क्रिप्ट स्थापित करेगा /var/tmp/KINGLAZY/SHIELDX-(your-script-name)

  2. यह इस एन्क्रिप्टेड स्क्रिप्ट की एक कड़ी को आप जिस भी निर्देशिका में निर्दिष्ट करते हैं /home/(your-username)- उस तरह से बदल देगा, यह आपको पूर्ण पथ टाइप करने के बिना आसानी से स्क्रिप्ट का उपयोग करने की अनुमति देता है।

  3. सुनिश्चित करता है कि कोई भी स्क्रिप्ट को संशोधित नहीं कर सकता है - एन्क्रिप्टेड स्क्रिप्ट को संशोधित करने का कोई भी प्रयास इसे निष्क्रिय कर देगा ... जब तक कि उन प्रयासों को रोक या हटा नहीं दिया जाता है।

  4. बिल्कुल सुनिश्चित करता है कि कोई भी इसकी प्रतियां नहीं बना सकता है। कोई भी आपकी स्क्रिप्ट को एकांत स्थान पर कॉपी नहीं कर सकता है और यह देखने के लिए कि यह कैसे काम करता है, इसके साथ इसे चारों ओर पेंच करने की कोशिश करें। स्क्रिप्ट की सभी प्रतियां मूल स्थान से लिंक होनी चाहिए जिसे आपने इंस्टॉल के दौरान निर्दिष्ट किया था।

ध्यान दें:

मुझे विश्वास नहीं है कि यह इंटरैक्टिव स्क्रिप्ट के लिए काम करता है जो उपयोगकर्ता को प्रतिक्रिया के लिए संकेत देता है। मूल्यों को स्क्रिप्ट में हार्डकोड किया जाना चाहिए। एन्क्रिप्शन सुनिश्चित करता है कि कोई भी वास्तव में उन मूल्यों को नहीं देख सकता है इसलिए आपको इसके बारे में चिंता करने की आवश्यकता नहीं है।


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