Toplu Sorgu Dell Servis Etiketleri


9

Herkes, hizmet etiketlerinin bir listesi için bir sürü bilgi almanın bir yolunu biliyor, Dell'in sitesinde bunun için bir bölümü var mı? Ayrıca herhangi bir Perl / Python kütüphanesine veya * nix kabuk betiklerine de açık olurdum.

Şu anda çoğunlukla her bir etiket için bir tür tarih istiyorum.


Dell'den "bir sürü bilgi almak" istediğinizde tam olarak ne demek istersiniz?
eleven81

Garanti bitiş tarihi aradığım bir şey olurdu. Gemi tarihi de iyi olurdu.
Evan Anderson

Hızlı bir arama, servis etiketleri için makineleri sorgulamak isteyen birçok kişi verdi, ancak Dell web sitesini sorgulayan kişiler hakkında çok az şey verdi. Spiceworks, hizmet etiketini, hizmet etiketini bir URL bağımsız değişkeni olarak alan bir sürücü indirme sayfasına bağlar. Bu sayfadan "Sistem Yapılandırması" sayfasına gitmek, Spiceworks tarafından sağlanan hizmet etiketini kullanır (artık o noktada URL'de olmamasına rağmen). Görünüşe göre, servis etiketini aktarabileceğiniz bir URL bulamayacaksınız. Yazık. Bu kullanışlı olurdu.
Evan Anderson

Yanıtlar:


19

Her bir etiket için aşağıdaki URL'yi indirin (sonunda SVCTAG yerine asıl hizmet etiketi):

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

İlgilendiğiniz bilgi için elde edilen sayfayı ayrıştırmak okuyucu için bir alıştırma olarak bırakılır :-)


2
sayfa biçimi yakın zamanda değişti ve ayrıştırılması artık daha zor. Xserv.dell.com/services/assetservice.asmx?WSDL adresinde bir api var gibi görünüyor . Sorgulamak için hızlı komut dosyası: gist.github.com/1893036
Daniel

@ Bu web hizmeti ve örnek komut dosyası, en iyi çözüm IMO'dur ve muhtemelen iyi bilinmemektedir. Doğru bir cevap olarak tekrar göndermelisiniz, + 1'leyeceğim!
Patrick

3

Sisteminizi dell destek sitesine " Sistemlerim " bölümünde ekleyin . 100'e kadar sistemi işleyebilirsiniz.

Elbette Dell sitesinde bir hesabınız olması gerekir.

Ne yazık ki, otomatik olarak giriş yapmak, listeyi almak ve sonuçları ayrıştırmak için curl, snoopy veya aşina olduğunuz her şeyi kullanabilseniz bile, işi yapmak için bir toplu iş sistemi bilmiyorum.


3

Bu eski bir yazı olduğunu biliyorum, ama bu konuda iyi bir saat geçirdim ve bu koştu başka kimseye yardımcı olacağını düşündüm. Dell'in yeni sitesi tamamen javascript ve servis etiketi verilerini sorgulamak için ona nasıl kodlanacağını anlayamadım. Bir süre sonra onun yerine mobil site kullanmayı düşündüm (mobile = no javascript) ve bu benim için her servis etiketi veri aşağı çekmek için perl / LWP kullanarak çalıştı. Ben perl hacker'ım, bu yüzden başka biri bunu biraz daha temiz yazabilir. Aşağıdaki orijinal sistem yapılandırmasını çeker. Buradaki fikir, 'get' URL'sinin hizmet etiketli bir çerezi ve ikinci URL get'inin hizmet etiketi hakkında istediğiniz verileri çekmesidir. Ardından, aradığınız veriler için ikinci alma işleminin "$ yanıtını" ayrıştırabilirsiniz.

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

Servis Etiketi genellikle seri numarası ile benzerdir.

WMI Win32_BaseBoard.SerialNumber sınıfı bu bilgileri içerir. Google "wmi seri numarası" ile bu verileri elde etmek için çeşitli örnek çözümler bulacaksınız. İş istasyonu ana bilgisayar adları olarak seri numarasını ve diğer tercih edilen karakterleri kullanarak kutuyu adlandırmak için derleme sırasında bir komut dosyası kullanırız, bu da çok sayıda istemcide sorun gidermeyi çok daha kolay hale getirir.


2
Bence Kyle zaten servis etiketlerine sahip. Servis etiketleri - garanti bitiş tarihleri, nakliye tarihleri, vb. Hakkında bilgi almak için Dell'in web sitesini sorgular.
Evan Anderson

Duh, ben bir aptalım!
duffbeer703

2

Dell'in artık servis etiketlerinizi kaydetme seçeneği var. Onlarla bir giriş oluşturmanız gerekiyor ve hepsi bu. Ayrıca hangi sunucu garantilerinin süresinin dolduğunu gösterir ve bu sunucudan dışa aktarabilirsiniz.


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

Bu oldukça eski bir iş parçacığı olduğunu biliyorum (sadece daha yeni bir tane bağlı olduğu için buldum), ama belki bu nagios eklentisini kullanabilirsiniz: 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

Komut dosyası, standart yerel ana bilgisayarı sorgular ve dmidecode'u dener. SNMP kullanarak uzak bir ana bilgisayarda da çalıştırabilir veya NRPE'den çalıştırabilirsiniz. Oldukça kullanışlı.


-1
dmidecode -s system-serial-number

servis etiketini döndürecek

ssh'yi bir grup halinde tüm sistemlerinizde uzaktan çalıştırmak için kullanabilirsiniz. elbette Linux çalıştırdıklarını varsayarsak


2
Sanırım yanlış anlıyorsun. Kyle zaten servis etiketlerine sahip. Servis etiketleri hakkında bilgi almak için Dell'in web sitesini sorgulamak istiyor.
Evan Anderson

Evan ne olduğum hakkında haklı ...
Kyle Brandt

ah, ben düzeltilmiş durmak o zaman :)
dyasny

Ben olsun 'dmidecode' is not recognized as an internal or external command, operable program or batch file.benim dell laptop.
starbeamrainbowlabs

o zaman dmidecode
dyasny


-1

Not: Bu, bu cevabın gönderisi olarak düzenlenmiştir

Dell son zamanlarda web sitelerini değiştirdi.

Bu değişikliğe izin vermek için yukarıdaki Perl betiğini güncelledim.

Sadece her makinenin sevkiyat tarihlerini bir metin dosyasına dökmekle ilgileniyordum, bu yüzden sadece ayrıştırdık, ancak kodun istediğiniz veriyi almak için kolayca değiştirilebileceğinden eminim.

===

#!/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
Orijinal cevapta bir düzenleme olmalı.
Deer Hunter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.