Interrogations par lots des étiquettes de service Dell


9

Quelqu'un connaît un moyen d'obtenir un tas d'informations pour une liste d'étiquettes de service, Dell a-t-il une section sur son site pour cela? Je serais également ouvert à toutes les bibliothèques Perl / Python ou aux scripts shell * nix.

En ce moment, je veux surtout une sorte de date pour chaque balise.


Que voulez-vous dire exactement lorsque vous demandez à "obtenir un tas d'informations" de Dell?
eleven81

La date de fin de la garantie serait quelque chose que je rechercherais. La date d'expédition serait également agréable.
Evan Anderson

Une recherche rapide m'a donné beaucoup de gens qui souhaitent interroger des machines pour des étiquettes de service, mais très peu de personnes interrogeant le site Web de Dell. Spiceworks lie le numéro de service à une page de téléchargement de pilote qui prend le numéro de service comme argument URL. La navigation à partir de cette page vers la page "Configuration système", à son tour, utilise cette balise de service fournie par Spiceworks (bien qu'elle ne soit plus dans l'URL à ce stade). Il semble que vous n'allez pas seulement trouver une URL dans laquelle vous pouvez passer la balise de service qui renverra du code HTML que vous pourrez filtrer. Dommage aussi. Ce serait pratique.
Evan Anderson

Réponses:


19

Téléchargez l'URL suivante (en remplaçant SVCTAG à la fin par la balise de service réelle) pour chaque balise:

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

Analyser la page résultante pour les informations qui vous intéressent est laissé comme un exercice pour le lecteur :-)


2
le format de la page a récemment changé et il est désormais plus difficile à analyser. Il semble y avoir une API disponible sur xserv.dell.com/services/assetservice.asmx?WSDL . Script rapide pour l'interroger: gist.github.com/1893036
Daniel

@Daniel, ce script de service Web et d'exemple est la meilleure solution IMO, et probablement peu connu. Vous devriez le republier comme une réponse correcte, je vais le +1!
Patrick

3

Ajoutez votre système sur le site de support Dell, dans la section " mes systèmes ". Vous pouvez gérer jusqu'à 100 systèmes.

Vous devez bien sûr avoir un compte sur le site Dell.

Malheureusement, je ne connais pas de système par lots pour faire le travail, même si vous pouvez bien sûr utiliser curl, snoopy ou tout ce que vous connaissez pour faire automatiquement la connexion, récupérer la liste et analyser les résultats.


3

Je sais que c'est un ancien poste, mais j'ai passé un nombre décent d'heures à ce sujet et j'ai pensé aider quelqu'un d'autre qui aurait rencontré cela. Le nouveau site de Dell est entièrement javascript et je n'ai pas pu comprendre comment le coder pour interroger les données de numéro de service. Après quelque temps, j'ai pensé à utiliser leur site mobile à la place (mobile = pas de javascript) et cela a fonctionné pour moi en utilisant perl / LWP pour tirer les données vers le bas sur chaque étiquette de service. Je suis un hacker perl, donc quelqu'un d'autre pourrait peut-être écrire cela un peu plus proprement. Ce qui suit tire la configuration système d'origine. L'idée est que la première URL «get» tire un cookie avec la balise de service et la seconde URL get tire les données que vous voulez sur la balise de service. Vous pouvez ensuite analyser la "réponse $" de la deuxième get pour les données que vous recherchez.

#!/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";
}

2

L'étiquette de service est généralement analogue au numéro de série.

La classe WMI Win32_BaseBoard.SerialNumber contient ces informations. Google "numéro de série wmi" et vous trouverez plusieurs exemples de solutions pour obtenir ces données. Nous utilisons un script au moment de la construction pour nommer la boîte en utilisant le numéro de série et d'autres caractères ajoutés comme noms d'hôte de notre poste de travail, ce qui facilite le dépannage avec un grand nombre de clients.


2
Je pense que Kyle a déjà les étiquettes de service. Il veut interroger le site Web de Dell pour obtenir des informations sur les étiquettes de service - dates de fin de garantie, dates d'expédition, etc.
Evan Anderson

Duh, je suis un idiot!
duffbeer703

2

Dell a maintenant une option pour enregistrer vos étiquettes de service. Vous devez créer une connexion avec eux et c'est tout. Il indique également les garanties de serveurs qui expirent et vous pouvez les exporter.


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

1

Je sais que c'est un fil assez ancien (je ne l'ai trouvé que parce qu'il était lié à partir d'un nouveau), mais peut-être pouvez-vous utiliser ce plugin nagios : échange 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

Le script interroge l'hôte local standard, en essayant dmidecode. Vous pouvez également l'exécuter sur un hôte distant à l'aide de SNMP ou l'exécuter à partir de NRPE. Assez pratique.


-1
dmidecode -s system-serial-number

renverra le numéro de service

vous pouvez utiliser ssh pour l'exécuter à distance sur tous vos systèmes dans un lot. en supposant qu'ils utilisent tous Linux bien sûr


2
Je pense que vous vous méprenez. Kyle a déjà les étiquettes de service. Il souhaite interroger le site Web de Dell pour obtenir des informations sur les étiquettes de service.
Evan Anderson

Evan a raison sur ce que je recherche ...
Kyle Brandt

oh, je suis corrigé alors :)
dyasny

Je monte 'dmidecode' is not recognized as an internal or external command, operable program or batch file.sur mon portable Dell.
starbeamrainbowlabs

alors vous devez installer dmidecode
dyasny


-1

Remarque: Ceci est la publication modifiée de cette réponse

Dell a récemment changé son site Web.

J'ai mis à jour le script Perl ci-dessus pour permettre ce changement.

Je ne souhaitais que vider les dates d'expédition de chaque machine dans un fichier texte, donc je n'ai fait que l'analyser, mais je suis sûr que le code peut être facilement modifié pour saisir toutes les données que vous souhaitez.

===

#!/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 $!;

2
Doit être une modification de la réponse d'origine.
Deer Hunter
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.