Can scp be used to send a single file to multiple remote servers at the same time? If so, how? If not, what's the alternative?
How can I send single file to multiple remote sites at the same time?
ssh;rsync;scp
pdcp from the pdsh package is one option.  pdsh was written to help with management of HPC clusters - I've used it for that, and I've also used it for management of multiple non-clustered machines.pdsh and pdcp use genders to define hosts and groups of hosts (a group is any arbitrary tag you choose to assign to a host, and hosts can have as many tags as you want.)For example, if you had a group called 'webservers' in /etc/genders that included hostA, hostB, hostC, then pdcp -g webservers myscript.sh /usr/local/bin would copy myscript.sh into /usr/local/bin/ on all three hosts.Similarly, pdsh -g all uname -r would run uname -r on every host tagged with all in /etc/genders, with the output from each host prefixed with the host's name.$ pdsh -g all uname -rindra: 3.2.0-3-amd64kali: 3.2.0-3-amd64ganesh: 3.2.0-3-amd64hanuman: 3.2.0-2-686-paepdsh commands and pdcp copies are executed in parallel (with limits and timeouts to prevent overloading of the originating system).When the command being run produces multi-line output, it can get quote confusing to read.  Another program in the pdsh package called dshbak can  group the output by hostname for easier reading.after seeing all your comments, it's possible that pdsh & pdcp may be overkill for your needs...it's really designed to be a system admin's tool rather than a normal non-root user's tool.  It may be that writing a simple shell script wrapper around scp may be good enough for you.  e.g. here's an extremely simple, minimalist version of such a wrapper script.#! /bin/bash # a better version would use a command line arg (e.g. -h) to get a# comma-separated list of hostnames, but hard-coding it here illustrates# the concept well enough.HOSTS=mindfreak@asper.comgrid.ac mindfreak@looper.comgrid.ac# last argument is the target directory on the remote hoststarget_dir=$BASH_ARGV# all but the last arg are the files to copyfiles=${@:1:$((${#@} - 1))}for h in $HOSTS; do    scp $files $h:$target_dirdone