बैच क्वेरी डेल सेवा टैग


9

किसी को भी सेवा टैग की सूची के लिए जानकारी का एक गुच्छा पाने का एक तरीका पता है, क्या डेल के पास इसके लिए अपनी साइट पर एक अनुभाग है? मैं किसी भी पर्ल / पायथन लाइब्रेरी या * निक्स शेल स्क्रिप्ट के लिए भी खुला रहूंगा।

अभी मैं ज्यादातर प्रत्येक टैग के लिए किसी प्रकार की तारीख चाहता हूं।


क्या, वास्तव में, क्या मतलब है जब आप डेल से "जानकारी का एक गुच्छा" प्राप्त करने के लिए कहते हैं?
ग्यारह ग्यारह

वारंटी समाप्ति की तारीख कुछ ऐसी होगी जो मैं देखूंगा। जहाज की तारीख भी अच्छी होगी।
इवान एंडरसन

एक त्वरित खोज ने मुझे बहुत से ऐसे लोग दिए जो सेवा टैग के लिए मशीनों की क्वेरी करना चाहते हैं, लेकिन डेल वेब साइट पर क्वेरी करने वाले लोगों के बारे में बहुत कम। स्पिकवर्क सेवा टैग को ड्राइवर डाउनलोड पृष्ठ से जोड़ता है जो URL तर्क के रूप में सेवा टैग लेता है। उस पृष्ठ से "सिस्टम कॉन्फ़िगरेशन" पृष्ठ पर नेविगेट करना, बदले में, स्पिकवर्क द्वारा आपूर्ति की गई सेवा टैग का उपयोग करता है (हालांकि यह उस समय URL में नहीं है)। ऐसा लगता है कि आप बस एक ऐसा URL नहीं ढूंढने जा रहे हैं जिसमें आप सर्विस टैग को पास कर सकते हैं जिसमें कुछ HTML वापस आएंगे जिन्हें आप स्क्रीन-स्क्रैप कर सकते हैं। एक दया भी। वह आसान होगा।
इवान एंडरसन

जवाबों:


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
पृष्ठ प्रारूप हाल ही में बदल गया है और अब इसे पार्स करना अधिक कठिन है। ऐसा लगता है कि xserv.dell.com/services/assetservice.asmx?WSDL पर एक एपीआई उपलब्ध है । क्विक स्क्रिप्ट इसे क्वेरी करने के लिए: gist.github.com/1893036
डैनियल

@ इस वेब सेवा और उदाहरण स्क्रिप्ट का सबसे अच्छा समाधान IMO है, और शायद अच्छी तरह से ज्ञात नहीं है। आपको इसे एक उचित उत्तर के रूप में देना चाहिए, मैं इसे +1 करूँगा!
पैट्रिक

3

अपने सिस्टम को " मेरा सिस्टम " अनुभाग में डेल समर्थन साइट में जोड़ें । आप 100 सिस्टम तक संभाल सकते हैं।

आपके पास डेल साइट के लिए एक खाता होना चाहिए।

दुर्भाग्य से मुझे काम करने के लिए एक बैच सिस्टम के बारे में नहीं पता है, भले ही आप कर्ल, स्नोपॉपी या जो कुछ भी आप परिचित हैं, उसका उपयोग स्वचालित रूप से लॉगिन करने के लिए कर सकते हैं, सूची को पुनः प्राप्त करें और परिणामों को पार्स करें।


3

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मैंने इस पर एक अच्छी संख्या में घंटे बिताए हैं और मुझे लगा कि मैं किसी और की मदद करूंगा जो इसमें भाग गया। डेल की नई साइट सभी जावास्क्रिप्ट है और मैं यह पता नहीं लगा सका कि सेवा टैग डेटा को क्वेरी करने के लिए इसके खिलाफ कैसे कोड किया जाए। कुछ समय बाद मैंने उनके बजाय अपनी मोबाइल साइट (मोबाइल = कोई जावास्क्रिप्ट) का उपयोग करने के बारे में सोचा और मेरे लिए प्रत्येक सेवा टैग पर डेटा खींचने के लिए पर्ल / एलडब्ल्यूपी का उपयोग करने के लिए काम किया। मैं एक पर्ल हैकर हूं, इसलिए हो सकता है कि कोई और इसे थोड़ा और सफाई से लिख सके। नीचे मूल सिस्टम कॉन्फ़िगरेशन को खींचता है। विचार यह है कि पहला URL 'get' सर्विस टैग के साथ कुकी खींचता है और दूसरा URL आपको सेवा टैग के बारे में इच्छित डेटा खींचता है। फिर आप उस दूसरे डेटा के "$ जवाब" को पार्स कर सकते हैं जिसे आप ढूंढ रहे हैं।

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

