Forma de linha de comando de envio de ping

1

Eu tenho um monte de sites com Drupal. Cada site tem o Módulo Multiping para o ping do servidor ping.

Existe alguma maneira de enviar ping através da linha de comando?

Espero poder criar um servidor dedicado para o ping.

    
por Najib-botak Chin 29.07.2011 / 06:52

1 resposta

3

Como Caleb observa, cURL é geralmente a arma de escolha para linha de comando HTTP A parte complicada - como Caleb nota novamente - é colocar o pedido juntos, especialmente para XML-RPC, onde o servidor provavelmente está procurando para uma entrada bem formada.

Mas se você pesquisar na fonte do Multipin , veja que é não apenas uma simples requisição HTTP (achei que se trata disso) e muda com base em quais serviços o serviço de destino ativou - e, no caso de weblogUpdates - casos especiais, o que é enviado:

// Ping! Check service method
if (!empty($pingservice->method)) {
  if ($pingservice->method == 'weblogUpdates.ping') {
    $result = xmlrpc($pingservice->url, $pingservice->method, $name, $base_url);
  }
  else {
    $result = xmlrpc($pingservice->url, $pingservice->method, $name, $base_url, $rss_url);
  }
}
else {
  $pingurl = strtr($pingservice->url, array(
    '%name' => urlencode($name),
    '%url' => urlencode($base_url .'/'),
    '%rss' => urlencode($rss_url),
  ));
  $result = drupal_http_request($pingurl);

E algumas linhas acima, é inteligente sobre como decidir qual rss URL para enviar, com base na taxonomia, etc.

Então eu sugiro uma das duas abordagens.

  1. Se você quiser apenas fazer alguma coisa, simule o drupal_http_request enviando algo assim:

    $ curl <target-pingservice-url> -d 'name=<your site name>' -d url=<your-url> -d rss=/rss.xml
    
  2. Alternativamente: se quiser todo o comportamento do MultiPing, você pode extraia essa função _multiping_doping e execute-a a partir do linha de comando diretamente pelo PHP.

    A função workhorse que você precisará é o xmlrpc do Drupal: link

Boa sorte!

    
por 15.04.2012 / 07:01