Etiquetas de serviço Dell de consulta em lote

9

Alguém sabe como obter um monte de informações para uma lista de etiquetas de serviço, a Dell possui uma seção em seu site para isso? Eu também estaria aberto a quaisquer bibliotecas Perl / Python ou scripts de shell * nix.

No momento, eu quero principalmente algum tipo de data para cada tag.

Kyle Brandt
fonte
O que exatamente você quer dizer quando pede para "obter um monte de informações" da Dell?
Eleven81 22/09/09
A data de término da garantia seria algo que eu procuraria. A data de envio também seria legal.
Evan Anderson
Uma pesquisa rápida me deu muitas pessoas que desejam consultar máquinas em busca de etiquetas de serviço, mas muito pouco sobre pessoas consultando o site da Dell. O Spiceworks vincula a etiqueta de serviço a uma página de download do driver, que a leva como argumento de URL. Navegar dessa página para a página "Configuração do sistema", por sua vez, usa a etiqueta de serviço fornecida pelo Spiceworks (embora não esteja mais na URL naquele momento). Parece que você não encontrará apenas um URL no qual possa passar a etiqueta de serviço, que retornará algum HTML que você pode raspar na tela. Uma pena também. Isso seria útil.
Evan Anderson

Respostas:

19

Faça o download do seguinte URL (substituindo SVCTAG no final pela etiqueta de serviço real) para cada etiqueta:

http://support.dell.com/support/topics/global.aspx/support/my_systems_info/details?c=us&l=en&s=gen&ServiceTag=SVCTAG

A análise da página resultante das informações de seu interesse é deixada como um exercício para o leitor :-)

Daniel
fonte
2
o formato da página foi alterado recentemente e agora é mais difícil de analisar. Parece haver uma API disponível em xserv.dell.com/services/assetservice.asmx?WSDL . Script rápido para consultá-lo: gist.github.com/1893036
Daniel
@ Daniel, este serviço de web e script de exemplo é a melhor solução IMO e provavelmente não é bem conhecido. Você deve republicá-lo como uma resposta adequada, eu vou marcar com +1!
31413 Patrick
3

Adicione seu sistema no site de suporte da dell, na seção " meus sistemas ". Você pode lidar com até 100 sistemas.

Você precisa ter uma conta no site da Dell, é claro.

Infelizmente, eu não conheço um sistema em lote para fazer o trabalho, mesmo que você possa usar curl, snoopy ou qualquer coisa que esteja familiarizada para fazer o login automaticamente, recuperar a lista e analisar os resultados.

drAlberT
fonte
3

Sei que este é um post antigo, mas passei um número decente de horas nisso e pensei em ajudar qualquer pessoa que se deparasse com isso. O novo site da Dell é todo javascript e não consegui descobrir como codificá-lo para consultar dados de etiquetas de serviço. Depois de algum tempo, pensei em usar o site móvel (mobile = no javascript) e funcionou para mim usando o perl / LWP para extrair dados de cada etiqueta de serviço. Eu sou um hacker perl, então alguém pode escrever isso de forma um pouco mais limpa. O abaixo puxa a configuração original do sistema. A ideia é que o primeiro URL 'get' puxe um cookie com a etiqueta de serviço e o segundo URL obtenha os dados que você deseja sobre a etiqueta de serviço. Você pode então analisar a "resposta $" da segunda obtenção dos dados que está procurando.

#!/usr/bin/perl

use strict;
use LWP::Simple;
use LWP::UserAgent;

my $inputfile  = $ARGV[0];

my ($url,$response,$answer);

