Перечислите все файлы, затем выполните скрипт с частью имени файла

Я ищу список всех файлов в папке:

ABC123.cfg
XYZ456.cfg
EFG999.cfg

Имена файлов без .cfg относятся к имени удаленного сервера, ABC123 и т. Д.

Я хочу скопировать пару файлов на каждый из удаленных серверов.

Итак, ищите имена файлов, но берите имя без .cfg. Затем

scp filename.txt username@ABC123:/home/username/

Для каждого удаленного сервера перезаписать файл назначения, если он существует.

Каждый удаленный сервер использует одно и то же имя пользователя и пароль. Могу ли я использовать пароль в команде scp?

2
задан 2 December 2017 в 17:45

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, я удалил путь.

4
ответ дан 2 December 2017 в 17:45

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

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