Stapelabfrage Dell Service Tags

9

Kennt jemand eine Möglichkeit, eine Reihe von Informationen für eine Liste von Service-Tags abzurufen? Hat Dell auf seiner Website einen entsprechenden Abschnitt? Ich wäre auch offen für alle Perl / Python-Bibliotheken oder * nix-Shell-Skripte.

Im Moment möchte ich meistens eine Art Datum für jedes Tag.

Kyle Brandt
quelle
Was genau meinen Sie, wenn Sie Dell um eine Reihe von Informationen bitten?
elf81
Das Enddatum der Garantie wäre etwas, nach dem ich suchen würde. Versanddatum wäre auch schön.
Evan Anderson
Eine schnelle Suche gab mir viele Leute, die Maschinen nach Service-Tags abfragen möchten, aber sehr wenig über Leute, die die Dell-Website abfragen. Spiceworks verknüpft das Service-Tag mit einer Treiber-Download-Seite, die das Service-Tag als URL-Argument verwendet. Beim Navigieren von dieser Seite zur Seite "Systemkonfiguration" wird wiederum das von Spiceworks bereitgestellte Service-Tag verwendet (obwohl es zu diesem Zeitpunkt nicht mehr in der URL enthalten ist). Es sieht so aus, als würden Sie nicht nur eine URL finden, in der Sie das Service-Tag übergeben können, sondern auch HTML zurückgeben, das Sie auf dem Bildschirm durchsuchen können. Schade auch. Das wäre praktisch.
Evan Anderson

Antworten:

19

Laden Sie für jedes Tag die folgende URL herunter (ersetzen Sie SVCTAG am Ende durch das eigentliche Service-Tag):

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

Das Parsen der resultierenden Seite nach den Informationen, an denen Sie interessiert sind, bleibt dem Leser als Übung :-)

Daniel
quelle
2
Das Seitenformat wurde kürzlich geändert und es ist jetzt schwieriger zu analysieren. Es scheint eine API unter xserv.dell.com/services/assetservice.asmx?WSDL verfügbar zu sein . Schnelles Skript, um es abzufragen: gist.github.com/1893036
Daniel
@ Daniel dieses Web-Service & Beispiel-Skript ist die beste Lösung IMO und wahrscheinlich nicht bekannt. Sie sollten es als richtige Antwort erneut veröffentlichen, ich werde es +1!
Patrick
3

Fügen Sie Ihr System auf der Dell Support-Site im Abschnitt " Meine Systeme " hinzu. Sie können bis zu 100 Systeme verarbeiten.

Sie müssen natürlich ein Konto bei Dell haben.

Leider weiß ich nichts über ein Batch-System, um die Arbeit zu erledigen, auch wenn Sie natürlich Curl, Snoopy oder was auch immer verwenden können, um sich automatisch anzumelden, die Liste abzurufen und die Ergebnisse zu analysieren.

drAlberT
quelle
3

Ich weiß, dass dies ein alter Beitrag ist, aber ich habe eine anständige Anzahl von Stunden damit verbracht und dachte, ich würde jedem anderen helfen, der darauf gestoßen ist. Die neue Website von Dell besteht ausschließlich aus Javascript, und ich konnte nicht herausfinden, wie ich dagegen codieren kann, um Service-Tag-Daten abzufragen. Nach einiger Zeit dachte ich daran, stattdessen ihre mobile Site zu verwenden (mobil = kein Javascript), und das funktionierte bei mir mit Perl / LWP, um Daten auf jedem Service-Tag abzurufen. Ich bin ein Perl-Hacker, daher kann jemand anderes dies möglicherweise etwas sauberer schreiben. Im Folgenden wird die ursprüngliche Systemkonfiguration abgerufen. Die Idee ist, dass die erste URL 'get' ein Cookie mit dem Service-Tag und die zweite URL get die gewünschten Daten über das Service-Tag abruft. Sie können dann die "$ answer" des zweiten Abrufs für die gesuchten Daten analysieren.

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

Service Tag ist im Allgemeinen analog zur Seriennummer.

Die WMI Win32_BaseBoard.SerialNumber-Klasse enthält diese Informationen. Google "wmi Seriennummer" und Sie finden mehrere Beispiellösungen zum Abrufen dieser Daten. Wir verwenden zur Erstellungszeit ein Skript, um die Box unter Verwendung der Seriennummer und anderer vorangestellter Zeichen als Hostnamen unserer Workstation zu benennen, was die Fehlerbehebung bei einer großen Anzahl von Clients erheblich vereinfacht.

duffbeer703
quelle
2
Ich denke Kyle hat bereits die Service-Tags. Er möchte die Website von Dell abfragen, um Informationen zu den Service-Tags zu erhalten - Garantieenddaten, Versanddaten usw.
Evan Anderson
Duh, ich bin ein Idiot!
Duffbeer703
2

Dell hat jetzt die Möglichkeit, Ihre Service-Tags zu speichern. Sie müssen mit ihnen ein Login erstellen und das ist alles. Außerdem wird angezeigt, welche Servergarantien ablaufen und von diesen exportiert werden können.

Alan John
quelle
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
quelle
1

Ich weiß, dass dies ein ziemlich alter Thread ist (ich habe ihn nur gefunden, weil er von einem neueren verlinkt wurde), aber vielleicht können Sie dieses Nagios-Plugin verwenden: 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

Das Skript fragt den Standard-Localhost ab und versucht dmidecode. Sie können es auch mit SNMP auf einem Remote-Host oder über NRPE ausführen. Sehr praktisch.

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

gibt das Service-Tag zurück

Sie können ssh verwenden, um es auf allen Ihren Systemen in einem Stapel remote auszuführen. vorausgesetzt, sie laufen alle unter Linux

dyasny
quelle
2
Ich denke du missverstehst. Kyle hat bereits die Service-Tags. Er möchte die Dell-Website abfragen, um Informationen zu den Service-Tags zu erhalten.
Evan Anderson
Evan hat Recht mit dem, was ich
Kyle Brandt
oh, ich stehe dann korrigiert :)
dyasny
Ich steige 'dmidecode' is not recognized as an internal or external command, operable program or batch file.auf meinen Dell Laptop.
Starbeamrainbowlabs
dann müssen Sie dmidecode
dyasny
-1

Hinweis: Dies ist ein bearbeiteter Repost dieser Antwort

Dell hat kürzlich seine Website geändert.

Ich habe das obige Perl-Skript aktualisiert, um diese Änderung zu ermöglichen.

Ich war nur daran interessiert, die Versanddaten jeder Maschine in eine Textdatei zu kopieren, also habe ich das nur analysiert, aber ich bin sicher, dass der Code leicht geändert werden kann, um die gewünschten Daten abzurufen.

===

#!/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
quelle
2
Sollte eine Bearbeitung der ursprünglichen Antwort sein.
Deer Hunter