Consulta por lotes Etiquetas de servicio de Dell

9

Alguien sabe de una manera de obtener un montón de información para una lista de etiquetas de servicio, ¿tiene Dell una sección en su sitio para esto? También estaría abierto a cualquier biblioteca Perl / Python o scripts de shell * nix.

En este momento, principalmente quiero algún tipo de fecha para cada etiqueta.

Kyle Brandt
fuente
¿Qué quiere decir exactamente cuando pide "obtener un montón de información" de Dell?
once81
La fecha de finalización de la garantía sería algo que buscaría. La fecha de envío también sería buena.
Evan Anderson el
Una búsqueda rápida me dio muchas personas que querían consultar a las máquinas por etiquetas de servicio, pero muy poco acerca de las personas que consultaban el sitio web de Dell. Spiceworks vincula la etiqueta de servicio a una página de descarga de controladores que toma la etiqueta de servicio como argumento de URL. Navegar desde esa página a la página "Configuración del sistema", a su vez, utiliza esa etiqueta de servicio suministrada por Spiceworks (aunque ya no está en la URL en ese momento). Parece que no solo vas a encontrar una URL en la que puedas pasar la etiqueta de servicio que devolverá algo de HTML que puedes borrar. Una pena, también. Eso sería útil.
Evan Anderson el

Respuestas:

19

Descargue la siguiente URL (reemplazando SVCTAG al final con la etiqueta de servicio 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

Analizar la página resultante para la información que le interesa se deja como un ejercicio para el lector :-)

Daniel
fuente
2
el formato de página cambió recientemente y ahora es más difícil de analizar. Parece que hay una API disponible en xserv.dell.com/services/assetservice.asmx?WSDL . Script rápido para consultarlo: gist.github.com/1893036
Daniel
@Daniel este servicio web y script de ejemplo es la mejor solución de la OMI, y probablemente no sea muy conocida. Deberías volver a publicarlo como una respuesta adecuada, ¡lo haré +1!
Patrick
3

Agregue su sistema en el sitio de soporte de dell, en la sección " mis sistemas ". Puede manejar hasta 100 sistemas.

Debe tener una cuenta en el sitio de Dell, por supuesto.

Desafortunadamente, no conozco un sistema por lotes para hacer el trabajo, incluso si, por supuesto, puede usar curl, snoopy o lo que sea que esté familiarizado para iniciar sesión automáticamente, recuperar la lista y analizar los resultados.

drAlberT
fuente
3

Sé que esta es una publicación antigua, pero he pasado un buen número de horas en esto y pensé que ayudaría a cualquier otra persona que se haya encontrado con esto. El nuevo sitio de Dell es todo javascript y no pude encontrar la manera de codificarlo para consultar los datos de la etiqueta de servicio. Después de algún tiempo pensé en usar su sitio móvil (mobile = no javascript) y eso funcionó para mí usando perl / LWP para extraer datos en cada etiqueta de servicio. Soy un hacker perl, por lo que alguien más puede escribir esto un poco más limpiamente. Lo siguiente muestra la configuración original del sistema. La idea es que la primera URL 'get' extraiga una cookie con la etiqueta de servicio y la segunda URL get extraiga los datos que desea sobre la etiqueta de servicio. Luego puede analizar el "$ respuesta" de la segunda obtención de los datos que está buscando.

#!/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
fuente
2

La etiqueta de servicio generalmente es análoga al número de serie.

La clase WMI Win32_BaseBoard.SerialNumber contiene esta información. Google "número de serie wmi" y encontrará varias soluciones de ejemplo para obtener estos datos. Usamos un script en el momento de la compilación para nombrar el cuadro usando el número de serie y otros caracteres antepuestos como nombres de host de nuestra estación de trabajo, lo que hace que la solución de problemas sea mucho más fácil con un gran número de clientes.

duffbeer703
fuente
2
Creo que Kyle ya tiene las etiquetas de servicio. Él quiere consultar el sitio web de Dell para obtener información sobre el servicio de garantía tags-- fechas de finalización, el envío fechas, etc.
Evan Anderson
Duh, soy un idiota!
duffbeer703
2

Dell ahora tiene una opción para guardar sus etiquetas de servicio. Necesita crear un inicio de sesión con ellos y eso es todo. También muestra qué garantías de servidores están caducando y puede exportar desde allí.

Alan John
fuente
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
usuario22789
fuente
1

Sé que este es un hilo bastante antiguo (solo lo encontré porque estaba vinculado desde uno más nuevo), pero tal vez pueda usar este complemento nagios : intercambio de nagios

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

El script consulta localhost estándar, intentando dmidecode. También puede ejecutarlo contra un host remoto utilizando SNMP o puede ejecutarlo desde NRPE. Bastante práctico.

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

devolverá la etiqueta de servicio

puede usar ssh para ejecutarlo de forma remota en todos sus sistemas en un lote. suponiendo que todos estén ejecutando Linux, por supuesto

dyasny
fuente
2
Creo que estás malentendido. Kyle ya tiene las etiquetas de servicio. Quiere consultar el sitio web de Dell para obtener información sobre las etiquetas de servicio.
Evan Anderson el
Evan tiene razón en lo que busco ...
Kyle Brandt
oh, mi error entonces :)
dyasny
Me subo 'dmidecode' is not recognized as an internal or external command, operable program or batch file.a mi laptop Dell.
starbeamrainbowlabs
entonces necesitas instalar dmidecode
dyasny
-1

Nota: Este es un reenvío editado de esta respuesta

Dell ha cambiado su sitio web recientemente.

He actualizado la secuencia de comandos Perl anterior para permitir este cambio.

Solo estaba interesado en volcar las fechas de envío de cada máquina en un archivo de texto, así que solo lo analicé, pero estoy seguro de que el código se puede modificar fácilmente para obtener los datos que desee.

===

#!/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
fuente
2
Debería ser una edición de la respuesta original.
Deer Hunter