Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

ssh2_connect close or timeout (Shira, оценка: 1)
Author Message
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Mon Jul 05, 2010 6:08 pm (написано за 3 минуты 40 секунд)
   Post subject: ssh2_connect close or timeout
Reply with quote

Всех приветствую!

После использования ssh2_connect соединение с шелом не разрывается(нет соответствующей ф-ции), не поддается никаким таймаутам...... Т.е. после работы скрипта соединение остается! Лимит на кол-во соединений - 3, скрипт запускаетя каждый час + его могут запускать вручную, т.е. лимита полюбому не хватает, пока помогает тока перезагрузка апача....

Есть варианты как решить эту проблему?
Back to top
View user's profile Send private message Send e-mail
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Mon Jul 05, 2010 6:27 pm (спустя 19 минут; написано за 1 минуту 35 секунд)
   Post subject:
Reply with quote

Уважаемый, Александр Михалицын, или я чего то не понимаю, или тот код, что Вы привели немного(а если быть точнее, то СОВСЕМ) не о том. Мне нужно пренудительный разрыв соединения...... а не реагирование на дисконнект....!
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Mon Jul 05, 2010 6:28 pm (спустя 1 минуту 2 секунды; написано за 2 минуты 12 секунд)
   Post subject:
Reply with quote

Shira,
я убрал. Сначала не туда посмотрел.

Last edited by Александр Михалицын on Mon Jul 05, 2010 6:42 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Mon Jul 05, 2010 6:40 pm (спустя 11 минут; написано за 29 секунд)
   Post subject:
Reply with quote

Попробуйте вот такой код:
Code (php): скопировать код в буфер обмена
@fclose (www.php.net/fclose)($connect);
unset (www.php.net/unset)($connect);
Back to top
View user's profile Send private message Send e-mail
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Mon Jul 05, 2010 6:54 pm (спустя 14 минут; написано за 29 секунд)
   Post subject:
Reply with quote

Александр Михалицын, к сожалению не помогает, fclose пробовал уже...... unset - аналогично.
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Mon Jul 05, 2010 6:56 pm (спустя 1 минуту 24 секунды; написано за 40 секунд)
   Post subject:
Reply with quote

