मैं सीआई पर्यावरण बनाने और इस मुद्दे का सामना करने के लिए मैक पर जेनकींस का उपयोग कर रहा हूं। जेनकींस कंसोल आउटपुट पर लॉग ऑन करें:

sh: sshpass: command not found

मेरी जेनकींस खोल

python $path_python_script"/copy.py"

Copy.py

import os
import ssh
import paramiko
import shutil
import sys
cmmd = "sshpass -p *** scp -r /srcpath username@10.130.***.***:/destpath"
os.system(cmmd)

हालांकि जब मैं टर्मिनल पर पायथन फ़ाइल निष्पादित करता हूं, तो यह निश्चित रूप से काम करता है।

किसी भी मदद की सराहना करें।

1
liiight 4 सितंबर 2020, 11:17

1 उत्तर

सबसे बढ़िया उत्तर

जब किसी एप्लिकेशन को टर्मिनल में निष्पादित किया जा सकता है, लेकिन उसी मशीन पर एक स्क्रिप्ट के माध्यम से लागू होने पर नहीं पाया जा सकता है, तो ज्यादातर समस्या PATH पर्यावरण चर, जहां अनुप्रयोगों की खोज की जाती है।

समस्या का समाधान या तो किया जा सकता है

  1. कॉलिंग स्क्रिप्ट में PATH पर्यावरण चर को समायोजित करके, या
  2. बाइनरी का आह्वान करते समय पूर्ण पथ निर्दिष्ट करके।

किसी भी तरह से, आपको यह पता लगाना होगा कि एप्लिकेशन कहां स्थित है, निष्पादित करके (टर्मिनल में)

which sshpass

परिणाम sshpass निष्पादन योग्य के लिए पूर्ण पथ है। अब आप स्क्रिप्ट में अपने cmmd चर के अंदर इसका उपयोग कर सकते हैं, या आप cmmd को यथावत छोड़ सकते हैं, और PATH को लागू करने से पहले समायोजित कर सकते हैं:

os.environ["PATH"] += os.pathsep + path_to_sshpass

निर्देशिका नाम का उपयोग करना सुनिश्चित करें, पूर्ण पथ का नहीं। अर्थात्, यदि पूर्ण पथ /usr/local/bin/sshpass है, तो path_to_sshpass '/usr/local/bin' होना चाहिए।

1
Konrad Rudolph 5 सितंबर 2020, 13:19