LINUX.ORG.RU

Сообщения firebolt

 

Запись в конец строки

Приветствую вас, участники интереснейшего форума! Передо мной стоит несложная задача, решить которую оказалось не так-то просто.

Я ищу слово из общего списка в другом списке и при условии, что слово есть во втором списке, дописываю в конец строки, содержащей данное слово в общем списке, одни символы, а если его нет во втором списке - другие символы.

Лучшее, чего мне удалось добиться - это:

Общий список - /home/user/internet-users.txt

Второй список - /home/user/users-external-mail.txt

while read user
     do
        result=`grep -i $user /home/user/users-external-mail.txt | wc -l`
            if [ $result != 0 ]; then
                sed -ie 's/\("$user".*\)$/\1;+/' "/home/user/internet-users.txt"
            else
                sed -ie 's/\("$user".*\)$/\1;/' "/home/user/internet-users.txt"
            fi
     done < "/home/user/internet-users.txt"

На выходе должен быть csv-файл вида

user;+;;+;
Но, как я понял, sed не поддерживает переменные. После запуска этого скрипта создается файл /home/user/internet-users.txte (добавляется «e» в конце «расширения») с идентичным исходному файлу содержимым.

В общем, проблема в том, как дописать в конец строки, искомой по переменной.

 , ,

firebolt
()

Получить название учетной записи из файла

Как только не игрался с sed (в котором толком не разбираюсь) не удаётся получить отдельно именно учетную запись пользователя (pvasechkin) из файла со следующим текстом:

Учетная запись (pvasechkin) будет отключена: 20.01.2017 в связи с увольнением Васечкина П.А. 16.01.2017 (01-10/45-лс)

Подключенные сервисы:
 *   Интернет
 *   Лотус
 *   Почтовый ящик: pvasechkin@domain.local;

Удалось получить только строку. По идее, можно просто из первой строки показать все символы латиницы.

Ооо! Обнаружил, что ерунду спросил. Имя учетки-то не одно и то же, вот в чем суть.

 

firebolt
()

Удаление слов из списка в списке файлов

Приветствую всех монстров программирования! Сразу прошу отнестись с пониманием. По работе пишу иногда bash-скрипты, сильных знаний не имею.

Задача моя состоит в том, чтобы удалить в списке файлов строки, содержащие слова, которые тоже берутся из списка.

Было так:

#! /bin/bash

name=$1

#Получаем список файлов, где упоминается учетка пользователя
grep -liEs "$name" /etc/squid3/acls/* /var/lib/squidguard/db/* > "/tmp/path"
#Передаем список в переменную
path=`cat "/tmp/path"`

for i in $path
    do
        sed -i /$name/d $i
    done

#Показываем, в каких файлах пользователь был найден
echo -e "\033[1;32mUser was found in:\033[0m "$path""

#Переконфигурируем Сквид, чтобы больше не пускал этого юзера
squid3 -k reconfigure

Но теперь появилась необходимость в том, чтобы пользователей тоже брать из списка, а не из ввода. И я не могу додуматься до того, как это сделать.

 ,

firebolt
()

Debug по определенному IP-адресу в Squid3

Приветствую всех отозвавшихся на мою проблему.

Что я имею: Debian Jessie, Squid 3.4.8 и пакеты, отклоненные по непонятной причине. Хотелось бы воспользоваться дебагом, но я не умею запускать дебаг для определенного IP-адреса клиента. Можете подсказать, имеется ли такая возможность в Squid3?

 

firebolt
()

RSS подписка на новые темы