#linux #ansible
#linux #ansible
Вопрос:
У меня есть файл журнала, создаваемый ansible при каждом запуске playbook. Не уверен, почему существует? вставлено.
getcpu_and_mem_lin?2020-08-25.log
Как мне удалить? в файле?
Как бы мне добавить . вместо ? вместо этого?
Немного предыстории: у меня есть оболочка-оболочка для ansible, которая выдает мне новый файл журнала с названием playbook и датой / временем с псевдонимом в моем .bashrc.
ansible-playbook-wrapper.sh
#!/bin/bash
export ANSIBLE_LOG_PATH=/home/myuser/log/$(echo $1 | cut -d . -f 1 amp;amp; date " %Y-%m-%d").log
ansible-playbook $@
В моем .bashrc
alias ansible-playbook="/home/myuser/ansible-playbook-wrapper.sh"
Ответ №1:
Вопрос: «Как бы мне добавить a . вместо?»
Краткий ответ: Разделите команды и поставьте точку между ними
$(echo $1 | cut -d . -f 1).$(date " %Y-%m-%d")
Первым параметром оболочки должен быть файл playbook. Давайте заменим $1
на playbook.yml
и протестируем это
shell> echo playbook.yml | cut -d . -f 1 amp;amp; date " %Y-%m-%d"
playbook
2020-08-26
Это дало нам 2 строки. Это не то, что мы хотим. Давайте протестируем переменную среды
shell> export ANSIBLE_LOG_PATH=/home/myuser/log/$(echo playbook.yml | cut -d . -f 1 amp;amp; date " %Y-%m-%d").log
shell> echo $ANSIBLE_LOG_PATH
/home/myuser/log/playbook 2020-08-26.log
Из-за новой строки между playbook
и 2020-08-26
есть пробел. Давайте исправим это и запустим команды отдельно
shell> export ANSIBLE_LOG_PATH=/home/myuser/log/$(echo playbook.yml | cut -d . -f 1)$(date " %Y-%m-%d").log
shell> echo $ANSIBLE_LOG_PATH
/home/myuser/log/playbook2020-08-26.log
Хорошо. Нет пробела. Давайте сделаем его более читаемым и поставим точку ‘.’ между playbook
и 2020-08-26
shell> export ANSIBLE_LOG_PATH=/home/myuser/log/$(echo playbook.yml | cut -d . -f 1).$(date " %Y-%m-%d").log
shell> echo $ANSIBLE_LOG_PATH
/home/myuser/log/playbook.2020-08-26.log