আপনি কি scp
একই কমান্ডের একাধিক লোকেশনে ফাইল করতে পারেন ?
উদাহরণ স্বরূপ:
scp file.txt user@ip-1.com:, user@ip2.com:
বা ব্যাশ স্ক্রিপ্ট তৈরি করা কি আরও ব্যবহারিক হবে যা এতে ইতিমধ্যে সমস্ত হোস্ট রয়েছে এবং এটি কেবল যুক্তি হিসাবে একটি ফাইল নেবে?
আপনি কি scp
একই কমান্ডের একাধিক লোকেশনে ফাইল করতে পারেন ?
উদাহরণ স্বরূপ:
scp file.txt user@ip-1.com:, user@ip2.com:
বা ব্যাশ স্ক্রিপ্ট তৈরি করা কি আরও ব্যবহারিক হবে যা এতে ইতিমধ্যে সমস্ত হোস্ট রয়েছে এবং এটি কেবল যুক্তি হিসাবে একটি ফাইল নেবে?
উত্তর:
আসুন ধরা যাক আপনার কাছে মূল্য ( ভ্যালু destfile.txt
) সহ একটি ফাইল ( ) রয়েছে user@host
, প্রতিটি লাইনে একটি করে। তাহলে আপনি এটির মতো করতে পারেন:
while IFS= read -r dest; do
scp ourfile.txt "$dest:remote/path/"
done <destfile.txt
for
তবে while read dest; do
এটি স্ট্যান্ডার্ড ইনপুট থেকে পড়বে। এটি একটি স্ক্রিপ্টে রাখুন এবং এতে ফিড দিন destfile.txt
(যেমন, ./thescript.sh <destfile.txt
)।
অন্য বিকল্প (এবং একটি এক-লাইনার) পরিবর্তে প্রতিটি টার্গেট নোডের সাথে সংযোগ স্থাপনের জন্য পিডিএস ব্যবহার করা এবং সেখান থেকে একটি ট্রিগারটি ট্রাই করতে হবে:
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