Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: lynx & exit КАК приказать скрипту выполняться дальше ?  (Прочитано 2490 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Друзья, есть у меня скрипт, который по крону проверяет каждые 5 минут серверы, при недоступности одного из них, должно пройти две строки:
lynx "sms/send?api_id=$ID&to=$TEL&text=$MESSAGE" & exit
lynx "sms/send?api_id=$ID&to=$TEL&text=$MESSAGE" & exit

и после этих строк надо чтоб цикл проверки выполнялся дальше... так как щас у меня получаеться, что при проверки первого недоступного скрипт останавливается... и все.. через 5 минут проверяя заново, он доходит до второго нерабочего обьекта... опять зависает при переходе по ссылке... и уже когда оповестил про все нерабочие обьекты.. тогда уже в следующий раз проганяет скрипт полностью по всех рабочих и не рабочих обьектах.

Подскажите , какой командой задать чтоб шелл-скрипт вышел из lynx , и продолжил свой цикл до его завершения...

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
может проще не использовать lynx
Я знаю только то, что ничего не знаю, остальные не знают и этого.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
гм... а как тогда ? каким образом пройти по ссылке в шелле?

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
Я так понимаю нужно просто отправить GET запрос.

Python:
#with httplib
import httplib 




def printText(txt):     
  lines = txt.split('\n')     
  for line in lines:         
    print line.strip() 




httpServ = httplib.HTTPConnection("www.server.ru", 80)
httpServ.connect() 
httpServ.request('GET', "adres.php?parametri=ter") 
response = httpServ.getresponse()
if response.status == httplib.OK:     
  print "Output from HTML request"     
  printText (response.read()) 



PHP:

#!/usr/bin/php -f
<?php
function csend($url,$ver)
{
  
$ch curl_init();
  
curl_setopt($chCURLOPT_URL$url);
  
curl_setopt($chCURLOPT_HEADERfalse);
  
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  
curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
  
curl_setopt($chCURLOPT_USERAGENT'PHP Bot (http://local/)');
  if (
$ver)
  {
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
    
curl_setopt($chCURLOPT_SSL_VERIFYHOSTfalse);
  }
  
$data curl_exec($ch);
  
curl_close($ch);
  return 
$data;
}




      
csend("http://server.ru/send.php?parametry&message=".$argv[1]."-".$argv[2],false);


 
?>



 
« Последнее редактирование: 18 Ноября 2012, 15:24:21 от SvMidi »
Я знаю только то, что ничего не знаю, остальные не знают и этого.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Вы считаете что это проще чем lynx ?  :idiot2:

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
да, я так считаю. Второй скрипт проверен годами.
Сохраняешь в /usr/bin например с именем smssend, даёшь права на выполнение.
Затем остаётся только в баш-скрипте написать
Цитировать
#!/bin/bash
/usr/bin/smssend 79269561407 server1-down


 не вижу ничего сложного.


Да, немного лишнего просочилось


#!/usr/bin/php -f
<?php 
function csend($url) { 
    
$ch curl_init(); 
    
curl_setopt($chCURLOPT_URL$url); 
    
curl_setopt($chCURLOPT_HEADERfalse); 
    
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($chCURLOPT_CONNECTTIMEOUT30);
    
curl_setopt($chCURLOPT_USERAGENT'PHP Bot (http://local/)'); 
    
$data curl_exec($ch); curl_close($ch); 
    return 
$data;

csend("http://server.ru/send.php?nomer=".$argv[1]."&message=".$argv[2]);
?>


Правда нужно что бы php-cli был установлен, но в случаи с python всё уже стоит, немного подправить скрипт и вперёд.

« Последнее редактирование: 18 Ноября 2012, 15:38:18 от SvMidi »
Я знаю только то, что ничего не знаю, остальные не знают и этого.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Спасибо, попробую разобраться.. хотя для меня это выглядит как-то тяжеловато.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Мне надо создать скрипт который заходит на сайт, закинуть его в /usr/bin

и потмо в скрипте котоырй по крону запускаеться указать обращение к скрипту котоырй заходит по посту?

Пользователь решил продолжить мысль 20 Ноября 2012, 19:28:14:
МОжет все таки как-то попроще будет решение !? Просто у меня и так этот скрипт из крона там архибольшой.
При условии, что например сервер не пингуеться.... скрипт отправит имейл на указаные адреса + должен зайти на
www.site.ru/sms/send?api_id=$ID1&to=$TEL1&text=$MESSAGE1

и потом на :

www.site.ru/sms/send?api_id=$ID2&to=$TEL2&text=$MESSAGE1

« Последнее редактирование: 20 Ноября 2012, 19:28:14 от TrEK »

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
Ну я не знаю куда проще, скрипт на PHP, который я выложил выше я использую в nagios и ещё в двух приложениях. В этом так сказать вся фишка, написал один скрипт для отправки и потом его можно использовать в других.
Цитировать
Мне надо создать скрипт который заходит на сайт
Нет, тебе надо написать скрипт который методом GET шлёт переменные id, to, text
Я знаю только то, что ничего не знаю, остальные не знают и этого.

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
вместо lynx вполне можно использовать curl. делал скрипт запроса баланса сотового оператора, интернет провайдера, всё отлично работает.
также есть знаменитый wget

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
Цитировать
также есть знаменитый wget
С которым такая штука не прокатывает. Да и ответ с той стороны не получишь.
Я знаю только то, что ничего не знаю, остальные не знают и этого.

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
С которым такая штука не прокатывает. Да и ответ с той стороны не получишь.
wget перейдёт по ссылке, переменные get находятся в самой ссылке, вывод через ключи тоже может быть не только в файл, но и на консоль. не вижу трудностей.

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
Я тоже первым делом wget пробовать стал и обломился. Хотя в моём случае попытка была обречена на провал потому что мне было нужно ещё узнать что удалённый сервер скажет в ответ.
Я знаю только то, что ничего не знаю, остальные не знают и этого.

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
пример от балдыwget ixbt.com -qO- | grep errorпарсить в выводе можно что угодно и чем угодно, главное знать формат и что ищешь.

Оффлайн SvMidi

  • Активист
  • *
  • Сообщений: 815
    • Просмотр профиля
стесняюсь спросить, где же ответ сервера и что тут грепать?


wget http://serv/meteo/index.php?action=1
--2012-11-20 21:48:42--  http://serv/meteo/index.php?action=1
Подключение к serv:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 5 [text/html]
Сохранение в каталог: ««index.php?action=1»».


100%[================================================>] 5           --.-K/s   за 0s     


2012-11-20 21:48:42 (125 KB/s) - «index.php?action=1» сохранен [5/5]


Хм, absent оказался всё таки прав, поковырялся с wget'ом, оказывается послать можно, если адрес заключить в кавычки:
wget "www.site.ru/sms/send?api_id=$ID1&to=$TEL1&text=$MESSAGE1"
а ответ можно увидеть в содержании сохранённого файла, главное не забыть удалить (или использовать --spider, что бы не качалось), хотя можно использовать в качестве журнала.
« Последнее редактирование: 20 Ноября 2012, 22:09:58 от SvMidi »
Я знаю только то, что ничего не знаю, остальные не знают и этого.

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.