В моей сети более 60 систем Ubuntu. Я хочу скопировать файлы из одной системы в другие системы Ubuntu. Все IP-адреса перечислены в текстовом файле.
Итак, какую команду я могу использовать для выполнения задачи? Какие-нибудь программы bash?
предположим, что у вас есть IP-адреса в файле с именем ips.txt, каждый IP в строке. создайте файл с именем, например * scp_all.sh * и скопируйте в него следующий текст:
#!/bin/bash
while read LINE ; do
scp $1 root@$LINE:$1
done < ips.txt
и выполните его следующим образом:
./scp_all.sh /home/yaroo/Desktop/1.jpg
это действительно простой сценарий, хотя он предполагает, что ваше имя пользователя на всех компьютерах является пользователем root, он не хранит пароль, и вы должны вводить его каждый раз, и у него нет обработчика исключений. если вы хотите изменить адрес получателя, измените вторую $ 1 в команде scp на $ 2 и используйте скрипт следующим образом:
./scp_all.sh /home/yaroo/Desktop/1.jpg /home/yaroo/Downloads/just_copied.jpg
Я сказал, что вам нужно ввести ваш пароль для каждого компьютера, но если вы решили использовать этот скрипт регулярно, вы можете решить эту проблему с помощью этого простого 6-шагового решения, описанного здесь . удачи; -)
Лекенштейн прав: вы, вероятно, должны извлекать файлы с сервера, а не отправлять их клиентам с сервера.
Если вы собираетесь делать это регулярно (особенно с большим количеством файлов), я бы настроил rsync или систему контроля версий , такую как git , а не FTP, так что клиенты должны загружать только то, что изменилось.
(обновление с более раннего комментария) Вы также можете обратиться к системе управления конфигурацией, такой как Puppet , bcfg2 или Chef для управления распространением файлов. по сети.