जवाबों:
मान लीजिए कि आपके पास एक फ़ाइल है ( destfile.txt
) user@host
-वेल्यूज़ के साथ , प्रत्येक पंक्ति पर एक। तब आप इस तरह कर सकते थे:
while IFS= read -r dest; do
scp ourfile.txt "$dest:remote/path/"
done <destfile.txt
for
में -loop while read dest; do
, यह मानक इनपुट से पढ़ा जाएगा। इसे एक स्क्रिप्ट में डालें और destfile.txt
इसे (जैसे, ./thescript.sh <destfile.txt
) में फीड करें ।
एक अन्य विकल्प (और एक लाइनर) इसके बजाय प्रत्येक लक्ष्य नोड से कनेक्ट करने के लिए pdsh का उपयोग करने के लिए होगा और वहां से प्राप्त करने के लिए ट्रिगर करेगा:
pdsh -w^destfile.txt scp hostname:/path/to/file /path/to/destfile
इस कोर्स के लिए एक और जानकारी (स्थानीय होस्ट) और अलग-अलग उपयोगकर्ता अधिकारों की आवश्यकता होती है, लेकिन आप फ़ाइल को पढ़ने में अप्रत्यक्ष रूप से उपयोग करने से बचते हैं।
यहां एक लाइन शेल स्क्रिप्ट के साथ एक और विकल्प है।
cscp.sh 20337.patch < hosts.txt
यह दो फ़ाइलों का उपयोग करता है, एक लूप के लिए, और एक सर्वर होस्ट सूची के लिए। यह $1
सीएलआई से एससीपी के फाइलनाम के रूप में पहले पैरामीटर के लिए पढ़ता है
cscp.sh
#!/bin/bash
while read host; do
scp $1 ${host}:
done
hosts.txt
project-prod-web1
project-prod-web2
project-prod-web3
प्रयोग
फ़ाइल को कई होस्टों में कॉपी करें:
cscp.sh file < hosts