Bash. Помогите написать скрипт
Пишу следуещее:
nbtscan -s : -f ./list.ip -t 20 | awk -F : '{print
$1"|"tolower($2)"|"tolower($4)"|"strftime("%d/%m/%y %H:%M") }' > file
Вывод в файл:
172.26.x.x |Hostname1 |Usermane1 |05/07/05 08:33
172.26.x.y |Hostname2 |Usermane2 |05/07/05 08:33
172.26.x.z |Hostname3 |Usermane3 |05/07/05 08:33
172.26.x.h |Hostname4 |Usermane3 |05/07/05 08:33
Как сделать чтобы при следующем запуске
1. Проверялось есть ли в файле совпадения IP Hoctname Username и если
нету то добавить.
2. Удалять все записи старше 10 дней.
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 19708; Возраст листа: 712; Участников: 1399
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/396447
On Tue, 5 Jul 2005 09:44:13 +0600
loewa <loe***@m*****.ru> wrote:
Для более простой сортировке по дате измени на %y/%m/%d. Потом будет проще
обрабатывать.
Если честно, то не совсем коректно поставлен вопрос.
не обойтись. Выловить неповторяющиеся можно примерно так:
start file.awk #!/bin/awk -f
BEGIN {
FS="|";
}
{
adres[NR] = $1 $2 $3;
date[NR]=$4;
set[NR]=1;
}
END {
count = NR;
flag = 0;
for(x=1;x<count-1;x++){
for(y=x+1;y<count;y++){
if(adres[x]==adres[y]){
if(set[x]>0){
set[x]++;
set[y]=0;}
if(date[x]<date[y]) {
date[x]=date[y];
}
}
}
}
for(x=1;x<count;x++){
if(set[x]>0){
print(adres[x] date[x]);
}
}
}
end file.awk Используем так:
# ./file.awk list > list.new
В list.new будут все неповторяющиеся вхождения ip, host, user.
Кстати date[x] в файле создано именно для отбора по дате.
Допиши сам (или сама).