выполнение команды с другого сервера?

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

выполнение команды с другого сервера?

Непрочитанное сообщение f0s » 2009-09-24 12:40:12

Возник следующий вопрос..
есть (опустим подробности) два сервера:

fileserver.artpaint [192.168.10.6]
mail.artpaint [192.168.10.8]


на fileserver.artpaint стоит самба и есть шары. мне нужно выводить на веб-сайт скриптом список открытых файлов с шар (посредством smbstatus). Сайт хостится на mail.artpaint... отсюда вопрос: как можно сделать так, чтобы скрипт выполнялся на fileserver.artpaint?

скрипт следующего плана:

Код: Выделить всё

#!/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>
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Gamerman
капитан
Сообщения: 1720
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

Re: выполнение команды с другого сервера?

Непрочитанное сообщение Gamerman » 2009-09-24 12:49:16

Навскидку идея такая:
Поднять веб-сервер на самба-сервере, и при запуске скрипта на первой машине, чтобы он обращался к скрипту на второй машине через веб-сервер.
Глюк глюком вышибают!

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

Re: выполнение команды с другого сервера?

Непрочитанное сообщение f0s » 2009-09-24 13:00:14

Gamerman писал(а):Навскидку идея такая:
Поднять веб-сервер на самба-сервере, и при запуске скрипта на первой машине, чтобы он обращался к скрипту на второй машине через веб-сервер.
хотелось бы без поднятия веб-сервера на fileserver
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

Аватара пользователя
Gamerman
капитан
Сообщения: 1720
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

Re: выполнение команды с другого сервера?

Непрочитанное сообщение Gamerman » 2009-09-24 13:10:38

Я думаю так:
1.Для того чтобы второй сервер что-то сделал, он должен либо получить сигнал, либо делать это с какой-то периодичностью.
Второй вариант не катит, потому что-даные могут быть не актуальными либо будет вхолостую делать работу.
Тогда первый вариант.
Один из вариантов приход пакета на определенный порт. Можно написать какой-то простой демон, который будет слушать порт.
Тогда скрипт на первой машине будет обращаться на даный порт и вторая машина сможет обработать такой сигнал.

2. Еще идея. Писать по смб какой-то файл на вторую машину. Есть демон (не помню как называется), который проверяет наличие файла и делает какое-то действие, например выводит список открытых файлов.

Будет интересно узнать, какие еще есть методы?
Глюк глюком вышибают!

napTu
рядовой
Сообщения: 17
Зарегистрирован: 2009-09-23 18:47:44

Re: выполнение команды с другого сервера?

Непрочитанное сообщение napTu » 2009-09-24 13:28:38

если скрип выполняется быстро, то запускать его можно через

Код: Выделить всё

$rezul=`ssh второй_сервер скрипт_на_втором_сервере`
но нужно установить доступ ssh по ключам

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

Re: выполнение команды с другого сервера?

Непрочитанное сообщение f0s » 2009-09-24 15:57:02

сделал так:

на mail.artpaint зашел под пользователем artpaint (под нима работает сайт):

Код: Выделить всё

ssh-keygen
Enter file in which to save the key (/home/artpaint/.ssh/id_rsa):<Enter>
Enter passphrase (empty for no passphrase):<Enter>
Enter same passphrase again: <Enter>
Your identification has been saved in /home/artpaint/.ssh/id_rsa.
Your public key has been saved in /home/artpaint/.ssh/id_rsa.pub.
The key fingerprint is:
92:12:4c:сс:c8:36:ec:f6:60:50:c4:82:2a:01:39:20 artpaint@mail.artpaint
далее:

Код: Выделить всё

scp ~/.ssh/id_rsa.pub fileserver.artpaint:.ssh/authorized_keys2
таким образом сделал, что по ssh fileserver пускает без пароля. теперь немного модифицировал скрипт:

Код: Выделить всё

[f0s@mail] /var/log/httpd/> cat /home/artpaint/www/data/www.artpaint/stat/files/index.pl
#!/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 (`ssh 192.168.10.6 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>";
так скрипт из консоли нормально работает:
вот вывод с тачки где веб-сервер (mail.artpaint)

