Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: zeridon в Aug 13, 2005, 15:56



Титла: Малко помощ със sed/awk
Публикувано от: zeridon в Aug 13, 2005, 15:56
Здравейте компания
 опитвам се да напиша скрипт който да ми парсва изхода от smbstatus и да ми го представя в по удобна форма
Примерен код

$ smbstatus
Samba version 3.0.14a
PID     Username      Group         Machine
-------------------------------------------------------------------

Service      pid     machine       Connected at
-------------------------------------------------------
ilio         19487   192.168.3.188  Sat Aug 13 10:36:06 2005

Locked files:
Pid    DenyMode   Access      R/W        Oplock           Name
--------------------------------------------------------------
19487  DENY_WRITE 0x20089     RDONLY     NONE   /pyt/file interval ext


искам да получа нещо подобно на
Примерен код

[Share]          [IP]                  [open file]
ilio     192.168.3.188       /pyt/file interval ext


За момента имам следното
Примерен код

#!/bin/bash
#
# script simulating fsmgmt.msc functionality (partly)
# author: vladimir vitkov vvitkov [at] gmail [dot] com
# version: 0.02
# Changelog
# v0.02 - Added Open files listing
# v0.01 - Initial
# Licence: GPL V2.0 or later

echo "[SHARE]      [IP]                           [OPEN FILE]"
for i in `smbstatus -L | awk '{print $1}' | grep [0-9] | sort | uniq`; do
# Share and IP
        smbstatus -S | \
        grep $i      | \
        awk '{ print $1 " " $3}'
# open files ... buggy
        smbstatus -L | \
        grep $i      | \
#        tr -s " "    | \
        cut -c 57-
#       sort         | \
#       uniq         | \
#       awk '{
#               for(numb=6;numb<(NF-4);numb++) ofile=ofile $numb " "
#               print ofile
#            }'
done


Смятам си личи как съм експериментирал. Пробвах и с cut -d"/" -f2- обаче така остава малко боклук след отворения файл

Ще съм благодарен за всяка помощ.


Титла: Малко помощ със sed/awk
Публикувано от: в Aug 15, 2005, 10:01
по-скоро разгледай кода на smbstatus и си напиши това което ти трябва.

smbstatus е една от малкото програми, която е безполезна при потокова обработка.


Титла: Малко помощ със sed/awk
Публикувано от: zeridon в Aug 15, 2005, 10:58
В какъв смисъл кода ... да я разкоствам и да си я пренапиша ... не мерси мисля ми се излишен труд. В момента имам някакво действащо решение с cut  което ми върши работа


Титла: Малко помощ със sed/awk
Публикувано от: sdr в Aug 15, 2005, 11:19
Програмките от проекта samba са прилично написани и с малко гледане се пачват сравнително лесно, а готиното е че хората са отзивчиви и приемат сравнително лесно пачове стига да са чисти. По този начин аз успях да вкарам -g на smbclient Пробвай не е толкова страшно колкото изглежда


Титла: Малко помощ със sed/awk
Публикувано от: vic_semionov в Aug 15, 2005, 14:56
Примерен код

#! /bin/sh

echo '[Share]        [IP]                [File]';
smbstatus | awk ' \
/^Service      pid     machine       Connected at$/ \
{ \
 d=1; \
 rec=NR+2; \
} \
\
(d==1 && NR>=rec) \
{ \
 if (NF==0) \
 { \
  d=2; \
  rec=NR+4; \
 } \
 else \
 { \
  n++; \
  svc[n]=$1; \
  pid[n]=$2; \
  ip[n]=$3; \
 } \
} \
\
(d==2 && NR>=rec) \
{ \
 for (i=1;i<=n;i++) \
  if ($1==pid[i]) \
  { \
   printf("%s        %s       ",svc[i],ip[i]); \
   for (j=6;j<=NF;j++) printf(" %s",$j); \
    print ""; \
  } \
} \
'


Нещо става много гаден индента като го копирам тука, но това е :)


Титла: Малко помощ със sed/awk
Публикувано от: zeridon в Aug 16, 2005, 00:21
мерси vic_semionov но това вече го получих като ефект. Идеята ми беше да се изхвърли боклука след отворения файл. (датата и часа)

@sdr: ми ще се заровя тогаз. Тъкмо имам и един друг проект който ще се реализира добре с вграждане на libsmbclient. (още една причинка)


Титла: Малко помощ със sed/awk
Публикувано от: vic_semionov в Aug 16, 2005, 14:59
Цитат (zeridon @ Авг. 16 2005,01:21)
мерси vic_semionov но това вече го получих като ефект. Идеята ми беше да се изхвърли боклука след отворения файл. (датата и часа)

Еми ок, както искаш. Аз ти предложих нещо което работи точно както ти трябваше, и което работи само с awk, вместо awk, grep, sort, uniq, cut, tr. Но явно за теб е по-важно автора да си ти.


Титла: Малко помощ със sed/awk
Публикувано от: zeridon в Aug 16, 2005, 17:49
Сорка нямах за цел да те обиждам.
Просто си нямам идея от възможностите на awk. Сега в последствие като го загледах скрипта си е доста елегантен, и ще ми послужи като някаква база за изучаване на awk.