सर्विस टैग आमतौर पर सीरियल नंबर के अनुरूप होता है।

WMI Win32_BaseBoard.SerialNumber वर्ग में यह जानकारी है। Google "wmi सीरियल नंबर" और आपको इस डेटा को प्राप्त करने के लिए कई उदाहरण समाधान मिलेंगे। हम अपने कार्य केंद्र होस्टनाम के रूप में सीरियल नंबर और अन्य पूर्वनिर्धारित पात्रों का उपयोग करके बॉक्स का नाम देने के लिए बिल्ड समय पर एक स्क्रिप्ट का उपयोग करते हैं, जो बड़ी संख्या में ग्राहकों के साथ समस्या निवारण को आसान बनाता है।


2
मुझे लगता है कि काइल के पास पहले से ही सर्विस टैग हैं। वह डेल के वेब साइट को सेवा टैग के बारे में जानकारी प्राप्त करना चाहता है- वारंटी की अंतिम तिथि, शिपिंग की तारीख, आदि
इवान एंडरसन

दुआ, मैं एक बेवकूफ हूँ!
duffbeer703

2

अब डेल के पास आपकी सेवा टैग को बचाने का एक विकल्प है। आपको उनके साथ एक लॉगिन बनाने की आवश्यकता है और वह सब है। यह यह भी दर्शाता है कि कौन से सर्वर वारंटी समाप्त हो रहे हैं और आप इससे निर्यात कर सकते हैं।


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 का उपयोग दूरस्थ रूप से बैच में अपने सभी सिस्टम पर चलाने के लिए कर सकते हैं। यह मानते हुए कि वे सभी निश्चित रूप से लिनक्स चल रहे हैं


2
मुझे लगता है कि आप गलत समझ रहे हैं। काइल के पास पहले से ही सर्विस टैग हैं। वह सेवा टैग के बारे में जानकारी प्राप्त करने के लिए डेल की वेब साइट को क्वेरी करना चाहता है।
इवान एंडरसन

इवान मैं क्या कर रहा हूँ के बारे में सही है ...
काइल ब्रांट

ओह, मैं तो सही खड़ा हूं :)
dyasny

मैं 'dmidecode' is not recognized as an internal or external command, operable program or batch file.अपने डेल लैपटॉप पर मिलता हूं।
स्टारबिम्रेनबोलाब्स

फिर आपको dmidecode
dyasny

-1

मेरे पास एक ऑटो-इट स्क्रिप्ट है जो डेल सपोर्ट वेबसाइट पर जाकर सर्विस टैग की सूची से सीएसवी फाइल बनाता है।

आप अन्य जानकारी निकालने और csv प्रारूप में डालने के लिए उसी तर्क का अनुसरण कर सकते हैं

http://fei-automation.blogspot.hk/2014/09/how-to-check-model-for-list-of-dell-pc.html


-1

नोट: यह इस उत्तर की पुनर्स्थापना है

डेल ने हाल ही में अपनी वेबसाइट बदल दी है।

मैंने इस परिवर्तन की अनुमति देने के लिए उपरोक्त पर्ल स्क्रिप्ट को अपडेट किया है।

मुझे केवल प्रत्येक मशीन की शिपिंग तिथियों को एक पाठ फ़ाइल में डंप करने में दिलचस्पी थी, इसलिए केवल इसे छोड़ दिया गया था, लेकिन मुझे यकीन है कि जो भी डेटा आप चाहते हैं उसे हड़पने के लिए कोड को आसानी से संशोधित किया जा सकता है।

===

#!/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
मूल उत्तर का संपादन होना चाहिए।
हिरण हंटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.