मैं बैश स्क्रिप्ट का उपयोग करके रिमोट सर्वर में क्रॉन जॉब सेट करने की कोशिश कर रहा हूं। कमांड इस प्रकार है:
ssh $NODE_USER@$NODE_HOST "cat <(crontab -l) <(echo "33 03 * * 0-6 $Scripts_dir/runStaticHTML.sh -c $Scripts_dir/staticHTML.conf") | crontab - "
जब मैं सीधे सर्वर के अंदर इस कमांड को निष्पादित करता हूं, तो यह ठीक चलता है। लेकिन जब मैं इस बैश को चलाता हूं, तो यह निम्नलिखित त्रुटि दे रहा है
copysetup.sh: command substitution: line 68: syntax error near unexpected token `("
copysetup.sh: command substitution: line 68: `cat <(crontab -l) < (echo "33 03 * * 0-6 $Scripts_dir/runStaticHTML.sh -c $Scripts_dir/staticHTML.conf") | crontab - "
और यह दूरस्थ सर्वर में प्रवेश को समाप्त कर देगा।
जब मैं सर्वर से बाहर निकलता हूं, तो यह निम्नलिखित त्रुटि देता है। विम: चेतावनी: आउटपुट एक टर्मिनल के लिए नहीं है विम: चेतावनी: इनपुट एक टर्मिनल से नहीं है
उत्तर:
उत्तर № 1 के लिए 1The ssh
सर्वर का उपयोग कर आदेश चल रहा है sh
, नहीं bash
, तो यह समझ में नहीं आता <(command)
(यह एक बैश विस्तार है).
आप इस के लिए प्रक्रिया प्रतिस्थापन का उपयोग करने की जरूरत नहीं है.कोशिश करना:
ssh $NODE_USER@$NODE_HOST "(crontab -l; echo "33 03 * * 0-6 $Scripts_dir/runStaticHTML.sh -c $Scripts_dir/staticHTML.conf") | crontab -"
यह भी ध्यान दें कि चर $Scripts_dir
स्थानीय मशीन पर विस्तृत है, सर्वर नहीं.