मैं थोर का उपयोग करके एक छोटी लाइब्रेरी लिखने की कोशिश कर रहा हूं ताकि नई परियोजनाओं और साइटों को त्वरित बनाने में मेरी सहायता कर सकूं। मैंने इस छोटी विधि को लिखा:नेट :: एसएसएच सुडो कमांड पासवर्ड दर्ज करने के बाद लटकता है
def ssh(cmd)
Net::SSH.start(server_ip, user, :port => port) do |session|
session.exec cmd
end
end
बस आवश्यकता होने पर दूरस्थ सर्वर पर त्वरित आदेश चलाने में मेरी सहायता करने के लिए।
समस्या तब होती है जब मुझे रिमोट एंड पर सुडो के तहत कमांड चलाने की आवश्यकता होती है, तो स्क्रिप्ट बस मुझ पर लटका लगती है। उदाहरण के लिए जब यह क्रियान्वित ...
ssh("sudo cp #{file_from_path} #{file_to_path}")
स्क्रिप्ट पूरी बात hhangs में यह लिखने के बाद पासवर्ड
[sudo] password for user:
के लिए मुझे संकेत देगा लेकिन तब।
किसी को पता क्या होगा यह वास्तव में क्यों लटका है, और नेट :: एसएसएच (या कुछ वैकल्पिक) के तहत रिमोट सर्वर पर सुडो कमांड चलाने के लिए मैं क्या कर सकता हूं?
* नोट: सुझाव देने से पहले, मैंने मूल रूप से कैपिस्ट्रानो के तहत एक नुस्खा के रूप में इस पुस्तकालय को लिखना शुरू कर दिया था, जब तक कि मैं थोर पर नहीं आया, और सोचा कि यह कोशिश करने का एक अच्छा मौका होगा। यदि आवश्यक हो तो मैं पूरी चीज को कैपिस्ट्रानो पर वापस स्विच करने के खिलाफ नहीं हूं, लेकिन अगर मैं रिमोट सर्वर पर सुडो कमांड चलाने का कोई आसान तरीका नहीं हूं तो मैं वास्तव में आश्चर्यचकित हूं।
क्या आप पासवर्ड पाइप करने में सक्षम हैं? 'ssh (" sudo cp # {from} # {to} <"mysupass") ' – Fosco
बेशक मैं पिछली टिप्पणी में डबल कोट्स से बचने के लिए भूल गया था। – Fosco
कोशिश की, लेकिन यह काम नहीं करता है। यह वापस आ गया है "bash: mysupass: ऐसी कोई फ़ाइल या निर्देशिका नहीं है।" क्या यह प्रॉम्प्ट के माध्यम से पासवर्ड को पाइप करने का प्रयास है? यदि ऐसा है, तो विचार काम कर सकता है, लेकिन सिंटैक्स शायद बंद है। मैं देखता हूं कि मुझे क्या मिल सकता है कि – joeellis