Zapytanie wsadowe Tagi serwisowe Dell


9

Czy ktoś zna sposób na uzyskanie szeregu informacji na listę tagów serwisowych, czy Dell ma w tym celu sekcję na swojej stronie? Byłbym także otwarty na wszelkie biblioteki Perla / Pythona lub skrypty powłoki * nix.

W tej chwili przede wszystkim chcę mieć jakąś datę dla każdego tagu.


Co dokładnie masz na myśli, gdy poprosisz o „otrzymanie wielu informacji” od firmy Dell?
jedenaście81

Chciałbym znaleźć datę zakończenia gwarancji. Przydatna byłaby również data wysyłki.
Evan Anderson

Szybkie wyszukiwanie dało mi wiele osób, które chcą zapytać maszyny o znaczniki serwisowe, ale niewiele o ludziach pytających o witrynę Dell. Spiceworks łączy tag serwisowy ze stroną pobierania sterownika, która przyjmuje tag serwisowy jako argument adresu URL. Z kolei przejście z tej strony do strony „Konfiguracja systemu” korzysta z tego znacznika usługi dostarczonego przez Spiceworks (chociaż w tym momencie nie ma już adresu URL). Wygląda na to, że nie znajdziesz tylko adresu URL, w którym możesz przekazać znacznik usługi, który zwróci kod HTML, który możesz zeskrobać z ekranu. Szkoda też. To by się przydało.
Evan Anderson

Odpowiedzi:


19

Pobierz następujący adres URL (zastępując SVCTAG na końcu faktycznym znacznikiem usługi) dla każdego znacznika:

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

Analizowanie powstałej strony pod kątem interesujących informacji pozostawia się jako ćwiczenie dla czytelnika :-)


2
format strony ostatnio się zmienił i teraz trudniej go przeanalizować. Wydaje się, że interfejs API dostępny jest na stronie xserv.dell.com/services/assetservice.asmx?WSDL . Szybki skrypt do zapytania: gist.github.com/1893036
Daniel

@Daniel ten serwis internetowy i przykładowy skrypt to najlepsze rozwiązanie IMO i prawdopodobnie mało znane. Powinieneś opublikować to jako poprawną odpowiedź, a ja +1!
Patrick

3

Dodaj swój system na stronie pomocy technicznej Dell, w sekcji „ moje systemy ”. Możesz obsłużyć do 100 systemów.

Oczywiście musisz mieć konto w witrynie Dell.

Niestety nie wiem o systemie wsadowym do wykonania zadania, nawet jeśli możesz oczywiście użyć curl, snoopy lub czegokolwiek, co znasz, aby automatycznie zalogować się, pobrać listę i przeanalizować wyniki.


3

Wiem, że to stary post, ale spędziłem nad tym sporo godzin i pomyślałem, że pomogę każdemu, kto na to wpadnie. Nowa strona firmy Dell jest w całości javascript i nie mogłem wymyślić, jak ją zakodować w celu zapytania o dane znacznika usługi. Po pewnym czasie pomyślałem o użyciu zamiast tego strony mobilnej (mobile = no javascript) i to działało dla mnie przy użyciu perla / LWP do pobierania danych z każdego tagu serwisowego. Jestem hakerem Perla, więc ktoś inny może napisać to trochę bardziej czysto. Poniżej przedstawiono oryginalną konfigurację systemu. Chodzi o to, że pierwszy adres URL „get” pobiera plik cookie ze znacznikiem usługi, a drugi adres URL pobiera żądane dane o znaczniku usługi. Następnie możesz przeanalizować „$ answer” z drugiego pobrania dla danych, których szukasz.

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

Znacznik serwisowy jest zasadniczo analogiczny z numerem seryjnym.

Klasa WMI Win32_BaseBoard.SerialNumber zawiera te informacje. Google „numer seryjny wmi”, a znajdziesz kilka przykładowych rozwiązań w zakresie uzyskiwania tych danych. Używamy skryptu podczas kompilacji, aby nazwać skrzynkę przy użyciu numeru seryjnego i innych poprzedzających znaków jako nazw hostów stacji roboczej, co znacznie ułatwia rozwiązywanie problemów z dużą liczbą klientów.


2
Myślę, że Kyle ma już znaczniki serwisowe. Chce zapytać witrynę internetową firmy Dell, aby uzyskać informacje na temat tagów serwisowych - daty zakończenia gwarancji, daty wysyłki itp.
Evan Anderson

Jestem idiotą!
duffbeer703

2

Dell ma teraz opcję zapisania tagów serwisowych. Musisz utworzyć przy nich login i to wszystko. Pokazuje także, które gwarancje na serwery wygasają i można z nich eksportować.


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

Wiem, że to dość stary wątek (znalazłem go tylko dlatego, że był połączony z nowszym), ale może możesz użyć tej wtyczki 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

Skrypt wysyła zapytanie do standardowego hosta lokalnego, próbując dmidecode. Możesz również uruchomić go na zdalnym hoście za pomocą SNMP lub możesz uruchomić z NRPE. Całkiem przydatny.


-1
dmidecode -s system-serial-number

zwróci tag serwisowy

możesz użyć ssh do zdalnego uruchomienia go we wszystkich systemach w partii. zakładając, że wszyscy oczywiście używają Linuksa


2
Myślę, że nie rozumiesz. Kyle ma już tagi serwisowe. Chce zapytać witrynę internetową Dell, aby uzyskać informacje na temat tagów serwisowych.
Evan Anderson

Evan ma rację co do tego, po czym jestem ...
Kyle Brandt

och, wtedy stoję poprawiony :)
dyasny

Mam 'dmidecode' is not recognized as an internal or external command, operable program or batch file.na moim dell laptop.
starbeamrainbowlabs

następnie musisz zainstalować dmidecode
dyasny


-1

Uwaga: jest to edytowany post tej odpowiedzi

Dell ostatnio zmienił swoją stronę internetową.

Zaktualizowałem powyższy skrypt Perla, aby umożliwić tę zmianę.

Byłem zainteresowany jedynie zrzuceniem dat wysyłki każdej maszyny do pliku tekstowego, więc przeanalizowałem to, ale jestem pewien, że kod można łatwo zmodyfikować, aby pobrać dowolne dane.

===

#!/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
Powinna być edycja oryginalnej odpowiedzi.
Deer Hunter
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.