배치 쿼리 Dell 서비스 태그 누구나 서비스

누구나 서비스 태그 목록에 대한 많은 정보를 얻을 수있는 방법을 알고 있다면 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 지원 사이트의 ” my Systems ” 섹션에 시스템을 추가하십시오 . 최대 100 개의 시스템을 처리 할 수 ​​있습니다.

물론 Dell 사이트에 계정이 있어야합니다.

불행히도 자동으로 로그인을 수행하고 목록을 검색하고 결과를 구문 분석하기 위해 curl, snoopy 또는 익숙한 것을 사용할 수 있더라도 배치 시스템에 대해 알지 못합니다.


답변

나는 이것이 오래된 게시물이라는 것을 알고 있지만, 이것에 대해 상당한 시간을 보냈고 이것에 부딪친 다른 사람을 도울 것이라고 생각했습니다. Dell의 새로운 사이트는 모두 자바 스크립트이며 서비스 태그 데이터를 쿼리하기 위해 코드를 작성하는 방법을 알 수 없었습니다. 언젠가 나는 대신 모바일 사이트 (mobile = no javascript)를 사용하려고 생각했고 perl / LWP를 사용하여 각 서비스 태그에서 데이터를 가져 왔습니다. 저는 펄 해커이므로 다른 사람이 좀 더 깔끔하게 작성할 수 있습니다. 아래는 원래 시스템 구성을 가져옵니다. 첫 번째 URL ‘get’은 서비스 태그가있는 쿠키를 가져오고 두 번째 URL get은 서비스 태그에 대해 원하는 데이터를 가져옵니다. 그런 다음 원하는 데이터에 대한 두 번째 가져 오기의 “$ 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";
}

답변

서비스 태그는 일반적으로 일련 번호와 유사합니다.

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 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

이 스크립트는 표준 로컬 호스트를 쿼리하여 dmidecode를 시도합니다. SNMP를 사용하여 원격 호스트에 대해 실행하거나 NRPE에서 실행할 수도 있습니다. 아주 편리합니다.