Назад | Перейти на главную страницу

Пакетный запрос сервисных тегов 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 в раздел "мои системы". Вы можете обрабатывать до 100 систем.

Конечно, у вас должна быть учетная запись на сайте Dell.

К сожалению, я не знаю о пакетной системе для выполнения этой работы, даже если вы, конечно, можете использовать curl, snoopy или что-то еще, с чем вы знакомы, чтобы автоматически выполнить вход в систему, получить список и проанализировать результаты.

Я знаю, что это старый пост, но я потратил на это приличное количество часов и подумал, что помогу любому, кто столкнется с этим. Новый сайт Dell полностью основан на javascript, и я не мог понять, как кодировать его для запроса данных сервисных тегов. Через некоторое время я подумал о том, чтобы использовать вместо этого их мобильный сайт (mobile = no javascript), и это сработало для меня с использованием perl / LWP для получения данных по каждому тегу службы. Я хакер Perl, так что кто-то другой может написать это немного более чисто. Ниже приводится исходная конфигурация системы. Идея состоит в том, что первый URL-адрес "get" извлекает файл cookie с тегом службы, а второй URL-адрес извлекает данные, которые вы хотите получить о теге службы. Затем вы можете проанализировать "$ answer" второго get для данных, которые вы ищете.

#!/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. Погуглите "серийный номер 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: обмен нагиос

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

Скрипт запрашивает стандартный localhost, пробуя dmidecode. Вы также можете запустить его на удаленном хосте, используя SNMP, или вы можете запустить его из NRPE. Очень удобно.

dmidecode -s system-serial-number

вернет сервисный тег

вы можете использовать ssh для удаленного запуска его на всех ваших системах в пакетном режиме. при условии, что все они работают под Linux, конечно

у меня есть скрипт auto-it, который создает CSV-файл из списка сервисных тегов путем опроса на сайте поддержки Dell.

Вы можете следовать той же логике, чтобы извлечь другую информацию и поместить ее в формат csv.

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

Примечание: это отредактированный репост этот ответ

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 $!;