Query batch Tag di servizio Dell


9

Qualcuno sa come ottenere un sacco di informazioni per un elenco di tag di servizio, Dell ha una sezione sul proprio sito per questo? Sarei anche aperto a qualsiasi libreria Perl / Python o script di shell * nix.

In questo momento voglio principalmente una sorta di data per ogni tag.


Cosa intendi esattamente quando chiedi di "ottenere un sacco di informazioni" da Dell?
undici81,

La data di fine della garanzia sarebbe qualcosa da cercare. Anche la data di spedizione sarebbe buona.
Evan Anderson,

Una rapida ricerca mi ha dato un sacco di persone che vogliono interrogare le macchine per i tag di servizio, ma molto poco sulle persone che interrogano il sito Web Dell. Spiceworks collega il tag di servizio a una pagina di download del driver che accetta il tag di servizio come argomento URL. Navigando da quella pagina alla pagina "Configurazione del sistema", a sua volta, utilizza quel tag di servizio fornito da Spiceworks (anche se non è più nell'URL in quel punto). Sembra che non troverai solo un URL in cui puoi passare il tag di servizio che restituirà un codice HTML che puoi schermare. Un vero peccato anche. Sarebbe utile.
Evan Anderson,

Risposte:


19

Scarica il seguente URL (sostituendo SVCTAG alla fine con il tag di servizio effettivo) per ciascun tag:

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

L'analisi della pagina risultante per le informazioni che ti interessano viene lasciata come esercizio per il lettore :-)


2
il formato della pagina è stato recentemente modificato ed è ora più difficile analizzarlo. Sembra che ci sia un API disponibile su xserv.dell.com/services/assetservice.asmx?WSDL . Script rapido per interrogarlo: gist.github.com/1893036
Daniel

@Daniel questo servizio web e lo script di esempio sono la migliore soluzione IMO e probabilmente non sono ben noti. Dovresti ripubblicarlo come una risposta corretta, lo farò +1!
Patrick

3

Aggiungi il tuo sistema nel sito di supporto dell, nella sezione "i miei sistemi ". Puoi gestire fino a 100 sistemi.

Ovviamente devi avere un account sul sito Dell.

Sfortunatamente non conosco un sistema batch per fare il lavoro, anche se ovviamente puoi usare curl, snoopy o qualsiasi cosa tu abbia familiarità per fare automaticamente il login, recuperare l'elenco e analizzare i risultati.


3

So che questo è un vecchio post, ma ho trascorso un discreto numero di ore su questo e ho pensato che avrei aiutato chiunque lo avesse incontrato. Il nuovo sito di Dell è tutto javascript e non sono riuscito a capire come codificarlo per eseguire query sui dati dei tag di servizio. Dopo qualche tempo ho pensato di usare il loro sito mobile (mobile = no javascript) e che ha funzionato per me usando perl / LWP per ridurre i dati su ogni tag di servizio. Sono un hacker Perl, quindi qualcun altro potrebbe essere in grado di scrivere questo in modo un po 'più pulito. Di seguito viene visualizzata la configurazione del sistema originale. L'idea è che il primo URL "get" tira un cookie con il tag di servizio e il secondo URL get tira i dati desiderati sul tag di servizio. È quindi possibile analizzare la "$ risposta" del secondo get per i dati che si stanno cercando.

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

Il numero di servizio è generalmente analogo al numero di serie.

La classe WMI Win32_BaseBoard.SerialNumber contiene queste informazioni. Google "numero di serie wmi" e troverai diverse soluzioni di esempio per ottenere questi dati. Usiamo uno script in fase di creazione per nominare la casella utilizzando il numero seriale e altri caratteri anteposti come nomi host della nostra workstation, il che semplifica notevolmente la risoluzione dei problemi con un numero elevato di client.


2
Penso che Kyle abbia già i tag di servizio. Vuole interrogare il sito Web di Dell per ottenere informazioni sui tag di servizio - date di fine della garanzia, date di spedizione, ecc.
Evan Anderson,

Duh, sono un idiota!
duffbeer703,

2

Dell ora ha un'opzione per salvare i tag di servizio. Devi creare un login con loro e questo è tutto. Mostra anche quali garanzie dei server stanno scadendo e puoi esportare da esso.


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

So che questo è un thread piuttosto vecchio (l'ho trovato solo perché era collegato da uno più recente), ma forse puoi usare questo 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

Lo script richiede localhost standard, provando dmidecode. È inoltre possibile eseguirlo su un host remoto tramite SNMP oppure eseguirlo da NRPE. Abbastanza utile.


-1
dmidecode -s system-serial-number

restituirà il numero di servizio

puoi usare ssh per eseguirlo in remoto su tutti i tuoi sistemi in un batch. supponendo che tutti stiano eseguendo Linux ovviamente


2
Penso che tu sia frainteso. Kyle ha già i tag di servizio. Vuole interrogare il sito Web di Dell per ottenere informazioni sui tag di servizio.
Evan Anderson,

Evan ha ragione su quello che sto cercando ...
Kyle Brandt,

oh, sono corretto allora :)
dyasny il

Salgo 'dmidecode' is not recognized as an internal or external command, operable program or batch file.sul mio computer portatile Dell.
starbeamrainbowlabs

allora devi installare dmidecode
dyasny


-1

Nota: questo è ripubblicazione modificata di questa risposta

Dell ha cambiato il proprio sito Web di recente.

Ho aggiornato lo script Perl sopra per consentire questa modifica.

Mi interessava solo scaricare le date di spedizione di ogni macchina su un file di testo, quindi analizzarlo solo ma sono sicuro che il codice può essere facilmente modificato per catturare qualsiasi dato tu voglia.

===

#!/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
Dovrebbe essere una modifica alla risposta originale.
Deer Hunter
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.