Как я могу распространять файл через несколько систем в сети?

У меня в моей сети более 60 систем ubuntu. Я хочу скопировать файлы из одной системы в другие системы ubuntu. Все IP-адреса перечислены в текстовом файле.

Итак, какую команду я могу использовать для выполнения задачи? Любые программы bash?

3
задан 21 March 2011 в 23:53

30 ответов

предположим, что у вас есть ваши 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-шагового решения, описанного здесь. удачи;)

3
ответ дан 25 May 2018 в 22:27
  • 1
    просто упомянуть, что я не тестировал этот скрипт! надежды на лучшее ;-) – sazary 22 March 2011 в 00:24
  • 2
    Хороший ответ. Я просто добавлю, что я изменил бы первую строку на #! /bin/bash -e, чтобы она остановилась, если какая-либо из команд завершится с ошибкой. – poolie 24 March 2011 в 14:29
  • 3
    Вы можете объяснить эту строку scp $1 root@$LINE:$1? – karthick87 27 March 2011 в 11:04
  • 4
    @ karthick87 да, мы сохраняем адрес исходного файла в переменной с именем $ 1 (мы получаем ее из командной строки) и IP-адрес конечного компьютера в переменной с именем $ LINE; поэтому мы копируем файл $ 1 в машину $ LINE в том же адресе $ 1. также root @ $ LINE означает логин на машине с IP-адресом $ LINE с именем пользователя root. ОК? ;-) – sazary 27 March 2011 в 18:11
  • 5
    Да, спасибо. Но предположим, что если одна из систем не работает. Будет ли она пропустить и перейти к другой системе? – karthick87 27 March 2011 в 19:29

предположим, что у вас есть ваши 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-шагового решения, описанного здесь. удачи;)

3
ответ дан 25 July 2018 в 22:19

предположим, что у вас есть ваши 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-шагового решения, описанного здесь. удачи;)

3
ответ дан 26 July 2018 в 20:39

предположим, что у вас есть ваши 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-шагового решения, описанного здесь. удачи;)

3
ответ дан 31 July 2018 в 13:21

предположим, что у вас есть ваши 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-шагового решения, описанного здесь. удачи;)

3
ответ дан 2 August 2018 в 03:47

предположим, что у вас есть ваши 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-шагового решения, описанного здесь. удачи;)

3
ответ дан 4 August 2018 в 19:51

предположим, что у вас есть ваши IP-адреса в файле с именем ips.txt, каждый IP-адрес в строке. создайте файл с именем, например * scp_all.sh *, и скопируйте следующий текст ниже:

  #! / bin / bash во время чтения LINE;  сделать scp $ 1 root @ $ LINE: $ 1 done & lt;  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-ступенчатого решения, описанного здесь здесь . удачи; -)

3
ответ дан 6 August 2018 в 03:54

предположим, что у вас есть ваши IP-адреса в файле с именем ips.txt, каждый IP-адрес в строке. создайте файл с именем, например * scp_all.sh *, и скопируйте следующий текст ниже:

  #! / bin / bash во время чтения LINE;  сделать scp $ 1 root @ $ LINE: $ 1 done & lt;  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-ступенчатого решения, описанного здесь здесь . удачи; -)

3
ответ дан 7 August 2018 в 21:51

предположим, что у вас есть ваши IP-адреса в файле с именем ips.txt, каждый IP-адрес в строке. создайте файл с именем, например * scp_all.sh *, и скопируйте следующий текст ниже:

  #! / bin / bash во время чтения LINE;  сделать scp $ 1 root @ $ LINE: $ 1 done & lt;  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-ступенчатого решения, описанного здесь здесь . удачи; -)

3
ответ дан 10 August 2018 в 10:05

предположим, что у вас есть ваши IP-адреса в файле с именем ips.txt, каждый IP-адрес в строке. создайте файл с именем, например * scp_all.sh *, и скопируйте следующий текст ниже:

  #! / bin / bash во время чтения LINE;  сделать scp $ 1 root @ $ LINE: $ 1 done & lt;  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-ступенчатого решения, описанного здесь здесь . удачи; -)

3
ответ дан 13 August 2018 в 16:25
  • 1
    просто упомянуть, что я не тестировал этот скрипт! надежды на лучшее ;-) – sazary 22 March 2011 в 00:24
  • 2
    Хороший ответ. Я просто добавлю, что я изменил бы первую строку на #! / bin / bash -e , чтобы он остановился, если какая-либо из команд завершилась с ошибкой. – poolie 24 March 2011 в 14:29
  • 3
    Вы можете объяснить эту строку scp $ 1 root @ $ LINE: $ 1 ? – karthick87 27 March 2011 в 11:04
  • 4
    @ karthick87 да, мы сохраняем адрес исходного файла в переменной с именем $ 1 (мы получаем ее из командной строки) и IP-адрес конечного компьютера в переменной с именем $ LINE; поэтому мы копируем файл $ 1 в машину $ LINE в том же адресе $ 1. также root @ $ LINE означает логин на машине с IP-адресом $ LINE с именем пользователя root . ОК? ;-) – sazary 27 March 2011 в 18:11
  • 5
    Да, спасибо. Но предположим, что если одна из систем не работает. Будет ли она пропустить и перейти к другой системе? – karthick87 27 March 2011 в 19:29

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версиями, такую ​​как git, а не FTP, чтобы клиенты могли загружать только те вещи, которые были изменены.

