forum.bitel.ru http://forum.bitel.ru/ |
|
Написал ковертор логов миником УАК, PowerShell http://forum.bitel.ru/viewtopic.php?f=10&t=3553 |
Страница 1 из 1 |
Автор: | Lexw [ 06 фев 2010, 12:25 ] |
Заголовок сообщения: | Написал ковертор логов миником УАК, PowerShell |
Может пригодится кому исходный вид: Код: B:27767 (06.105) 569191 533903 (00.063) 06/01/10 23:38 00:29:04 B:27781 (05.050) 531741 567212 (00.109) 07/01/10 00:07 00:01:25 B:27759 (06.101) 569026 523111 (00.061) 06/01/10 23:27 00:42:03 B:14021 (06.065) 599633 596421 (01.088) 06/01/10 23:54 00:14:47 B:45599 (01.124) 567662 572897 (02.060) 06/01/10 23:58 00:10:29 B:27782 (01.038) 531741 567212 (00.101) 07/01/10 00:09 00:00:21 B:14035 (04.052) 531651 567450 (01.111) 07/01/10 00:09 00:00:38 B:54155 (02.107) 555834 569502 (03.012) 07/01/10 00:09 00:00:06 B:54157 (02.114) 555534 569502 (03.018) 07/01/10 00:09 00:00:06 B:14034 (02.062) 536035 568748 (01.119) 07/01/10 00:08 00:02:39 B:54153 (05.116) 566039 569351 (03.015) 07/01/10 00:06 00:03:56 B:54158 (06.066) 599535 569502 (03.029) 07/01/10 00:10 00:00:11 B:13957 (00.004) 550434 597800 (01.079) 06/01/10 23:13 00:57:43 B: 2361 (06.065) 598561 78772200 (06.107) 07/01/10 00:10 00:01:15 B:14037 (00.023) 550434 597800 (01.093) 07/01/10 00:11 00:00:24 B:54159 (06.118) 015266 569502 (03.007) 07/01/10 00:12 00:00:05 B:14038 (00.018) 550434 597800 (01.094) 07/01/10 00:12 00:00:25 B:27783 (06.053) 523730 566129 (00.118) 07/01/10 00:11 00:01:38 с помощью регулярки взять его не получилось (бывают пустые абонеты А) но зато они не скачут посимвольно. Код: #####################################################################
# Конвертер логов АТС миником УАК в формат логов bgbilling (5.0). # Язык: PowerShell # Требования: консольная утилита архивирования 7Zip # Автор: Валяев Алексей, admintsm@gmail.com # # баг: если продолжительность звонка более 23:59 часов вываливается ошибка. # если ваши абоненты любят потрещать, по другому вычисляйте продолжительность # звонка в секундах ##################################################################### # #Указываем путь к утилите 7zip $7zip = ".\7za.exe" #указываем пуи к лог-файлам $Log_from_uac = "D:\1111" # #инициируем массив для хранения путей ко всем лог-файлам $AllLogFile = @() # #берем список всех лог-файлов, передаем по конвееру и #последовательно обрабатываем содержимое каждого из них dir $Log_from_uac | %{ Get-Content $Log_from_uac\$_ |%{ # #Проводим отбор определенных звонков по портам #(требовалось для выполнения моей задачи) $InComing =[int]$_.substring(12,3) $Outgoing =[int]$_.substring(60,3) # # #Условие, выбирающие из строчек логов только те, #Которые были нужны мне для обработки. If (($(32..63) -contains $InComing) -or ($(32..63) -contains $Outgoing)){ # #разбираем строчку лога #$portA = $_.substring(9,6) - помещаем в #переменную $portA содержимое текущей обрабатываемой #строчки лога ($_) начиная с 9 символа и последующие 6 символов # поскольку порт в логе выглядит как 44.333, я избавился от точки: $portA = $_.substring(9,2)+$_.substring(12,3) $portB = $_.substring(57,2)+$_.substring(60,3) #выбираем из строки номера $NumberA = $_.substring(17,6) $NumberB = $_.substring(35,8) #выбираем дату, время, продолжительность звонка. #и сразу конвертируем в тип [datetime] для последующей обработки $datetime = [datetime]::parse($_.substring(65,14)) $Call = [datetime]::parse($_.substring(80,8)) #Вычисляем продолжительность звонка в секундах $Call_duration = $Call.Hour*360+$Call.Minute*60+$Call.Second #Создаем дерево каталогов и файлы $YY = $datetime.ToString("yyyy") $MM = $datetime.ToString("MM") $dd = $datetime.ToString("dd") $HH = $datetime.ToString("HH") $PathToLog = "D:\PoSh\billing\$YY\$MM" $LogName = "$dd"+"_$HH" If (!(Test-Path $PathToLog )){New-Item -ItemType Directory $PathToLog -Force} If (!(Test-Path $PathToLog\$LogName)){New-Item -ItemType File $PathToLog\$LogName} # #Добавляем в массив путь к очередному новому логу, если его там еще нету If (!($AllLogFile -contains "$pathTolog\$logname")){$AllLogFile+="$pathTolog\$logname"} # #формируем новую строчку лога, понятную для bgbilling. #я добавлял коды города, так как у нас в АТС ходят 6ти значные номера #"`t" - символ табуляции $bg_billing = $datetime.ToString("dd.MM.yy HH:mm:ss")+"`t"+"$Call_duration"+"`t"+"$NumberA"+"`t"+"73499"+"$NumberA"+"`t"+"$NumberB"+"`t"+"73499"+"$NumberB"+"`t"+"$portA"+"`t"+"$portB"+"`t"+"0" $bg_billing|Out-File "$pathTolog\$logname" -Append -Encoding ASCII } } } #Архивируем и удаляем логи. остаются одни архивы. $AllLogFile | %{ $newname = ($_ -replace ".txt")+".zip" &$7zip a $newname $_ } $AllLogFile | Remove-Item -Force |
Автор: | max [ 06 фев 2010, 16:38 ] |
Заголовок сообщения: | Re: Написал ковертор логов миником УАК, PowerShell |
напишите лучше статью в wikki на этом сайте, там будет самое место |
Автор: | Lexw [ 06 фев 2010, 17:27 ] |
Заголовок сообщения: | Re: Написал ковертор логов миником УАК, PowerShell |
max писал(а): напишите лучше статью в wikki на этом сайте, там будет самое место я хотел добавить сюда http://wiki.bgbilling.ru/index.php/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2 и даже зарегистрировался. но править статьи не могу. |
Автор: | stark [ 08 фев 2010, 13:57 ] |
Заголовок сообщения: | Re: Написал ковертор логов миником УАК, PowerShell |
Lexw писал(а): max писал(а): напишите лучше статью в wikki на этом сайте, там будет самое место я хотел добавить сюда http://wiki.bgbilling.ru/index.php/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2 и даже зарегистрировался. но править статьи не могу. система не дает править ? нет кнопок для правки ? какой пользователь? |
Автор: | Lexw [ 08 фев 2010, 17:12 ] |
Заголовок сообщения: | Re: Написал ковертор логов миником УАК, PowerShell |
stark писал(а): Lexw писал(а): max писал(а): напишите лучше статью в wikki на этом сайте, там будет самое место я хотел добавить сюда http://wiki.bgbilling.ru/index.php/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2 и даже зарегистрировался. но править статьи не могу. система не дает править ? нет кнопок для правки ? какой пользователь? нет кнопки "править" пользователь "Алексей" |
Автор: | stark [ 08 фев 2010, 18:13 ] |
Заголовок сообщения: | Re: Написал ковертор логов миником УАК, PowerShell |
Lexw писал(а): нет кнопки "править" пользователь "Алексей" А email свой потверждали ? |
Автор: | Lexw [ 12 фев 2010, 11:11 ] |
Заголовок сообщения: | Re: Написал ковертор логов миником УАК, PowerShell |
stark писал(а): Lexw писал(а): нет кнопки "править" пользователь "Алексей" А email свой потверждали ? а мне на мыло ничего не приходило ))) |
Автор: | Администратор [ 15 фев 2010, 13:58 ] |
Заголовок сообщения: | Re: Написал ковертор логов миником УАК, PowerShell |
Отправку письма с подтверждением на WiKi поправили, теперь шлёт. |
Автор: | Lexw [ 17 фев 2010, 21:14 ] |
Заголовок сообщения: | Re: Написал ковертор логов миником УАК, PowerShell |
Администратор писал(а): Отправку письма с подтверждением на WiKi поправили, теперь шлёт. а мне как по новой запросить? может активируете уже? ))) |
Автор: | stark [ 18 фев 2010, 14:38 ] |
Заголовок сообщения: | Re: Написал ковертор логов миником УАК, PowerShell |
активировали |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |