का उपयोग कर विभिन्न उपयोगकर्ता पर स्विच करें मैंने हाल ही में रिमोट परिनियोजन के लिए कपड़े को देखना शुरू कर दिया है। मुझे एक diff उपयोगकर्ता (जिस से मैं लॉगिन करता हूं) पर स्विच करने की आवश्यकता है और इसे समझने में सक्षम नहीं हूं। क्या यह भी संभव है, अगर ऐसा है तो कैसे? मेरे वर्तमान उपयोगकर्ता में sudo
अनुमतियां नहीं हैं।कपड़े
मैं निम्नलिखित वातावरण चर
env.sudo_prefix = "su newUser -c "
env.sudo_prompt = "Password:"
लेकिन कपड़े बदल रहा है 'NEWUSER' और विफल रहता है के लिए पासवर्ड इनपुट के लिए प्रतीक्षा नहीं करता है की कोशिश की।
out: Password:
[[email protected]] out: su: incorrect password
Fatal error: sudo() received nonzero return code 1 while executing!
Requested: touch x
Executed: su newUser -c -u "root" /bin/bash -l -c "cd /home/oldUser/upgrade && touch x"
Aborting.
Disconnecting from [email protected] done.
अद्यतन:
रूप J.F. सेबेस्टियन का सुझाव दिया, su newUser -c
काम करता है, लेकिन यह हर सर्वर है, जो एक तरह से स्वचालन के उद्देश्य धरा के लिए हर आदेश के लिए पासवर्ड संकेत देता है।
import getpass # just for demonstration
from fabric.api import sudo, settings
def su(user, command):
with settings(password=getpass.getpass('enter password for %s: ' % user),
sudo_prefix="su %s -c " % user,
sudo_prompt="Password:"):
sudo(command)
क्या आपने 'sudo ('su newuser')' – jfs
हाँ की कोशिश की है, मैंने किया। समस्या यह है कि oldUser एक sudoer नहीं है, इसलिए कोई भी sudo कमांड के साथ विफल रहता है [आउट: oldUser sudoers फ़ाइल में नहीं है। इस घटना की सूचना दी जाएगी।] –
क्या आप नए उपयोगकर्ता के रूप में एसएसएच कर सकते हैं? – jfs