Код: Выделить всё

$ cd /usr/home/artpaint/www/data/www.artpaint/stat/files
$ ls
index.pl
$ ls -l
total 2
-rwxr-xr-x  1 artpaint  artpaint  415 24 сен 14:57 index.pl
$ ./index.pl
Content-type: text/html

<html><head><title>User use file.</title></head><body>
<table align="center"><tr><th>User</th><th>File</th></tr><tr><td>suchkova</td><td>   о. Бухгалтерия/Сучкова Н/Мой файл 2009.xls</td>
<td>olyunin</td><td>   о. Продаж/Олюнин Д</td>
<td></td><td>   о. Рекламы/Передельская Е/История завода/Новая папка1/2_1.ai</td>
<td>zaycev</td><td>   .</td>
<td>lukov</td><td>   .</td>
<td>cherepkov</td><td>   .</td>
<td>sedova</td><td>   .</td>
<td>olyunin</td><td>   .</td>
<td>maslyakova</td><td>   .</td>
<td>suchkova</td><td>   .</td>
<td>yatskaya</td><td>   .</td>
<td></td><td>   о. Рекламы/olefirenko/фото для сайта/логотипы/краски кисти/Лого.ai</td>
<td></td><td>   о. Рекламы/Передельская Е/История завода/Новая папка1/2_1.eps</td>
<td></td><td>   о. Рекламы/Передельская Е/История завода/Новая папка1/2_2.eps</td>
<td>cherepkov</td><td>   о. Финансовый/Васильева А/себестоимость/Виктор</td>
<td>lukov</td><td>   о. Рекламы/olefirenko/image/фото для листовки</td>
<td>zaycev</td><td>   о. Склад/ЗАЯВКИ НА ДОСТАВКУ 2007-2008-2009/2009</td>
<td>maslyakova</td><td>   о. Склад/ЗАЯВКИ НА ДОСТАВКУ 2007-2008-2009/2009</td>
<td>suchkova</td><td>   о. Бухгалтерия/Сучкова Н</td>
<td></td><td>   о. Рекламы/Передельская Е/История завода/Новая папка1/2_2.ai</td>
<td>sedova</td><td>   о. Финансовый/Седова Е/Фин. директор</td>
</tr></body>$

как только открываешь браузером: http://www.artpaint/stat/files/index.pl получаем: Error 500

причем в логах апача:

Код: Выделить всё

[Thu Sep 24 14:57:37 2009] [error] [client 192.168.10.2] Premature end of script headers: index.pl

:st:
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35267
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: выполнение команды с другого сервера?

Непрочитанное сообщение Alex Keda » 2009-09-24 21:26:46

сдаётся мне, заголовков маловато...

Код: Выделить всё

hosting$ more ~lissyara/www/data/cgi-bin/standard.map.sh
#!/bin/sh

echo "Content-type: text/plain"
echo

echo "User-agent: *"
echo "Disallow: /cgi-bin/";
echo "Disallow: /admin_level/";
echo "Disallow: /manual/";
echo "Disallow: /icons/";
echo "Disallow: /scripts/";

ls $DOCUMENT_ROOT/map | grep map_ |
{
while read file
do
        echo "Sitemap: http://$SERVER_NAME/map/$file"
done
}


echo "Host: $HTTP_HOST"

exit 0;

hosting$    
это у меня роботс.тхт такой =)))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
f0s
ст. лейтенант
Сообщения: 1082
Зарегистрирован: 2007-03-13 18:43:31
Откуда: Санкт-Петербург
Контактная информация:

Re: выполнение команды с другого сервера?

Непрочитанное сообщение f0s » 2009-09-25 8:56:51

на другом сайте, на этом же сервере работало, а в этом нет.. выяснил, что права на скрипт-то я поставил, а вот на папку, которую создал в сайте - нет. после этого все взлетело :)
named, named, what is my TTL value?..

[FidoNet 2:550/2 && 2:5030/4441]