Автоматизируйте скрипт оболочки, используя переменные из текстового файла - PullRequest
0 голосов
/ 01 мая 2020

У меня есть список серверов в файле address.txt в следующем формате

xx.xxx.xx.xx
xx.xxx.xxx.xx
xxx.xx.xx.xx

IP-адреса меняются каждый день, и я получаю новый файл .txt. Количество серверов может меняться каждый день. Я использую Ma c, поэтому я использую csshx.

Я пытаюсь войти на сервер csshx, поэтому мне нужно каждый день создавать такую ​​команду.

csshx -login username --ssh_args "-i ~/.ssh/sshkey" xx.xxx.xx.xx xx.xxx.xxx.xx xxx.xx.xx.xx.

Есть ли способ создать сценарий оболочки чтобы я мог просто запустить часть cssh -login username --ssh_args "-i ~/.ssh/sshkey" и автоматизировать оставшуюся часть строки, используя переменные из файла address.txt? Я думал об использовании для l oop, но команда должна быть в 1 строке.

1 Ответ

2 голосов
/ 01 мая 2020

Традиционным способом было бы использование обратной команды или $() подстановки команд и cat для вывода файла:

csshx -login username --ssh_args "-i ~/.ssh/sshkey" `cat addresses.txt`

Более современные оболочки позволяют заменить cat на <:

csshx -login username --ssh_args "-i ~/.ssh/sshkey" $(< addresses.txt)

Любые пробелы в файле рассматриваются как разделитель аргументов, поэтому адреса серверов могут быть разделены либо переводом строки, либо пробелами / табуляцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...