1
ответ дан 25 May 2018 в 22:27
  • 1
    Или менеджер конфигурации, такой как Puppet, bcfg2, Chef и т. Д. – geekosaur 22 March 2011 в 00:17
  • 2
    @geekosaur Этот комментарий заслуживает ответа. Я подниму его, как только вы это сделаете. – djeikyb 22 March 2011 в 04:39

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet, bcfg2 или Chef, для управления распределением файлов по сети.

1
ответ дан 25 May 2018 в 22:27

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet, bcfg2 или Chef, для управления распределением файлов по сети.

1
ответ дан 25 July 2018 в 22:19

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версиями, такую ​​как git, а не FTP, чтобы клиенты могли загружать только те вещи, которые были изменены.

1
ответ дан 25 July 2018 в 22:19
  • 1
    Или менеджер конфигурации, такой как Puppet, bcfg2, Chef и т. Д. – geekosaur 22 March 2011 в 00:17
  • 2
    @geekosaur Этот комментарий заслуживает ответа. Я подниму его, как только вы это сделаете. – djeikyb 22 March 2011 в 04:39

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet, bcfg2 или Chef, для управления распределением файлов по сети.

1
ответ дан 26 July 2018 в 20:39

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версиями, такую ​​как git, а не FTP, чтобы клиенты могли загружать только те вещи, которые были изменены.

1
ответ дан 26 July 2018 в 20:39
  • 1
    Или менеджер конфигурации, такой как Puppet, bcfg2, Chef и т. Д. – geekosaur 22 March 2011 в 00:17
  • 2
    @geekosaur Этот комментарий заслуживает ответа. Я подниму его, как только вы это сделаете. – djeikyb 22 March 2011 в 04:39

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet, bcfg2 или Chef, для управления распределением файлов по сети.

1
ответ дан 31 July 2018 в 13:21

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версиями, такую ​​как git, а не FTP, чтобы клиенты могли загружать только те вещи, которые были изменены.

1
ответ дан 31 July 2018 в 13:21
  • 1
    Или менеджер конфигурации, такой как Puppet, bcfg2, Chef и т. Д. – geekosaur 22 March 2011 в 00:17
  • 2
    @geekosaur Этот комментарий заслуживает ответа. Я подниму его, как только вы это сделаете. – djeikyb 22 March 2011 в 04:39

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet, bcfg2 или Chef, для управления распределением файлов по сети.

1
ответ дан 2 August 2018 в 03:47

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версиями, такую ​​как git, а не FTP, чтобы клиенты могли загружать только те вещи, которые были изменены.

1
ответ дан 2 August 2018 в 03:47
  • 1
    Или менеджер конфигурации, такой как Puppet, bcfg2, Chef и т. Д. – geekosaur 22 March 2011 в 00:17
  • 2
    @geekosaur Этот комментарий заслуживает ответа. Я подниму его, как только вы это сделаете. – djeikyb 22 March 2011 в 04:39

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet, bcfg2 или Chef, для управления распределением файлов по сети.

1
ответ дан 4 August 2018 в 19:51

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версиями, такую ​​как git, а не FTP, чтобы клиенты могли загружать только те вещи, которые были изменены.

1
ответ дан 4 August 2018 в 19:51
  • 1
    Или менеджер конфигурации, такой как Puppet, bcfg2, Chef и т. Д. – geekosaur 22 March 2011 в 00:17
  • 2
    @geekosaur Этот комментарий заслуживает ответа. Я подниму его, как только вы это сделаете. – djeikyb 22 March 2011 в 04:39

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet , bcfg2 или Chef to управлять распределением файлов по сети.

1
ответ дан 6 August 2018 в 03:54

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версией , например git , а не FTP, чтобы клиенты только нужно загружать вещи, которые изменились.

1
ответ дан 6 August 2018 в 03:54

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet , bcfg2 или Chef to управлять распределением файлов по сети.

1
ответ дан 7 August 2018 в 21:51

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версией , например git , а не FTP, чтобы клиенты только нужно загружать вещи, которые изменились.

1
ответ дан 7 August 2018 в 21:51

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версией , например git , а не FTP, чтобы клиенты только нужно загружать вещи, которые изменились.

1
ответ дан 10 August 2018 в 10:05

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet , bcfg2 или Chef to управлять распределением файлов по сети.

1
ответ дан 10 August 2018 в 10:05

Lekensteyn верен - вы, вероятно, должны вытаскивать файлы с сервера, а не нажимать их на клиентов с сервера.

Если вы собираетесь делать это регулярно (особенно с большое количество файлов), я бы установил rsync или систему управления версией , например git , а не FTP, чтобы клиенты только нужно загружать вещи, которые изменились.

1
ответ дан 13 August 2018 в 16:25
  • 1
    Или менеджер конфигурации, такой как Puppet, bcfg2, Chef и т. Д. – geekosaur 22 March 2011 в 00:17
  • 2
    @geekosaur Этот комментарий заслуживает ответа. Я подниму его, как только вы это сделаете. – djeikyb 22 March 2011 в 04:39

(обновление с более раннего комментария). Вы также можете посмотреть в систему управления конфигурацией, такую ​​как Puppet , bcfg2 или Chef to управлять распределением файлов по сети.

1
ответ дан 13 August 2018 в 16:25

Другие вопросы по тегам:

Похожие вопросы: