Ладно еще вопрос. Я пишу скрипт, чтобы захватить порт, а затем заменить его, чтобы поместить его в файл конфигурации. как например.

Если я наберу эту команду.....(cat /var/log/lighttpd/access.log | tail -1) и последняя строка будет числом 12. и тогда я хочу (sed -i 's/ 8162/81 ????/' /etc/lighttpd/lighttpd.conf), которые заменяют порт 8162 на /8112 этого вывода от cat (/var/log/lighttpd/access.log | tail -1) равно 12. поэтому в основном он захватывает вывод 12, а затем создает новый порт 8112 ... как мне это сделать, создать переменную или что?? awk будет полезен? или, может быть, что-то связанное, что я должен делать. Я не уверен. какие мысли или идеи???

-1
Jay 25 Фев 2018 в 08:20
12 находится в последней строке отдельно?
 – 
George Udosen
25 Фев 2018 в 09:44

1 ответ

Лучший ответ

Попробуйте этот метод:

  1. Захват 12 в переменной: var=$(cat /var/log/lighttpd/access.log | tail -1), затем
  2. Поместите это в команду sed:

    sed -i.bak "s/8162/81$var/" /etc/lighttpd/lighttpd.conf
    

    ИЛИ

  3. Сразу же добавьте командную строку cat в sed, например:

    sed -i.bak "s/8162/81$(cat /var/log/lighttpd/access.log | tail -1)/" /etc/lighttpd/lighttpd.conf
    

ВНИМАНИЕ :

  1. Всегда создавайте резервную копию, если что-то пойдет не так с этим синтаксисом:

    sed -i.bak "s/8162/81$(cat /var/log/lighttpd/access.log | tail -1)/" /etc/lighttpd/lighttpd.conf
    
  2. Обратите внимание на использование двойных кавычек ", без которых команда не обработает вашу переменную или $(cat /var/log/lighttpd/access.log | tail -1)

1
George Udosen 25 Фев 2018 в 09:54
Хорошо, теперь другая проблема, лол, как мне применить это к selinux, меняющему порт?? а также брандмауэр: semanage port -a -t http_port_t -p tcp 81$var. и firewall-cmd add-port=81$var/tcp -- постоянный????????
 – 
Jay
25 Фев 2018 в 23:38
Я бы так подумал, пожалуйста, запустите тест и, если он не увенчается успехом, откройте новый вопрос!
 – 
George Udosen
26 Фев 2018 в 13:14