Перечислите все файлы, затем выполните скрипт с частью имени файла
Я ищу список всех файлов в папке:
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В домашнем каталоге я удалил путь.