Batch Query Dell Service Tags


9

ใครรู้วิธีรับข้อมูลมากมายสำหรับรายการแท็กบริการ Dell มีส่วนในเว็บไซต์ของพวกเขาสำหรับเรื่องนี้หรือไม่? ฉันจะเปิดให้ห้องสมุด Perl / Python ใด ๆ หรือสคริปต์เชลล์ * nix

ตอนนี้ฉันต้องการเรียงลำดับวันที่บางส่วนสำหรับแต่ละแท็ก


คุณหมายถึงอะไรเมื่อคุณขอให้ "รับข้อมูลจำนวนมาก" จาก Dell?
eleven81

วันที่สิ้นสุดการรับประกันจะเป็นสิ่งที่ฉันต้องการ วันที่จัดส่งก็จะดีเช่นกัน
Evan Anderson

การค้นหาอย่างรวดเร็วทำให้ฉันมีผู้คนจำนวนมากที่ต้องการสอบถามเครื่องจักรสำหรับบริการแท็ก แต่มีคนน้อยมากที่สืบค้นเว็บไซต์ของ Dell Spiceworks ลิงก์แท็กบริการไปยังหน้าดาวน์โหลดไดรเวอร์ซึ่งใช้แท็กบริการเป็นอาร์กิวเมนต์ URL ในการนำทางจากหน้านั้นไปยังหน้า "การกำหนดค่าระบบ" ใช้แท็กบริการที่จัดทำโดย Spiceworks (แม้ว่าจะไม่อยู่ใน URL ในจุดนั้น) ดูเหมือนว่าคุณไม่เพียง แต่จะค้นหา URL ที่คุณสามารถส่งผ่านแท็กบริการซึ่งจะส่งคืน HTML บางส่วนที่คุณสามารถคัดกรองหน้าจอได้ น่าเสียดายเช่นกัน นั่นจะเป็นประโยชน์
Evan Anderson

คำตอบ:


19

ดาวน์โหลด URL ต่อไปนี้ (แทนที่ SVCTAG ที่ท้ายด้วยแท็กบริการจริง) สำหรับแต่ละแท็ก:

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

การแยกวิเคราะห์หน้าผลลัพธ์สำหรับข้อมูลที่คุณสนใจนั้นเป็นแบบฝึกหัดสำหรับผู้อ่าน :-)


2
รูปแบบหน้าเปลี่ยนไปเมื่อเร็ว ๆ นี้และตอนนี้ยากที่จะแยกวิเคราะห์ ดูเหมือนจะเป็น API ที่มีอยู่ในxserv.dell.com/services/assetservice.asmx?WSDL สคริปต์ที่รวดเร็วในการสืบค้น: gist.github.com/1893036
Daniel

@Daniel บริการเว็บ & สคริปต์ตัวอย่างนี้เป็นทางออกที่ดีที่สุด IMO และอาจไม่เป็นที่รู้จัก คุณควรโพสต์ใหม่เป็นคำตอบที่เหมาะสมฉันจะ +1 มัน!
Patrick

3

เพิ่มระบบของคุณในไซต์สนับสนุนของ Dell ในส่วน " ระบบของฉัน " คุณสามารถจัดการได้ถึง 100 ระบบ

คุณต้องมีบัญชีไปยังเว็บไซต์ของ Dell แน่นอน

น่าเสียดายที่ฉันไม่รู้เกี่ยวกับระบบแบตช์ที่จะทำงานแม้ว่าคุณสามารถใช้ curl, snoopy หรือสิ่งที่คุณคุ้นเคยเพื่อที่จะเข้าสู่ระบบโดยอัตโนมัติดึงรายการและแยกผลลัพธ์


3

ฉันรู้ว่านี่เป็นโพสต์เก่า แต่ฉันใช้เวลาหลายชั่วโมงในการทำสิ่งนี้และคิดว่าฉันจะช่วยคนอื่นที่วิ่งเข้ามา ไซต์ใหม่ของ Dell เป็นจาวาสคริปต์ทั้งหมดและฉันไม่สามารถหาวิธีการตั้งรหัสเพื่อสอบถามข้อมูลแท็กบริการ หลังจากนั้นบางครั้งฉันก็คิดว่าจะใช้เว็บไซต์มือถือแทน (mobile = no javascript) และนั่นก็ใช้งานได้สำหรับฉันโดยใช้ perl / LWP เพื่อดึงข้อมูลลงในแต่ละแท็กบริการ ฉันเป็นแฮกเกอร์ perl ดังนั้นคนอื่นอาจสามารถเขียนสิ่งนี้ได้อย่างหมดจด ด้านล่างจะดึงการกำหนดค่าระบบดั้งเดิม แนวคิดก็คือ URL แรก 'รับ' จะดึงคุกกี้ที่มีแท็กบริการและ URL ที่สองจะดึงข้อมูลที่คุณต้องการเกี่ยวกับแท็กบริการ จากนั้นคุณสามารถแยกวิเคราะห์ "$ answer" ของข้อมูลที่สองที่คุณได้รับ

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

Service Tag นั้นคล้ายคลึงกับหมายเลขซีเรียล

คลาส WMI Win32_BaseBoard.SerialNumber มีข้อมูลนี้ Google "หมายเลขซีเรียล wmi" และคุณจะพบโซลูชันตัวอย่างมากมายสำหรับการรับข้อมูลนี้ เราใช้สคริปต์ ณ เวลาที่สร้างเพื่อตั้งชื่อกล่องโดยใช้หมายเลขและตัวอักษรที่ผ่านการเตรียมล่วงหน้าเป็นชื่อโฮสต์ของเวิร์กสเตชันของเราซึ่งทำให้การแก้ไขปัญหาง่ายขึ้นกับลูกค้าจำนวนมาก


2
ฉันคิดว่า Kyle มีแท็กบริการอยู่แล้ว เขาต้องการที่จะสอบถามเว็บไซต์ของ Dell จะได้รับข้อมูลเกี่ยวกับการบริการวันที่ tags-- สิ้นสุดการรับประกันการจัดส่งสินค้าวัน ฯลฯ
อีวานเดอร์สัน

Duh ฉันเป็นคนงี่เง่า!
duffbeer703

2

Dell มีตัวเลือกในการบันทึกแท็กบริการของคุณ คุณต้องสร้างการเข้าสู่ระบบด้วยพวกเขาและนั่นคือทั้งหมด นอกจากนี้ยังแสดงให้เห็นว่าเซิร์ฟเวอร์ใดรับประกันหมดอายุและคุณสามารถส่งออกได้


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

ฉันรู้ว่ามันค่อนข้างด้ายเก่า (ฉันเพิ่งพบเพราะมันเชื่อมโยงจากใหม่กว่า) แต่บางทีคุณสามารถใช้ nagios ปลั๊กอินนี้: แลกเปลี่ยน 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

สคริปต์สืบค้นโลคัลโฮสต์มาตรฐานลองใช้ dmidecode คุณสามารถเรียกใช้กับโฮสต์ระยะไกลโดยใช้ SNMP หรือเรียกใช้จาก NRPE ค่อนข้างมีประโยชน์


-1
dmidecode -s system-serial-number

จะส่งคืนแท็กบริการ

คุณสามารถใช้ ssh เพื่อเรียกใช้จากระยะไกลบนระบบทั้งหมดของคุณในชุด สมมติว่าพวกเขาใช้ Linux ทั้งหมดแน่นอน


2
ฉันคิดว่าคุณเข้าใจผิด Kyle มีแท็กบริการอยู่แล้ว เขาต้องการสืบค้นเว็บไซต์ของ Dell เพื่อรับข้อมูลเกี่ยวกับแท็กบริการ
Evan Anderson

อีวานที่ถูกต้องเกี่ยวกับสิ่งที่ผมหลังจากที่ ...
ไคล์ Brandt

โอ้ฉันยืนแก้ไขแล้ว :)
dyasny

ฉันใช้'dmidecode' is not recognized as an internal or external command, operable program or batch file.แล็ปท็อป dell ของฉัน
starbeamrainbowlabs

จากนั้นคุณจะต้องติดตั้ง dmidecode
dyasny

-1

-1

หมายเหตุ: นี่คือ repost แก้ไขของคำตอบนี้

Dell ได้เปลี่ยนเว็บไซต์เมื่อเร็ว ๆ นี้

ฉันได้อัปเดตสคริปต์ Perl ด้านบนเพื่ออนุญาตการเปลี่ยนแปลงนี้

ฉันสนใจที่จะทิ้งวันที่จัดส่งของแต่ละเครื่องไปยังไฟล์ข้อความเท่านั้นจึงจะทำการแยกวิเคราะห์ แต่ฉันมั่นใจว่ารหัสสามารถแก้ไขได้อย่างง่ายดายเพื่อดึงข้อมูลใด ๆ ที่คุณต้องการ

===

#!/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
ควรจะแก้ไขคำตอบเดิม
Deer Hunter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.