Перечислите все файлы, затем выполните скрипт с частью имени файла
Я ищу список всех файлов в папке:
ABC123.cfg
XYZ456.cfg
EFG999.cfg
Имена файлов без .cfg
относятся к имени удаленного сервера, ABC123
и т.п.
Я хочу скопировать пару файлов на каждый из удаленных серверов.
Итак, ищите имена файлов, но берите имя без .cfg
, затем
scp filename.txt username@ABC123:/home/username/
Для каждого удаленного сервера перезаписать файл назначения, если он существует.
Каждый удаленный сервер использует одно и то же имя пользователя и пароль. Могу ли я использовать пароль в scp
команда?
1 ответ
Это должно сделать работу:
#!/bin/bash
for i in *.cfg; do
sshpass -f /path/to/passwordfile scp ${i%.cfg}.txt username@${i%.cfg}:
done
или скорее
for i in *.cfg;do sshpass -f /path/to/passwordfile scp ${i%.cfg}.txt username@${i%.cfg}:;done
Пароль передается scp
с помощью sshpass
(следующий Как передать пароль в scp?), который читает его с passwordfile
- не забудьте защитить этот файл от несанкционированного доступа с chmod 400
!
Я немного запутался, какой файл вы хотите отправить сюда, я понял, что есть, например, файл ABC123.txt
это должно быть отправлено на хост ABC123
так что я просто раздели .cfg
используя расширение параметров Bash и добавил .txt
,
Как user@host:
по умолчанию user
В домашнем каталоге я удалил путь.