Tanda Batch Permintaan Layanan Dell

9

Adakah yang tahu cara untuk mendapatkan banyak informasi untuk daftar tag layanan, apakah Dell memiliki bagian di situs mereka untuk ini? Saya juga akan terbuka untuk perpustakaan Perl / Python atau skrip * nix shell.

Saat ini saya lebih menginginkan semacam tanggal untuk setiap tag.

Kyle Brandt
sumber
Apa, tepatnya, maksud Anda ketika Anda meminta untuk "mendapatkan banyak informasi" dari Dell?
sebelas81
Tanggal akhir garansi akan menjadi sesuatu yang saya cari. Tanggal pengiriman juga bagus.
Evan Anderson
Pencarian cepat memberi saya banyak orang yang ingin menanyakan mesin untuk tag layanan, tetapi sangat sedikit tentang orang yang menanyakan situs web Dell. Spiceworks menautkan tag layanan ke halaman unduhan driver yang menjadikan tag layanan sebagai argumen URL. Menavigasi dari halaman itu ke halaman "Konfigurasi Sistem", pada gilirannya, menggunakan tag layanan yang disediakan oleh Spiceworks (meskipun tidak lagi ada di URL pada saat itu). Sepertinya Anda tidak hanya akan menemukan URL yang dapat Anda berikan tag layanannya yang akan mengembalikan beberapa HTML yang dapat di-screen scrape. Sayang sekali juga. Itu akan berguna.
Evan Anderson

Jawaban:

19

Unduh URL berikut (ganti SVCTAG di akhir dengan tag layanan aktual) untuk setiap tag:

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

Mengurai halaman yang dihasilkan untuk info yang Anda minati dibiarkan sebagai latihan untuk pembaca :-)

Daniel
sumber
2
format halaman baru-baru ini berubah dan sekarang lebih sulit untuk diuraikan. Tampaknya ada api yang tersedia di xserv.dell.com/services/assetservice.asmx?WSDL . Skrip cepat untuk menanyakannya: gist.github.com/1893036
Daniel
@Daniel script layanan web & contoh ini adalah solusi IMO terbaik, dan mungkin tidak dikenal. Anda harus memposting ulang sebagai jawaban yang tepat, saya akan memberi +1 pada itu!
Patrick
3

Tambahkan sistem Anda di situs dukungan dell, di bagian " Sistem saya ". Anda dapat menangani hingga 100 sistem.

Anda harus memiliki akun di situs Dell, tentu saja.

Sayangnya saya tidak tahu tentang sistem batch untuk melakukan pekerjaan itu, bahkan jika Anda tentu saja dapat menggunakan curl, snoopy atau apa pun yang Anda kenal untuk secara otomatis melakukan login, mengambil daftar dan menguraikan hasilnya.

drAlberT
sumber
3

Saya tahu ini adalah posting lama, tetapi saya telah menghabiskan banyak waktu untuk hal ini dan berpikir saya akan membantu orang lain yang mengalami hal ini. Situs baru Dell adalah semua javascript dan saya tidak tahu bagaimana cara mengatasinya untuk meminta data tag layanan. Setelah beberapa waktu saya berpikir untuk menggunakan situs mobile mereka sebagai gantinya (mobile = no javascript) dan itu berhasil bagi saya menggunakan perl / LWP untuk menarik data ke bawah pada setiap tag layanan. Saya peretas perl, jadi orang lain mungkin bisa menulis ini sedikit lebih bersih. Di bawah ini menarik konfigurasi sistem asli. Idenya adalah bahwa URL pertama 'dapatkan' menarik cookie dengan tag layanan dan URL kedua mendapatkan menarik data yang Anda inginkan tentang tag layanan. Anda kemudian dapat menguraikan "$ answer" dari get kedua untuk data yang Anda cari.

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

Tag Servis umumnya analog dengan nomor seri.

Kelas WMI Win32_BaseBoard.SerialNumber berisi informasi ini. Google "nomor seri wmi" dan Anda akan menemukan beberapa contoh solusi untuk mendapatkan data ini. Kami menggunakan skrip saat membangun untuk memberi nama kotak menggunakan nomor seri dan karakter lain yang didukung sebagai nama host workstation kami, yang membuat pemecahan masalah jauh lebih mudah dengan sejumlah besar klien.

duffbeer703
sumber
2
Saya pikir Kyle sudah memiliki tag layanan. Dia ingin untuk query situs web Dell untuk mendapatkan informasi tentang tags-- tanggal garansi berakhir layanan, pengiriman tanggal, dll
Evan Anderson
Duh, aku idiot!
duffbeer703
2

Dell sekarang memiliki opsi untuk menyimpan tag layanan Anda. Anda harus membuat login dengan mereka dan itu saja. Ini juga menunjukkan jaminan server mana yang kedaluwarsa dan Anda dapat mengekspornya.

Alan John
sumber
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
pengguna22789
sumber
1

Saya tahu ini adalah utas yang cukup lama (saya hanya menemukannya karena ditautkan dari yang lebih baru), tetapi mungkin Anda dapat menggunakan plugin nagios ini: 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

Script menanyakan localhost standar, mencoba dmidecode. Anda juga dapat menjalankannya terhadap host jarak jauh menggunakan SNMP atau Anda bisa menjalankannya dari NRPE. Cukup praktis.

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

akan mengembalikan tag layanan

Anda dapat menggunakan ssh untuk menjalankannya dari jauh pada semua sistem Anda dalam satu batch. dengan asumsi mereka semua menjalankan Linux tentu saja

dyasny
sumber
2
Saya pikir Anda salah paham. Kyle sudah memiliki tag layanan. Dia ingin menanyakan situs web Dell untuk mendapatkan informasi tentang tag layanan.
Evan Anderson
Evan benar tentang apa yang saya cari ...
Kyle Brandt
oh, aku berdiri dikoreksi kemudian :)
dyasny
Saya mendapatkan 'dmidecode' is not recognized as an internal or external command, operable program or batch file.laptop Dell saya.
starbeamrainbowlabs
maka Anda perlu menginstal dmidecode
dyasny
-1

Catatan: Ini adalah repost yang diedit dari jawaban ini

Dell telah mengubah situs web mereka baru-baru ini.

Saya telah memperbarui skrip Perl di atas untuk memungkinkan perubahan ini.

Saya hanya tertarik untuk membuang tanggal pengiriman masing-masing mesin ke file teks sehingga hanya menguraikannya tetapi saya yakin kode tersebut dapat dengan mudah dimodifikasi untuk mengambil data apa pun yang Anda inginkan.

===

#!/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
sumber
2
Seharusnya mengedit jawaban yang asli.
Pemburu Rusa