배치 쿼리 Dell 서비스 태그


9

누구나 서비스 태그 목록에 대한 많은 정보를 얻을 수있는 방법을 알고 있다면 Dell 사이트에 해당 섹션이 있습니까? 또한 모든 Perl / Python 라이브러리 또는 * nix 쉘 스크립트를 사용할 수 있습니다.

지금은 주로 각 태그에 대해 일종의 날짜를 원합니다.


Dell에서 "다량의 정보를 얻도록"요청할 때 정확히 무엇을 의미합니까?
11시

보증 종료일은 내가 찾던 것입니다. 배송 날짜도 좋을 것입니다.
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
최근에 페이지 형식이 변경되어 구문 분석하기가 더 어렵습니다. xserv.dell.com/services/assetservice.asmx?WSDL에 API가있는 것 같습니다 . 그것을 쿼리하는 빠른 스크립트 : gist.github.com/1893036
Daniel

@Daniel이 웹 서비스 및 예제 스크립트는 최고의 솔루션 IMO이며 아마도 잘 알려져 있지 않습니다. 정답으로 다시 게시해야합니다. +1하겠습니다.
Patrick

3

Dell 지원 사이트의 " my Systems " 섹션에 시스템을 추가하십시오 . 최대 100 개의 시스템을 처리 할 수 ​​있습니다.

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

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


3

나는 이것이 오래된 게시물이라는 것을 알고 있지만, 이것에 대해 상당한 시간을 보냈고 이것에 부딪친 다른 사람을 도울 것이라고 생각했습니다. 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";
}

2

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

WMI Win32_BaseBoard.SerialNumber 클래스에는이 정보가 포함되어 있습니다. Google "wmi 일련 번호"에는이 데이터를 가져 오는 몇 가지 예제 솔루션이 있습니다. 빌드시 스크립트를 사용하여 일련 번호 및 기타 앞에 붙은 문자를 워크 스테이션 호스트 이름으로 사용하여 상자 이름을 지정하므로 많은 수의 클라이언트에서 문제를 훨씬 쉽게 해결할 수 있습니다.


2
Kyle에게는 이미 서비스 태그가 있다고 생각합니다. 그는 보증 종료 날짜, 배송 날짜 등 서비스 태그에 대한 정보를 얻기 위해 Dell 웹 사이트를 조회하려고합니다.
Evan Anderson

멍청 아!
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 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에서 실행할 수도 있습니다. 아주 편리합니다.


-1
dmidecode -s system-serial-number

서비스 태그를 반환합니다

ssh를 사용하여 모든 시스템에서 원격으로 배치를 실행할 수 있습니다. 그들이 모두 리눅스를 실행하고 있다고 가정


2
당신이 오해하고 있다고 생각합니다. Kyle은 이미 서비스 태그를 가지고 있습니다. 그는 서비스 태그에 대한 정보를 얻기 위해 Dell 웹 사이트를 조회하려고합니다.
Evan Anderson

내가 ... 후에 누구인지 에반에 대한 권리
카일 브랜

오, 나는 그때 수정되었습니다 :)
dyasny

내가 얻을 'dmidecode' is not recognized as an internal or external command, operable program or batch file.내 델 노트북에.
starbeamrainbowlabs

당신은 dmidecode와 설치해야
dyasny


-1

참고 : 답변의 다시 게시 편집

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
원래 답변을 수정해야합니다.
사슴 사냥꾼
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.