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

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

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В домашнем каталоге я удалил путь.

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