Author Topic: smbstatus но через вебморду  (Read 3272 times)

ds

  • Zen Warrior
  • ***
  • Posts: 151
  • Karma: +1/-0
    • View Profile
smbstatus но через вебморду
« on: September 15, 2012, 04:38:41 pm »
доброго времечка люди...
zentyal 2.2(контроллер, самбаб дшсп) (база фокспрошная), клиенты около 50 компов (win xp)

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

пользуюсь smbstatus, чтобы увидеть какие клиенты держат файлы базы...
но нужен вариант попроще (например через вебморду отобразить список клиентов держащих файлы)
посоветуйте что нибудь умное..может заготовки...


ds

  • Zen Warrior
  • ***
  • Posts: 151
  • Karma: +1/-0
    • View Profile
Re: smbstatus но через вебморду
« Reply #1 on: September 15, 2012, 06:41:56 pm »
пришел к выводу что лучше сделать через веб морду....
добавил в /var/www .htacess c разрешением на перл

теперь проблема как вывести результат выполнения smbstatus

нашел в интернетах :
Quote
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><head><title>User use file.</title></head><body>
<table align=\"center\"><tr><th>User</th><th>File</th></tr><tr>";
for (`smbstatus`) {
    $users{$1} = $2 if (/\s*(\d+)\s+(.+?)\s+(.+)\s+(.+)\s+\((.+)\)/);
    print "<td>$users{$1}</td><td>$2</td>\n" if (/(\d+).*?\/usr\/home\/public\/shared(.*)\s{3}/);
    };
print "</tr></body>";
исполняется без ошибок, но и не выводит ничего... так как регеспы неправильные

мой вывод smbstatus такой
Quote
Samba version 3.4.9
PID     Username      Group         Machine
-------------------------------------------------------------------
4177      admin         __USERS__     sectorz      (192.168.1.33)

Service      pid     machine       Connected at
-------------------------------------------------------
admin        4177   sectorz       Sat Sep 15 20:23:22 2012
IPC$         4177   sectorz       Sat Sep 15 20:23:18 2012

Locked files:
Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time
--------------------------------------------------------------------------------------------------
4177         2001       DENY_NONE  0x20089     RDONLY     EXCLUSIVE+BATCH  /home/admin   Новая папка/1033262.flv   Sat Sep 15 20:25:42 2012
4177         2001       DENY_NONE  0x100081    RDONLY     NONE             /home/admin   Новая папка   Sat Sep 15 20:23:28 2012

кто разбирается, окажите содействие по правке скрипта

mravil

  • Zen Samurai
  • ****
  • Posts: 410
  • Karma: +27/-4
  • В чужую сеть со своим протоколом не лезь!
    • View Profile

ds

  • Zen Warrior
  • ***
  • Posts: 151
  • Karma: +1/-0
    • View Profile
Re: smbstatus но через вебморду
« Reply #3 on: September 16, 2012, 08:21:34 am »
2 mravil к чему отсылка на данный топик?? (How to mount the Users eBox Home(PDC) directory?) я разве про монтирование интересовался? или может ссылка какая в проскользнула... не заметил

mravil

  • Zen Samurai
  • ****
  • Posts: 410
  • Karma: +27/-4
  • В чужую сеть со своим протоколом не лезь!
    • View Profile
Re: smbstatus но через вебморду
« Reply #4 on: September 16, 2012, 11:45:32 am »

ds

  • Zen Warrior
  • ***
  • Posts: 151
  • Karma: +1/-0
    • View Profile
Re: smbstatus но через вебморду
« Reply #5 on: September 16, 2012, 01:23:21 pm »
уууу..вот это юбер-пхп-страшное-кодище ты мне показал :))
в общем благодаря ребятам с форума винграда я разобрался, и вот мой компактный перл код

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><head><title>locked files</title>";
print "<style>td {border:1px solid  red;}</style></head><body>";
print "<table><tr><td>user</td><td>file</td></tr>";
for (`smbstatus`) {
    $users{$1} = $2 if (/\s*(\d+)\s+(.+?)\s+(.+)\s+(.+)\s+\((.+)\)/);
        print "<tr><td>$users{$1}</td><td>$2</td></tr>\n" if (/(\d+).*?\/home(.*)\s{3}/);
            };
print "</table></body></html>";



0) перл должен быть по умолчанию установлен (проверьте perl -v)
1)через управление zentyal поднимаем веб-сервер
2)в корне веб-сервера (по умолчанию /var/www) создаем файл с расширением .pl и закидываем в него вышеизложенное содержимое
3)тут же создаем файл .htaccess с содержимым
Options +ExecCGI
AddHandler cgi-script *.pl
<Files *.pl>
SetHandler cgi-script
</Files>
4) даем права на исполнение файлик (sudo chmod 755 вашперлфайл.pl)
5) ребутаем апач (sudo /etc/inid.d apache2 restart)

и профит...
P.S.у меня была проблема..
папки на сервере были на русском языке...
smbstatus нормально отображался в консоли, а через вебморду все связанное с кириллицей резалось...
вполне возможно надо обновить перл на машине или с консолью чтото не то :)))
« Last Edit: September 16, 2012, 01:35:52 pm by ds »