Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле / 9 сообщений из 9, страница 1 из 1
30.04.2014, 22:33
    #38630672
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле
Чтобы скопировать файл по SSH можно использовать утилиту SCP :
Код: powershell
1.
scp filename root@192.168.0.19:$PWD/filename



Но если мне надо скопировать этот файл по тем же самым путям на несколько серверов, чьи IP-адреса прописаны в локальном файле /root/iphosts то как написать этот BASH-скрипт?
...
Рейтинг: 0 / 0
30.04.2014, 23:31
    #38630714
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле
И как скопировать файл используя SCP с созданием директорий, если их нету?
Например мы находимся в /root/dir1/dir2/
но на удаленной машине есть только /root/
Как сделать, что бы следующий скрипт отработал успешно - создал dir1, в ней dir2 и в неё скопировал файл filename?
Код: powershell
1.
2.
cd /root/dir1/dir2/
scp filename root@192.168.0.19:$PWD/
...
Рейтинг: 0 / 0
01.05.2014, 10:22
    #38630803
Sleeping Daemon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле
Вася УткинЧтобы скопировать файл по SSH можно использовать утилиту SCP :
Код: powershell
1.
scp filename root@192.168.0.19:$PWD/filename



Но если мне надо скопировать этот файл по тем же самым путям на несколько серверов, чьи IP-адреса прописаны в локальном файле /root/iphosts то как написать этот BASH-скрипт?
find (man find)
for (man bash)
...
Рейтинг: 0 / 0
01.05.2014, 10:24
    #38630805
Sleeping Daemon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле
Вася УткинИ как скопировать файл используя SCP с созданием директорий, если их нету?
Например мы находимся в /root/dir1/dir2/
но на удаленной машине есть только /root/
Как сделать, что бы следующий скрипт отработал успешно - создал dir1, в ней dir2 и в неё скопировал файл filename?
Код: powershell
1.
2.
cd /root/dir1/dir2/
scp filename root@192.168.0.19:$PWD/


man scp
...
Рейтинг: 0 / 0
01.05.2014, 11:17
    #38630830
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле
Вася Уткин,

1. колхозный способ:

Код: plaintext
1.
2.
3.
4.
 ~]# mkdir -p /root/123/123/123
 ~]# echo qqqq > /root/123/123/123/test.txt
 ~]# FILE=/root/123/123/123/test.txt
 ~]# cat $FILE | ssh 192.168.2.59 "mkdir -p `dirname $FILE`; cat > $FILE"

2. неколхозный способ:

Код: plaintext
1.
 ~]# tar cf - /root/123/123/123/test.txt | ssh 192.168.2.59 "cd /; tar fx -"
...
Рейтинг: 0 / 0
01.05.2014, 13:12
    #38630883
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле
Вася Уткин,

Код: sql
1.
2.
3.
4.
5.
#!/bin/bash
cd /root
for hostname in `cat iphosts` ; do
  scp -r long/path/to/your/file $hostname:
done


Но если появляются такие задачи, возможно, надо начинать смотреть в сторону какого-нибудь puppet-a.
...
Рейтинг: 0 / 0
04.05.2014, 22:01
    #38632594
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле
miwaonlineВася Уткин,

Код: sql
1.
2.
3.
4.
5.
#!/bin/bash
cd /root
for hostname in `cat iphosts` ; do
  scp -r long/path/to/your/file $hostname:
done


Но если появляются такие задачи, возможно, надо начинать смотреть в сторону какого-нибудь puppet-a.
Не, это не то, так копирует файл в /root/
Код: powershell
1.
scp -r $PWD/filename root@192.168.0.19:



А как у меня копирует куда надо, но если нет какой-то папки - то ошибка:
Код: powershell
1.
scp -r filename root@192.168.0.19:$PWD/
...
Рейтинг: 0 / 0
05.05.2014, 15:02
    #38633326
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле
Вася УткинНе, это не то, так копирует файл в /root/
Код: powershell
1.
scp -r $PWD/filename root@192.168.0.19:



А как у меня копирует куда надо, но если нет какой-то папки - то ошибка:
Код: powershell
1.
scp -r filename root@192.168.0.19:$PWD/



Все то, но включать голову и читать документацию иногда таки надо. scp -r копирует файлы и папки рекурсивно. Если они есть на компьютере-источнике, то будут созданы и на компьютере-приемнике. Тоесть если на источнике есть путь /root/some/long/path и в нем есть файл file.txt, то комманды
Код: sql
1.
2.
cd /root
scp -r some/long/path/file.txt root@remotehost:


создадут some/long/path на remotehost. А, например
Код: sql
1.
2.
cd /root/some
scp -r long/path/file.txt root@remotehost:


создадут только long/path.
А вот так, например,
Код: sql
1.
2.
cd /root/some
scp -r long/path/file.txt root@remotehost:some/


отработает только при наличии каталога /root/some на remotehost и действительно выдаст ошибку при его отсутствии.

Если же надо гаратировано создавать удалять файловою структуру, тогда лучше не scp, а, например rsync использовать. Или, как я уже писал - puppet. Последний не только файлы умеет перекладывать и очень рекомендуется, если задачи "сделать что-то одинаковое на многих серверах" возникают чаще чем раз в пару месяцев.
...
Рейтинг: 0 / 0
05.05.2014, 17:58
    #38633627
Вася Уткин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле
miwaonlineВася УткинНе, это не то, так копирует файл в /root/
Код: powershell
1.
scp -r $PWD/filename root@192.168.0.19:



А как у меня копирует куда надо, но если нет какой-то папки - то ошибка:
Код: powershell
1.
scp -r filename root@192.168.0.19:$PWD/



Все то, но включать голову и читать документацию иногда таки надо. scp -r копирует файлы и папки рекурсивно. Если они есть на компьютере-источнике, то будут созданы и на компьютере-приемнике. Тоесть если на источнике есть путь /root/some/long/path и в нем есть файл file.txt, то комманды
Код: sql
1.
2.
cd /root
scp -r some/long/path/file.txt root@remotehost:


создадут some/long/path на remotehost. А, например

Если бы вы сами включили мозг и просто попробовали выполнить то что тут пишете, то увидели бы, что такая команда копирует из /root/some/long/path/file.txt в /root/file.txt на remotehost. Только что проверил на RHEL 6. О чем выше уже писал.
scp -r создает только дочерние поддиректории и только при копировании директорий.

Решение давно найдено, т.ч. можете не напрягаться.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Скопировать файл по SSH на несколько серверов, чьи IP-адреса есть в локальном файле / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]