open (DATA, $inputfile) or die "Can't open $inputfile \n";
foreach my $serviceTag (<DATA>)
{
   chomp $serviceTag;
   print "\n$serviceTag";

   ##### Allow Cookies
   my $browser = LWP::UserAgent->new;
   $browser->cookie_jar({});
   $browser->cookie_jar( HTTP::Cookies->new(
      'file' => 'cookies.lwp',  # where to read/write cookies
      'autosave' => 0           # do not save it to disk when done
   ));

   # declare agent as mozilla, not perl LWP
   $browser->agent("Mozilla/8.0");

   my $urlPartA = "http://m.dell.com/mt/www.dell.com/support/troubleshooting/us/en/19/Servicetag/";
   my $urlPartB = "?s=BIZ&un_jtt_redirect";
   my $firstURL = join('', $urlPartA,$serviceTag,$urlPartB);
   #print "\nURL = $firstURL";


   $url = URI->new("$firstURL");
   $response = $browser->get( $url );
   $answer = $response->content;
   #print "\nAnswer:\n$answer\n\n";

   $url = URI->new('http://m.dell.com/mt/www.dell.com/support/troubleshooting/us/en/555/TroubleShooting?name=TroubleShooting_SystemConfigurationTab');
   $response = $browser->get( $url );
   $answer = $response->content;
   #print "\nAnswer:\n$answer\n\n";
}
Merrett
fonte
2

A etiqueta de serviço geralmente é análoga ao número de série.

A classe WMI Win32_BaseBoard.SerialNumber contém essas informações. Google "número de série do wmi" e você encontrará vários exemplos de soluções para obter esses dados. Usamos um script no momento da construção para nomear a caixa usando o número de série e outros caracteres anexados como nomes de host de nossa estação de trabalho, o que facilita muito a solução de problemas com um grande número de clientes.

duffbeer703
fonte
2
Eu acho que Kyle já tem as etiquetas de serviço. Ele quer consultar o site da Dell para obter informações sobre o serviço tags-- datas de término da garantia, datas de envio, etc.
Evan Anderson
Duh, eu sou um idiota!
duffbeer703
2

A Dell agora tem uma opção para salvar suas etiquetas de serviço. Você precisa criar um login com eles e isso é tudo. Ele também mostra quais garantias de servidor estão expirando e você pode exportar a partir dele.

Alan John
fonte
1
#!/usr/bin/python

# dell_warranty.py v0.1
# Written by Frode Egeland <egeland[at]gmail.com> - Copyright 2009
# Released under the terms of the GNU GPL v3 - see http://www.gnu.org/licenses/gpl-3.0.html
#
# Version History
# 0.1 - 2009-10-12 - Frode Egeland - Initial version. Tested with a simple csv list of service tags only.
# 

import urllib2, csv, re
from BeautifulSoup import BeautifulSoup

url="http://support.dell.com/support/topics/global.aspx/support/my_systems_info/details?c=us&l=en&s=gen&ServiceTag=%s"

stlist = []

# generate a list of servicetags from a csv
csvfile = csv.reader(open('taglist.csv'))

for line in csvfile:
 for entry in line:
  stlist.append(entry)

fixdate = re.compile("(\d{1,2})\/(\d{1,2})\/(\d{4})")

print "Service Tag, Warranty Type, Provider, Start Date, End Date, Days Remaining"

for currtag in stlist:
 page = urllib2.urlopen(url % (currtag,))

 for line in page.readlines():
  if "Parts only Warranty" in line:
   soup = BeautifulSoup(line)
   break
 table = soup.find('table',{'class':"contract_table"})
 rows = table.findAll('tr')
 rows = rows[1:]
 for row in rows:
  output = "%s" % (currtag,)
  cells = row.findAll('td')
  for cell in cells:
   if cell.a: # link / formatted text
    txt = cell.a.string
   elif cell.b: # bold text
    txt = cell.b.string
   elif cell.i: # italic
    txt = cell.i.string
   else: #normal text
    txt = cell.string
   match = fixdate.search(txt)
   if match:
    txt = "%d-%d-%d" % (int(match.group(3)),int(match.group(1)),int(match.group(2)))
   output = "%s,%s" % (output,txt)
  output = output.strip()
  print output
user22789
fonte
1

