У меня есть требование получить набор файлов из 15 разных хостов. Это в основном текстовые файлы.
Я смог установить ssh-ключи и прочее так, чтобы scp, ssh, rsync и т.д. Теперь были без пароля.
Теперь я ищу правильный способ получить эти файлы, то есть получить их быстро и таким образом, чтобы отслеживать (т.е. Не фоновый процесс, который, надеюсь, когда-нибудь закончится, а затем начнет обработку этих файлов)
На данный момент я язык агностик. Все, что угодно от оболочки, perl, python, ruby и т.д.
Просто, хотя я должен спросить у экспертов здесь.
Попробуйте Perl Net :: OpenSSH :: Parallel:
use Net::OpenSSH::Parallel;
my $pssh = Net::OpenSSH::Parallel->new;
$pssh->add_host($_) for @hosts;
$pssh->push('*', scp_get => '/remote/file/path', '/local/file/path-%HOST%');
$pssh->run;
# do whatever you want with the local files.
Используйте ткань ! В частности, вы можете найти страницу параллельного исполнения интересной.
Пример:
from fabric.api import env, run
env.user = 'implicit_user'
env.hosts = ['host1', 'explicit_user@host2', 'host3']
def print_user():
with hide('running'):
run('echo "%(user)s"' % env)
Вывод:
$ fab print_user
[host1] out: implicit_user
[explicit_user@host2] out: explicit_user
[host3] out: implicit_user
Done.
Disconnecting from host1... done.
Disconnecting from host2... done.
Disconnecting from host3... done.