Shira,
не очень хочется гадать, завтра погуглю еще (-;, но попробуйте копнуть в сторону ssh2_exec и какой-нибудь команды для разрыва соединения.
Back to top
View user's profile Send private message Send e-mail
Миша Спларов
Участник форума



Joined: 17 Nov 2003
Posts: 821
Карма: 65
   поощрить/наказать

Location: Россия, Москва

PostPosted: Mon Jul 05, 2010 7:07 pm (спустя 11 минут; написано за 21 секунду)
   Post subject:
Reply with quote

Не пробовали ssh2_exec($connection, 'exit');?
Back to top
View user's profile Send private message
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Mon Jul 05, 2010 7:17 pm (спустя 9 минут; написано за 24 секунды)
   Post subject:
Reply with quote

пробовал и exit, и logout
Back to top
View user's profile Send private message Send e-mail
Миша Спларов
Участник форума



Joined: 17 Nov 2003
Posts: 821
Карма: 65
   поощрить/наказать

Location: Россия, Москва

PostPosted: Mon Jul 05, 2010 7:37 pm (спустя 20 минут; написано за 11 секунд)
   Post subject:
Reply with quote

Тогда никак: pecl.php.net/bugs/bug.php?id=3440, pecl.php.net/bugs/bug.php?id=7360
Back to top
View user's profile Send private message
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Tue Jul 06, 2010 9:26 am (спустя 13 часов 48 минут; написано за 6 секунд)
   Post subject:
Reply with quote

блин, жаль......
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Tue Jul 06, 2010 9:33 am (спустя 6 минут; написано за 55 секунд)
   Post subject:
Reply with quote


М

Shira,
добавил теме 1 балл, возможно кто-то знает решение.
Тема вполне себе может оказаться полезной.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 195
   поощрить/наказать

Location: 007 495

PostPosted: Tue Jul 06, 2010 11:38 am (спустя 2 часа 4 минуты; написано за 5 минут 7 секунд)
   Post subject:
Reply with quote

Shira
Сразу после логина «запишите» PID своего процесса bash (это должен быть процесс bash с максимальным значением PID, у которого UID совпадает с вашим). Для этого должно быть достаточно вызвать команду ps (без параметров) и вручную распарсить, чтобы не плодить в процессе новых процессов bash. В качестве дисконнекта, в этом случае, подойдет простая команда
Code (Bash): скопировать код в буфер обмена
 
Это должно убить только нужный процесс bash, из-под которого Вы залогинились, и «оставить в живых» все остальные сессии и/или background скрипты.
Back to top
View user's profile Send private message Send e-mail
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Tue Jul 06, 2010 10:49 pm (спустя 11 часов 11 минут; написано за 55 секунд)
   Post subject:
Reply with quote

Юрий Насретдинов, а если не секрет какими ф-циями в рнр управлять процессами под win32? или я че то не так понимаю...... =(
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Tue Jul 06, 2010 11:08 pm (спустя 19 минут; написано за 1 минуту 58 секунд)
   Post subject:
Reply with quote

Shira
Попробую ответить за Юру:
www.php.net/manual/en/refs.fileprocess.process.php - здесь нет ответов?
из консольных команд под Win32 - имхо, почитайте справку к tasklist и taskkill
Back to top
View user's profile Send private message
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Tue Jul 06, 2010 11:53 pm (спустя 44 минуты; написано за 1 минуту 6 секунд)
   Post subject:
Reply with quote

Maus, на счет taskkill'а то я знаю, а вот как pid процесса найти не понимаю....
Back to top
View user's profile Send private message Send e-mail
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Wed Jul 07, 2010 12:01 am (спустя 8 минут; написано за 1 минуту 9 секунд)
   Post subject:
Reply with quote

да и в винде, а конкретнее в апаче, за это отвечает httpd.exe (он как раз и удерживает связь с сервером).... но это общий процесс для сервера!
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Wed Jul 07, 2010 12:26 am (спустя 24 минуты; написано за 2 минуты 2 секунды)
   Post subject:
Reply with quote

Shira
Минутку. Вы с какой стороны собрались убивать соединение? Насколько я понял, Юра предлагал Вам убивать процесс на удаленной машине. Приконнектились, поработали, застрелились.
Back to top
View user's profile Send private message
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Wed Jul 07, 2010 9:09 am (спустя 8 часов 42 минуты; написано за 2 минуты 46 секунд)
   Post subject:
Reply with quote

Maus, Вас понял.....!
Делаю ssh2_exec($id, "ps"), в ответ получаю пустую табличку (тока заголовок "PID TT STAT TIME COMMAND"). Если параллельно захожу с putty, то выше приведенная ф-ция отвечает не пустой табличкой, но там только тот bash процесс, который работает с putty.... В чем может быть дело? Аутентификацию в рнр прохожу с помощью публичного ключа....
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Wed Jul 07, 2010 9:25 am (спустя 16 минут; написано за 17 секунд)
   Post subject:
Reply with quote

Shira,
ну приведите еще исходный код.
Back to top
View user's profile Send private message Send e-mail
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Wed Jul 07, 2010 10:31 am (спустя 1 час 6 минут; написано за 2 минуты 54 секунды)
   Post subject:
Reply with quote

Code (php): скопировать код в буфер обмена
...
$ssh_fid = @ssh2_connect($_host, 22);
@ssh2_auth_pubkey_file(
        $ssh_fid,
        $_login,
        'id_rsa.pub',
        'id_rsa'
);
$temp = ssh2_exec($ssh_fid, "ps ax"); // Просто ps пустоту выдает
stream_set_blocking (www.php.net/stream_set_blocking)($temp, true);
$data = "";
while($temp2 = fgets (www.php.net/fgets)($temp)){
        $data .= $temp2;
}
$data = $parse_ps($data);
foreach($data as $k => $v){
        if($v['command'] == 'sshd: USER@notty (sshd)'){
                $ssh_pid = $v['pid'];
                break;
        }
}
fclose (www.php.net/fclose)($temp);
...
ssh2_exec($ssh_fid, "kill -s KILL ".$ssh_pid);
и все равно соединение не рвется
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Wed Jul 07, 2010 10:54 am (спустя 22 минуты; написано за 49 секунд)
   Post subject:
Reply with quote

Shira,
может вам вместо этого:
Code (php): скопировать код в буфер обмена
$data = "";
while($temp2 = fgets (www.php.net/fgets)($temp)){
        $data .= $temp2;
}
Попробовать вот так:
Code (php): скопировать код в буфер обмена
$data = stream_get_contents($temp);
Что-то мне подсказывает, что так правильнее...
Back to top
View user's profile Send private message Send e-mail
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Wed Jul 07, 2010 11:37 am (спустя 43 минуты; написано за 12 секунд)
   Post subject:
Reply with quote

да то суть не в этом!
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Wed Jul 07, 2010 11:40 am (спустя 2 минуты; написано за 1 минуту 4 секунды)
   Post subject:
Reply with quote

Shira,
ну а как вы можете утверждать, что:
Quote:
ps пустоту выдает
выводили результат stream_get_contents($temp)?

Одним словом phpfaq.ru/debug.
Back to top
View user's profile Send private message Send e-mail
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Wed Jul 07, 2010 2:00 pm (спустя 2 часа 20 минут; написано за 4 минуты 8 секунд)
   Post subject:
Reply with quote

Александр Михалицын, если внимательно прочитать, то я писал, что ps отвечает пустоту И В СКОБКАХ УТОЧНИЛ, ЧТО ПУСТУЮ ТАБЛИЧКУ. Т.е. заголовок выводит, но данных нет....... Вы не в то русло проблему уводите =)
Во-вторых, в приведенном мною выше коде уже стоит не ps, а "ps ax", что выдает нужный результат, правда процесс не bash'овский, а "sshd: USERNAME@notty (sshd)" (юзернэйм убрал из своих соображений)...... вот его пытаюсь КИЛЛить, нет нужного результата!


ЗЫ: А вообще, если не ошибаюсь, stream_get_contents это вроде и есть совокупность fgets ф-ций
ЗЫЫ: Че то карма у меня скочет из-за этой темы во все стороны! =)

Last edited by Shira on Wed Jul 07, 2010 2:02 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 81
   поощрить/наказать


PostPosted: Wed Jul 07, 2010 2:48 pm (спустя 48 минут; написано за 46 секунд)
   Post subject:
Reply with quote

Shira,
Quote:
е в то русло проблему уводите =)
Ну с тем объемом информации, что у нас в распоряжении, кроме как методом "научного тыка", вряд ли что-то можно понять...
Back to top
View user's profile Send private message Send e-mail
Shira
Участник форума



Joined: 13 May 2007
Posts: 65
Карма: 0
   поощрить/наказать

Location: Россия, Москва

PostPosted: Thu Jul 08, 2010 5:02 pm (спустя 1 день 2 часа 13 минут; написано за 2 минуты 54 секунды)
   Post subject:
Reply with quote

А какой объем информации нужен? Я уже совсем ничего не понимаю!
Идея, которую выдвинул уважаемый Юрий Насретдинов, не сработала....
Командой ps ax я получил список процессов, выделил из него процесс sshd: USERNAME@notty (sshd), пытаюсь сделать kill -s KILL [pid процесса] - НЕ СРАБАТЫВАЕТ.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML