ใครรู้วิธีรับข้อมูลมากมายสำหรับรายการแท็กบริการ Dell มีส่วนในเว็บไซต์ของพวกเขาสำหรับเรื่องนี้หรือไม่? ฉันจะเปิดให้ห้องสมุด Perl / Python ใด ๆ หรือสคริปต์เชลล์ * nix
ตอนนี้ฉันต้องการเรียงลำดับวันที่บางส่วนสำหรับแต่ละแท็ก
ใครรู้วิธีรับข้อมูลมากมายสำหรับรายการแท็กบริการ Dell มีส่วนในเว็บไซต์ของพวกเขาสำหรับเรื่องนี้หรือไม่? ฉันจะเปิดให้ห้องสมุด Perl / Python ใด ๆ หรือสคริปต์เชลล์ * nix
ตอนนี้ฉันต้องการเรียงลำดับวันที่บางส่วนสำหรับแต่ละแท็ก
คำตอบ:
ดาวน์โหลด URL ต่อไปนี้ (แทนที่ SVCTAG ที่ท้ายด้วยแท็กบริการจริง) สำหรับแต่ละแท็ก:
http://support.dell.com/support/topics/global.aspx/support/my_systems_info/details?c=us&l=en&s=gen&ServiceTag=SVCTAG
การแยกวิเคราะห์หน้าผลลัพธ์สำหรับข้อมูลที่คุณสนใจนั้นเป็นแบบฝึกหัดสำหรับผู้อ่าน :-)
เพิ่มระบบของคุณในไซต์สนับสนุนของ Dell ในส่วน " ระบบของฉัน " คุณสามารถจัดการได้ถึง 100 ระบบ
คุณต้องมีบัญชีไปยังเว็บไซต์ของ Dell แน่นอน
น่าเสียดายที่ฉันไม่รู้เกี่ยวกับระบบแบตช์ที่จะทำงานแม้ว่าคุณสามารถใช้ curl, snoopy หรือสิ่งที่คุณคุ้นเคยเพื่อที่จะเข้าสู่ระบบโดยอัตโนมัติดึงรายการและแยกผลลัพธ์
ฉันรู้ว่านี่เป็นโพสต์เก่า แต่ฉันใช้เวลาหลายชั่วโมงในการทำสิ่งนี้และคิดว่าฉันจะช่วยคนอื่นที่วิ่งเข้ามา ไซต์ใหม่ของ 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";
}
Service Tag นั้นคล้ายคลึงกับหมายเลขซีเรียล
คลาส WMI Win32_BaseBoard.SerialNumber มีข้อมูลนี้ Google "หมายเลขซีเรียล wmi" และคุณจะพบโซลูชันตัวอย่างมากมายสำหรับการรับข้อมูลนี้ เราใช้สคริปต์ ณ เวลาที่สร้างเพื่อตั้งชื่อกล่องโดยใช้หมายเลขและตัวอักษรที่ผ่านการเตรียมล่วงหน้าเป็นชื่อโฮสต์ของเวิร์กสเตชันของเราซึ่งทำให้การแก้ไขปัญหาง่ายขึ้นกับลูกค้าจำนวนมาก
Dell มีตัวเลือกในการบันทึกแท็กบริการของคุณ คุณต้องสร้างการเข้าสู่ระบบด้วยพวกเขาและนั่นคือทั้งหมด นอกจากนี้ยังแสดงให้เห็นว่าเซิร์ฟเวอร์ใดรับประกันหมดอายุและคุณสามารถส่งออกได้
#!/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
ฉันรู้ว่ามันค่อนข้างด้ายเก่า (ฉันเพิ่งพบเพราะมันเชื่อมโยงจากใหม่กว่า) แต่บางทีคุณสามารถใช้ 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 ค่อนข้างมีประโยชน์
dmidecode -s system-serial-number
จะส่งคืนแท็กบริการ
คุณสามารถใช้ ssh เพื่อเรียกใช้จากระยะไกลบนระบบทั้งหมดของคุณในชุด สมมติว่าพวกเขาใช้ Linux ทั้งหมดแน่นอน
'dmidecode' is not recognized as an internal or external command, operable program or batch file.
แล็ปท็อป dell ของฉัน
ฉันมี สคริปต์ auto-it ที่สร้างไฟล์ csv จากรายการแท็กบริการโดยสำรวจเว็บไซต์สนับสนุนของ Dell
คุณสามารถทำตามตรรกะเดียวกันเพื่อดึงข้อมูลอื่น ๆ และนำไปไว้ในรูปแบบ csv
http://fei-automation.blogspot.hk/2014/09/how-to-check-model-for-list-of-dell-pc.html
หมายเหตุ: นี่คือ 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 $!;