मैं squid.conf
एक सर्वर से दूसरे में कॉपी करना चाहता हूं ।
- सर्वर एक दूसरे से बात नहीं करते हैं। मैं अपने वर्कस्टेशन से जाना चाहूंगा।
- दोनों सर्वरों में फ़ाइल है, इसलिए यह लक्ष्य पर ओवरराइट किया जाएगा।
- फ़ाइलों की
600
अनुमति है और रूट के स्वामित्व में हैं। - ssh के माध्यम से रूट लॉगिन अक्षम है (
PermitRootLogin no
)। - मैं इसे एक पंक्ति में करना चाहूंगा, यदि संभव हो तो, क्योंकि यह एक सेटअप गाइड का एक हिस्सा होगा।
मैं करना जानता हूं
ssh source 'tar czpf - -C /etc/squid/ squid.conf' | \
ssh target 'tar xzpf - -C /etc/squid/'
सर्वर के बीच फ़ाइलों को कॉपी करने और अनुमतियों को संरक्षित करने के लिए। हालाँकि, इस मामले में मुझे "अनुमति अस्वीकृत" मिल जाएगी।
मुझे यह भी पता है कि मैं यह कर सकता हूं:
ssh -t source 'sudo cat /etc/squid/squid.conf'
इस तरह -t
से फ़ाइल की सामग्री को आउटपुट करने से पहले sudo एडमिन पासवर्ड मांगता है।
समस्या यह है, मुझे नहीं पता कि उन तकनीकों को किस तरह से मिलाया जाए जो प्रत्येक सर्वर पर sudo पासवर्ड के लिए पूछें, और फ़ाइल को उसके गंतव्य पर स्थानांतरित करें। क्या यह संभव है?
अद्यतन : यहाँ सबसे अच्छा मैं के साथ आ सकता है:
ssh -t source 'sudo tar czf /tmp/squid.tgz -C /etc/squid squid.conf' && \
ssh source 'cat /tmp/squid.tgz' | \
ssh target 'cat >/tmp/squid.tgz' && \
ssh -t source 'sudo rm /tmp/squid.tgz' && \
ssh -t target \
'sudo tar xzf /tmp/squid.tgz -C /etc/squid && sudo rm /tmp/squid.tgz'
इसे वन-लाइनर कहना एक खिंचाव जैसा लगता है। मुझे लगता है कि मैं सेटअप गाइड में अलग-अलग चरणों में इसे तोड़ दूंगा।