У меня проблемы с сценарием, и я хочу знать, возможно ли сохранить путь соответствующего результата поиска grep?
Я нахожусь на RHEL 7, скрипт проверяет файл rsyslog.conf, который завершает или добавляет правильное значение параметра (тест CIS rhel7, часть 4.2.1.3).
Полный сценарий на данный момент:
#!/bin/bash
if grep "^\$FileCreateMode" /etc/rsyslog.conf /etc/rsyslog.d/*.conf
then
read -p "Is $FileCreateMode superior or equal to 0640 ? [y/n]" rep
if [ $rep == "y" ]
then
echo "No action needed"
else
read -p "Enter the new $FileCreateMode value (0640 recommanded)" rep2
sed -i "/^\$FileCreateMode/ $rep2"
echo "$FileCreateMode new value is now $rep2"
fi
else
echo "$FileCreateMode doesn't exist in rsyslog conf files"
read -p "What's the path of the file to modify ?(Press [ENTER] for default /etc/rsyslog.conf)" path
if [ $path -z ]
then
echo "$FileCreateMode 0640" >> /etc/rsyslog.conf
else
echo "$FileCreateMode 0640" >> $path
fi
fi
Итак, моя проблема в седьмой строке на 11-й строке.Могу ли я получить правильный путь, если мой grep в 3-й строке совпал с переменной, чтобы повторно использовать его 11-го числа.
И я борюсь с тем же sed, потому что я хочу, чтобы он заменил значение после $FileCreateMode, но он продолжает изменять строку $ FileCreateMode.
Я тоже пробовал этот синтаксис, но все еще не получил результат, который я хочу
sed -i -e "s,^\($FileCreateMode[ ]*\).*,\1 0640 ,g" /etc/rsyslog.conf
Заранее спасибо за любую помощь, которую выможет принести, и хорошего дня:)
Редактировать:
По просьбе я упрощаю здесь.
Я хочу grep $ FileCreateMode в / etc / rsyslog.conf и /etc/rsyslog.d/*.conf, и я пытаюсь получить файл назначения (может быть rsyslog.conf, но это может быть testpotato.conf в rsyslog.d) в переменную (например, $ var), чтобы бытьвозможность использовать путь в моем седе в 11-й строке как
sed -i "/^\$FileCreateMode/ 0640" $var
И для проблемы с седом, когда я выполняю эту команду, я хотел бы иметь что-то вроде
old : $FileCreateMode 0777
sed -i "/^\$FileCreateMode/ 0640" $var
new : $FileCreateMode 0640
Но вместо этогоя получаю
old : $FileCreateMode 0777
sed -i "/^\$FileCreateMode/ 0640" $var
new : 0640 ($FileCreateMode is deleted)
надеюсь, что я более нестабилен, еще раз спасибо и чувствуюможете запросить более подробную информацию