Я ищу список всех файлов в папке:
ABC123.cfg
XYZ456.cfg
EFG999.cfg
Имена файлов без .cfg
относятся к имени удаленного сервера, ABC123
и т. Д.
Я хочу скопировать пару файлов на каждый из удаленных серверов.
Итак, ищите имена файлов, но берите имя без .cfg
. Затем
scp filename.txt username@ABC123:/home/username/
Для каждого удаленного сервера перезаписать файл назначения, если он существует.
Каждый удаленный сервер использует одно и то же имя пользователя и пароль. Могу ли я использовать пароль в команде scp
?
Это должно сделать работу:
#!/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
, я удалил путь.