Eu sei que este é um tópico bastante antigo (eu só o encontrei porque estava vinculado a partir de um tópico mais recente), mas talvez você possa usar este plugin nagios : nagios exchange

python check_dell_warranty.py
OK: Service Tag: tag Warranty: Next Business Day, Provider: DELL, Start: 2010-02-24, End: 2013-02-25, Days left: 860 Warranty: NBD ProSupport For IT On-Site, Provider: DELL, Start: 2010-02-24, End: 2013-02-25, Days left: 860

O script consulta o host local padrão, tentando o dmidecode. Você também pode executá-lo em um host remoto usando o SNMP ou em NRPE. Bastante útil.

natxo asenjo
fonte
-1
dmidecode -s system-serial-number

retornará a etiqueta de serviço

você pode usar o ssh para executá-lo remotamente em todos os seus sistemas em um lote. supondo que todos eles estejam executando o Linux, é claro

dyasny
fonte
2
Eu acho que você está entendendo mal. Kyle já tem as etiquetas de serviço. Ele quer consultar o site da Dell para obter informações sobre as etiquetas de serviço.
Evan Anderson
Evan está certo sobre o que eu sou depois ...
Kyle Brandt
oh, eu corrijo então :)
dyasny
Eu entro 'dmidecode' is not recognized as an internal or external command, operable program or batch file.no meu laptop da Dell.
Starbeamrainbowlabs
em seguida, você precisa instalar dmidecode
dyasny
-1

Nota: Este é um repost editado desta resposta

A Dell mudou seu site recentemente.

Eu atualizei o script Perl acima para permitir essa alteração.

Eu estava interessado apenas em despejar as datas de entrega de cada máquina em um arquivo de texto, portanto, apenas analisei isso, mas tenho certeza de que o código pode ser facilmente modificado para capturar os dados desejados.

===

#!/usr/bin/perl

use strict;
use LWP::Simple;
use LWP::UserAgent;
use Mojo::DOM;

my $inputfile  = $ARGV[0];

my ($url,$response,$html);
my $outputfile = "result.txt";
open (DATA, $inputfile) or die "Can't open $inputfile \n";
open OUTPUT, ">>".$outputfile or die "Could not open '$outputfile'\n";
foreach my $serviceTag (<DATA>)
{
   chomp $serviceTag;
   print "\n$serviceTag\n";
   print OUTPUT $serviceTag."\t";
   ##### Allow Cookies
   my $browser = LWP::UserAgent->new;
   $browser->cookie_jar({});
   $browser->cookie_jar( HTTP::Cookies->new(
      'file' => 'cookies.lwp',  # where to read/write cookies
      'autosave' => 0           # do not save it to disk when done
   ));

   # declare agent as mozilla, not perl LWP
   $browser->agent("Mozilla/8.0");
    #    
   my $urlPartA = "http://www.dell.com/support/home/us/en/19/product-support/servicetag/";
    #   configuration
   my $urlPartB = "/configuration";
   my $firstURL = join('', $urlPartA,$serviceTag,$urlPartB);
   #print "\nURL = $firstURL";

   $url = URI->new("$firstURL");
   $response = $browser->get( $url );
   $html = $response->content;
   #print "\nAnswer:\n$html\n\n";

   my @values;
   my $dom = Mojo::DOM->new;
   $dom->parse($html);
   my $skip;
   for my $dd ($dom->find('div.col-lg-4.col-md-4.col-sm-3.col-xs-6')->each) {
    push(@values, $dd->text) if $skip++;
    #print $dd->text, "\n" if $skip++;
   }
    print $values[1]."\n";
    if ( $values[1] =~ m/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/ )

    {   # format date better for Excel
        #print OUTPUT $values[1]."\n";
        print OUTPUT "$3-$1-$2\n";
    }

    print $values[1]."\n";
    print "$3-$1-$2\n";
}


close OUTPUT or die $!;
fxr
fonte
2
Deve ser uma edição da resposta original.
Deer Hunter